From b16821e92eb3e7e8117971a78d8bd674e8ae9b4f Mon Sep 17 00:00:00 2001 From: phenom Date: Fri, 2 Oct 2026 10:38:12 -0400 Subject: [PATCH] Update Healer Man server --- .holy-candle-inspect.ts | 3 + PLAYTEST_NOTES.md | 14 + docs/ACTIVE_CLASS_AUDIT.md | 117 +- docs/ACTIVE_CLASS_MECHANICS_BACKLOG.md | 179 +- docs/ROM_DRUID_MAGE_GREEN_GUARDIAN.md | 34 + docs/ROM_DRUID_MAGE_INSPIRATION.md | 32 + docs/ROM_DRUID_ROGUE_NECROTIC_WOUND.md | 27 + ...AGE_WARDEN_FLAME_FOLLOWER_SOURCE_REVIEW.md | 37 + docs/ROM_PRIEST_HOLY_CANDLE.md | 31 + docs/ROM_PRIEST_SCOUT_CURING_SHOT.md | 54 + docs/ROM_PRIEST_SCOUT_SAINTS_BLESSING.md | 49 + docs/ROM_ROGUE_MAGE_CHAOS_DAGGER.md | 38 + docs/ROM_ROGUE_POISONOUS_HANDS.md | 34 + docs/ROM_SCOUT_PRIEST_DRUMS_OF_WAR.md | 35 + docs/ROM_SCOUT_PRIEST_SCREEN_ATTACK.md | 26 + docs/ROM_WARDEN_MAGE_TOUGH_OAK.md | 43 + docs/ROM_WARLOCK_MAGE_SOUL_BRAND.md | 21 + docs/ROM_WARLOCK_MAGE_SOUL_BRAND_STING.md | 23 + docs/ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT.md | 35 + docs/ROM_WARLOCK_PRIEST_SPREADING_PAIN.md | 20 + docs/ROM_WARLOCK_WARRIOR_PSYCHIC_WARRIOR.md | 52 + docs/WOW_DEATH_KNIGHT_BLOOD_GORGED.md | 52 + docs/WOW_DEATH_KNIGHT_MERCILESS_COMBAT.md | 19 + docs/WOW_DEATH_KNIGHT_SPELL_DEFLECTION.md | 31 + docs/WOW_HUNTER_BESTIAL_DISCIPLINE.md | 36 + docs/WOW_HUNTER_PET_DEFENSE_INHERITANCE.md | 83 + docs/WOW_HUNTER_PET_HAPPINESS.md | 36 + docs/WOW_MAGE_NETHERWIND_PRESENCE.md | 50 + docs/WOW_SHAMAN_FLURRY.md | 30 + docs/WOW_SHAMAN_REMAINING_TALENT_AUDIT.md | 41 + scripts/generate-wow335-abilities.mjs | 30 +- scripts/generate-wow335-talents.mjs | 4 +- scripts/playtest-graphics-options.cjs | 102 + .../export-player-catalog.mjs | 54 +- .../runewaker-player-skill-audit.json | 4 +- src/GameRuntime.tsx | 2 + src/game/OnlineSessionBridge.test.ts | 47 +- src/game/OnlineSessionBridge.tsx | 20 +- src/game/abilityCatalog.ts | 80 +- src/game/combatActors.ts | 10 + src/game/combatChannelAmounts.test.ts | 18 + src/game/combatChannelAmounts.ts | 10 + src/game/combatDamageProfile.ts | 23 + src/game/combatPresentation.ts | 6 + src/game/combatResources.ts | 38 +- src/game/combatRotation.ts | 62 +- src/game/combatStore.test.ts | 306 +- src/game/combatStore.ts | 5122 +++++++++++++++-- src/game/deathKnightSourceRuntime.test.ts | 12 + src/game/floatingCombatText.test.ts | 153 + src/game/floatingCombatText.ts | 211 + src/game/graphicsSettings.test.ts | 31 + src/game/graphicsSettings.ts | 47 + src/game/mageBlinkRuntime.test.ts | 83 +- src/game/partyAbilityAi.test.ts | 124 +- src/game/partyAbilityAi.ts | 242 +- src/game/partyRuntime.test.ts | 570 +- src/game/partyRuntime.ts | 2267 +++++++- src/game/partyStore.ts | 7 + src/game/romAbilityCatalog.ts | 544 +- src/game/romChampionRuneOverloadChild.test.ts | 66 + src/game/romCombatMechanics.test.ts | 51 +- src/game/romCombatMechanics.ts | 45 +- src/game/romCombatRuntime.test.ts | 4 +- src/game/romCreatureFamilies.test.ts | 31 +- src/game/romDruidCurrentCoaMechanics.test.ts | 75 + src/game/romDruidCurrentCoaMechanics.ts | 100 + src/game/romDruidMageCoaCatalog.test.ts | 88 + ...omDruidMageInspiration.integration.test.ts | 188 + .../romDruidMageInspirationRuntime.test.ts | 77 + src/game/romDruidMageInspirationRuntime.ts | 125 + src/game/romDruidNaturePower.test.ts | 19 +- src/game/romDruidOverrides.ts | 72 +- src/game/romDruidRogueCurrentCoa.test.ts | 138 + src/game/romDruidRogueCurrentCoa.ts | 61 + ...idRogueSinisterRequest.integration.test.ts | 194 + src/game/romDruidRogueSinisterRequest.test.ts | 32 + src/game/romDruidRuntime.test.ts | 139 +- .../romKnightFearless.integration.test.ts | 96 + .../romKnightGodsSwordCoaMechanics.test.ts | 66 + src/game/romKnightGodsSwordCoaMechanics.ts | 49 + ...KnightGodsSwordRuntime.integration.test.ts | 202 + src/game/romKnightOverrides.test.ts | 53 +- src/game/romKnightOverrides.ts | 310 +- src/game/romKnightPeriodicRuntime.test.ts | 65 +- .../romKnightWhirlwind.integration.test.ts | 119 +- src/game/romLeopardInstinctOverrides.test.ts | 74 + src/game/romLeopardInstinctOverrides.ts | 74 + ...MageDruidGreenGuardian.integration.test.ts | 108 + ...uidGreenGuardian.party.integration.test.ts | 94 + .../romMageDruidGreenGuardianRuntime.test.ts | 74 + src/game/romMageDruidGreenGuardianRuntime.ts | 110 + src/game/romMageFireWard.catalog.test.ts | 61 + src/game/romMageFireWard.integration.test.ts | 104 + src/game/romMageMechanics.test.ts | 8 +- src/game/romMageOverrides.ts | 27 + src/game/romMageWarlockOverrides.ts | 4 +- src/game/romPlayerCatalog.generated.json | 2 +- src/game/romPlayerCatalog.test.ts | 70 +- ...omPriestChampionBeacon.integration.test.ts | 192 + .../romPriestChampionBeaconRuntime.test.ts | 95 + src/game/romPriestChampionBeaconRuntime.ts | 103 + ...iestChampionHeartRuneEnergyRuntime.test.ts | 168 + src/game/romPriestChampionOverrides.test.ts | 56 + src/game/romPriestChampionOverrides.ts | 58 +- src/game/romPriestChampionRuntime.test.ts | 253 + src/game/romPriestCoaCatalog.test.ts | 157 + .../romPriestHolyBlessing.integration.test.ts | 153 + src/game/romPriestHolyBlessingRuntime.test.ts | 101 + src/game/romPriestHolyBlessingRuntime.ts | 114 + .../romPriestHolyCandle.integration.test.ts | 277 + src/game/romPriestHolyCandle.test.ts | 128 + src/game/romPriestHolyCandleRuntime.ts | 100 + src/game/romPriestHolyVoidRuntime.test.ts | 173 + src/game/romPriestKnightOverrides.ts | 23 + .../romPriestKnightRuntimeEffects.test.ts | 8 +- ...riestMageEnlightenment.integration.test.ts | 62 +- src/game/romPriestMageRuntime.test.ts | 110 +- src/game/romPriestMageRuntime.ts | 124 +- .../romPriestScoutCuringShot.catalog.test.ts | 56 + ...mPriestScoutCuringShot.integration.test.ts | 302 + src/game/romPriestScoutCuringShot.test.ts | 162 + src/game/romPriestScoutCuringShot.ts | 135 + ...utSaintsBlessingDamage.integration.test.ts | 177 + ...romPriestScoutSaintsBlessingDamage.test.ts | 37 + .../romPriestScoutSaintsBlessingDamage.ts | 34 + src/game/romPriestTooltips.test.ts | 33 + src/game/romPriestTooltips.ts | 20 +- src/game/romRogueChaosDagger.test.ts | 72 + src/game/romRogueChaosDagger.ts | 41 + ...omRogueCurrentCoaHands.integration.test.ts | 107 + src/game/romRogueEnergizedHandsRuntime.ts | 103 + src/game/romRogueMechanics.test.ts | 302 +- src/game/romRogueMechanics.ts | 47 + .../romRogueNumbingDagger.integration.test.ts | 161 - src/game/romRogueNumbingDaggerRuntime.test.ts | 33 - src/game/romRogueNumbingDaggerRuntime.ts | 16 - src/game/romRoguePoison.integration.test.ts | 2 +- src/game/romRoguePoisonRuntime.test.ts | 106 +- src/game/romRoguePoisonRuntime.ts | 133 +- ...mScoutPriestDrumsOfWar.integration.test.ts | 144 +- src/game/romScoutPriestOverrides.test.ts | 94 +- src/game/romScoutPriestOverrides.ts | 107 +- ...coutPriestScreenAttack.integration.test.ts | 273 + src/game/romScoutPriestScreenAttack.test.ts | 84 + src/game/romScoutPriestScreenAttack.ts | 86 + src/game/romScoutRogueOverrides.ts | 89 +- src/game/romScoutRoguePairValidation.test.ts | 32 +- src/game/romWardenOverrides.ts | 3 + src/game/romWardenRuntime.test.ts | 112 +- ...mWarlockMageCoaRuntime.integration.test.ts | 281 + src/game/romWarlockMageSoulBrand.test.ts | 61 + src/game/romWarlockMageSoulBrand.ts | 75 + ...mWarlockMageSoulBrandAuraSemantics.test.ts | 68 + ...mWarlockMageSoulBrandSting.catalog.test.ts | 46 + src/game/romWarlockMageSoulBrandSting.test.ts | 123 + src/game/romWarlockMageSoulBrandSting.ts | 74 + src/game/romWarlockOverrides.ts | 136 +- ...ockPriestSoulEnlightenment.catalog.test.ts | 87 + ...riestSoulEnlightenment.integration.test.ts | 144 + src/game/romWarlockPriestSoulEnlightenment.ts | 43 + .../romWarlockPriestSpreadingPain.test.ts | 110 + src/game/romWarlockPriestSpreadingPain.ts | 121 + .../romWarlockPsychicWarriorRuntime.test.ts | 90 + src/game/romWarlockPsychicWarriorRuntime.ts | 57 + src/game/romWarlockRogueShadowSlice.test.ts | 125 + src/game/romWarlockRogueShadowSlice.ts | 80 + src/game/romWarlockRuntime.test.ts | 173 +- ...rlockWarriorEnragedCoa.integration.test.ts | 125 + ...mWarlockWarriorEnragedCoaMechanics.test.ts | 63 + .../romWarlockWarriorEnragedCoaMechanics.ts | 70 + src/game/romWarriorCoaCatalog.test.ts | 140 + src/game/romWarriorCoaCatalog.ts | 112 + .../romWarriorCoaRuntime.integration.test.ts | 119 + .../romWarriorCurrentCoaMechanics.test.ts | 175 + src/game/romWarriorCurrentCoaMechanics.ts | 193 + ...iorDruidRageOfCalmness.integration.test.ts | 106 + .../romWarriorDruidRageOfCalmness.test.ts | 76 + src/game/romWarriorDruidRageOfCalmness.ts | 77 + src/game/romWarriorOverrides.ts | 2 +- src/game/romWarriorRogueCoaCatalog.test.ts | 61 + src/game/romWarriorRogueExhaustion.test.ts | 69 + src/game/romWarriorRogueExhaustion.ts | 77 + src/game/talentModifiers.test.ts | 55 + src/game/talentModifiers.ts | 76 +- src/game/wow335AbilityCatalog.test.ts | 20 +- src/game/wow335AbilityCatalog.ts | 101 +- src/game/wow335AbilityData.generated.json | 2 +- ...eathKnightBladeBarrier.integration.test.ts | 124 + ...w335DeathKnightBladeBarrierRuntime.test.ts | 65 + .../wow335DeathKnightBladeBarrierRuntime.ts | 82 + .../wow335DeathKnightBloodCakedBlade.test.ts | 245 + ...wow335DeathKnightBloodCakedBladeRuntime.ts | 16 + ...DeathKnightBloodGorged.integration.test.ts | 200 + ...ow335DeathKnightBloodGorgedRuntime.test.ts | 59 + .../wow335DeathKnightBloodGorgedRuntime.ts | 116 + ...5DeathKnightBloodGorgedSpellFamily.test.ts | 103 + ...wow335DeathKnightBloodGorgedSpellFamily.ts | 135 + ...hKnightBloodyVengeance.integration.test.ts | 167 + ...5DeathKnightBloodyVengeanceRuntime.test.ts | 51 + ...wow335DeathKnightBloodyVengeanceRuntime.ts | 73 + ...eathKnightDancingRuneWeaponRuntime.test.ts | 171 + ...w335DeathKnightDancingRuneWeaponRuntime.ts | 103 + ...5DeathKnightDesolation.integration.test.ts | 132 + ...wow335DeathKnightDesolationRuntime.test.ts | 53 + .../wow335DeathKnightDesolationRuntime.ts | 83 + .../wow335DeathKnightEpidemicRuntime.test.ts | 32 + src/game/wow335DeathKnightEpidemicRuntime.ts | 30 + ...hKnightMercilessCombat.integration.test.ts | 189 + ...5DeathKnightMercilessCombatRuntime.test.ts | 44 + ...wow335DeathKnightMercilessCombatRuntime.ts | 53 + ...w335DeathKnightReaping.integration.test.ts | 237 + .../wow335DeathKnightReapingRuntime.test.ts | 165 + src/game/wow335DeathKnightReapingRuntime.ts | 254 + ...hKnightSpellDeflection.integration.test.ts | 140 + ...5DeathKnightSpellDeflectionRuntime.test.ts | 48 + ...wow335DeathKnightSpellDeflectionRuntime.ts | 115 + ...DruidMasterShapeshifterIntegration.test.ts | 110 + ...w335DruidMasterShapeshifterRuntime.test.ts | 62 + .../wow335DruidMasterShapeshifterRuntime.ts | 110 + ...ruidPredatoryInstincts.integration.test.ts | 194 + ...w335DruidPredatoryInstinctsRuntime.test.ts | 58 + .../wow335DruidPredatoryInstinctsRuntime.ts | 70 + src/game/wow335DruidRuntime.test.ts | 28 +- src/game/wow335DruidTalentRuntime.test.ts | 25 + src/game/wow335DruidTalentRuntime.ts | 32 + ...unterBestialDiscipline.integration.test.ts | 83 + ...w335HunterBestialDisciplineRuntime.test.ts | 27 + .../wow335HunterBestialDisciplineRuntime.ts | 46 + ...35HunterGoForTheThroat.integration.test.ts | 312 + .../wow335HunterGoForTheThroatRuntime.test.ts | 95 + src/game/wow335HunterGoForTheThroatRuntime.ts | 118 + src/game/wow335HunterMechanics.test.ts | 71 +- src/game/wow335HunterPetDefenseData.ts | 43 + .../wow335HunterPetHappinessRuntime.test.ts | 30 + src/game/wow335HunterPetHappinessRuntime.ts | 33 + ...35HunterPetInheritedDefenseRuntime.test.ts | 95 + .../wow335HunterPetInheritedDefenseRuntime.ts | 111 + src/game/wow335HunterPetRuntime.test.ts | 400 ++ src/game/wow335HunterPetRuntime.ts | 418 ++ .../wow335MageConditionalMechanics.test.ts | 77 + ...wow335MageFrostWarding.integration.test.ts | 155 + ...5MageFrostWardingArmor.integration.test.ts | 161 + .../wow335MageFrostWardingRuntime.test.ts | 225 + src/game/wow335MageFrostWardingRuntime.ts | 179 + ...wow335MageImprovedFireBlastRuntime.test.ts | 22 + .../wow335MageImprovedFireBlastRuntime.ts | 32 + ...MageNetherwindPresence.integration.test.ts | 113 + ...ow335MageNetherwindPresenceRuntime.test.ts | 136 + .../wow335MageNetherwindPresenceRuntime.ts | 204 + src/game/wow335MageRuntime.test.ts | 4 +- .../wow335MageShatter.integration.test.ts | 97 + src/game/wow335MageShatterRuntime.test.ts | 13 + src/game/wow335MageShatterRuntime.ts | 19 + ...wow335MageWintersChill.integration.test.ts | 130 + .../wow335MageWintersChillRuntime.test.ts | 80 + src/game/wow335MageWintersChillRuntime.ts | 153 + .../wow335PaladinAuraMasteryRuntime.test.ts | 29 + src/game/wow335PaladinAuraMasteryRuntime.ts | 100 +- ...centrationAuraPushback.integration.test.ts | 254 + ...335PaladinConcentrationAuraRuntime.test.ts | 30 + .../wow335PaladinConcentrationAuraRuntime.ts | 49 + ...335PaladinIllumination.integration.test.ts | 108 + .../wow335PaladinIlluminationRuntime.test.ts | 106 + src/game/wow335PaladinIlluminationRuntime.ts | 96 + ...PaladinRetributionAura.integration.test.ts | 101 + ...wow335PaladinVengeance.integration.test.ts | 100 + .../wow335PaladinVengeanceRuntime.test.ts | 125 + src/game/wow335PaladinVengeanceRuntime.ts | 132 + src/game/wow335PriestLightwellRuntime.test.ts | 2 +- src/game/wow335PriestLightwellRuntime.ts | 5 +- src/game/wow335RogueTalentRuntime.ts | 9 + .../wow335ShamanElementalFocusRuntime.test.ts | 33 + src/game/wow335ShamanElementalFocusRuntime.ts | 54 + ...ShamanElementalWarding.integration.test.ts | 146 + ...ow335ShamanElementalWardingRuntime.test.ts | 53 + .../wow335ShamanElementalWardingRuntime.ts | 41 + .../wow335ShamanFlurry.integration.test.ts | 171 + src/game/wow335ShamanFlurryRuntime.test.ts | 94 + src/game/wow335ShamanFlurryRuntime.ts | 124 + ...35ShamanImprovedEarthShieldRuntime.test.ts | 62 + .../wow335ShamanImprovedEarthShieldRuntime.ts | 54 + ...wow335ShamanImprovedShieldsRuntime.test.ts | 55 + .../wow335ShamanImprovedShieldsRuntime.ts | 41 + ...35ShamanImprovedWaterShieldRuntime.test.ts | 11 +- .../wow335ShamanImprovedWaterShieldRuntime.ts | 14 +- ...hamanLightningOverload.integration.test.ts | 184 + ...w335ShamanLightningOverloadRuntime.test.ts | 38 + .../wow335ShamanLightningOverloadRuntime.ts | 63 + ...ShamanMaelstromWeaponCombatRuntime.test.ts | 140 +- ...wow335ShamanMaelstromWeaponRuntime.test.ts | 16 + .../wow335ShamanMaelstromWeaponRuntime.ts | 29 +- .../wow335ShamanPartyMaelstromRuntime.test.ts | 502 ++ src/game/wow335ShamanPartyRuntime.test.ts | 83 +- ...wow335ShamanShieldProc.integration.test.ts | 197 + src/game/wow335ShamanTalentRuntime.ts | 27 + src/game/wow335Talents.generated.ts | 6 +- src/game/wow335WarlockMechanics.test.ts | 18 + src/game/wow335WarlockTalentRuntime.test.ts | 28 + src/game/wow335WarlockTalentRuntime.ts | 25 + ...35WarriorCriticalBlock.integration.test.ts | 155 + .../wow335WarriorCriticalBlockRuntime.test.ts | 27 + src/game/wow335WarriorCriticalBlockRuntime.ts | 36 + src/game/wow335WarriorDamageShield.test.ts | 110 + .../wow335WarriorDamageShieldRuntime.test.ts | 17 + src/game/wow335WarriorDamageShieldRuntime.ts | 27 + ...mprovedDefensiveStance.integration.test.ts | 245 + ...riorImprovedDefensiveStanceRuntime.test.ts | 68 + ...35WarriorImprovedDefensiveStanceRuntime.ts | 118 + ...5WarriorUnbridledWrath.integration.test.ts | 206 + ...wow335WarriorUnbridledWrathRuntime.test.ts | 40 + .../wow335WarriorUnbridledWrathRuntime.ts | 76 + ...w335WarriorVictoryRush.integration.test.ts | 206 + .../wow335WarriorVictoryRushRuntime.test.ts | 65 + src/game/wow335WarriorVictoryRushRuntime.ts | 146 + src/scene/DungeonShadowLight.tsx | 58 + src/scene/GameScene.tsx | 30 +- src/scene/MobPopulation.tsx | 15 +- src/scene/OnlinePlayerPopulation.tsx | 2 + src/scene/PartyPopulation.tsx | 19 + src/scene/PlayerRig.tsx | 40 +- src/scene/ProductionDungeon.tsx | 8 + src/scene/graphicsMaterialQuality.test.ts | 26 + src/scene/graphicsMaterialQuality.ts | 37 + src/styles.css | 36 +- src/ui/FloatingDamageText.tsx | 55 + src/ui/OptionsPanel.test.ts | 18 + src/ui/OptionsPanel.tsx | 47 +- src/ui/PartyFrames.tsx | 2 + src/ui/SummonFrames.tsx | 63 +- 330 files changed, 35406 insertions(+), 1760 deletions(-) create mode 100644 .holy-candle-inspect.ts create mode 100644 docs/ROM_DRUID_MAGE_GREEN_GUARDIAN.md create mode 100644 docs/ROM_DRUID_MAGE_INSPIRATION.md create mode 100644 docs/ROM_DRUID_ROGUE_NECROTIC_WOUND.md create mode 100644 docs/ROM_MAGE_WARDEN_FLAME_FOLLOWER_SOURCE_REVIEW.md create mode 100644 docs/ROM_PRIEST_HOLY_CANDLE.md create mode 100644 docs/ROM_PRIEST_SCOUT_CURING_SHOT.md create mode 100644 docs/ROM_PRIEST_SCOUT_SAINTS_BLESSING.md create mode 100644 docs/ROM_ROGUE_MAGE_CHAOS_DAGGER.md create mode 100644 docs/ROM_ROGUE_POISONOUS_HANDS.md create mode 100644 docs/ROM_SCOUT_PRIEST_DRUMS_OF_WAR.md create mode 100644 docs/ROM_SCOUT_PRIEST_SCREEN_ATTACK.md create mode 100644 docs/ROM_WARDEN_MAGE_TOUGH_OAK.md create mode 100644 docs/ROM_WARLOCK_MAGE_SOUL_BRAND.md create mode 100644 docs/ROM_WARLOCK_MAGE_SOUL_BRAND_STING.md create mode 100644 docs/ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT.md create mode 100644 docs/ROM_WARLOCK_PRIEST_SPREADING_PAIN.md create mode 100644 docs/ROM_WARLOCK_WARRIOR_PSYCHIC_WARRIOR.md create mode 100644 docs/WOW_DEATH_KNIGHT_BLOOD_GORGED.md create mode 100644 docs/WOW_DEATH_KNIGHT_MERCILESS_COMBAT.md create mode 100644 docs/WOW_DEATH_KNIGHT_SPELL_DEFLECTION.md create mode 100644 docs/WOW_HUNTER_BESTIAL_DISCIPLINE.md create mode 100644 docs/WOW_HUNTER_PET_DEFENSE_INHERITANCE.md create mode 100644 docs/WOW_HUNTER_PET_HAPPINESS.md create mode 100644 docs/WOW_MAGE_NETHERWIND_PRESENCE.md create mode 100644 docs/WOW_SHAMAN_FLURRY.md create mode 100644 docs/WOW_SHAMAN_REMAINING_TALENT_AUDIT.md create mode 100644 scripts/playtest-graphics-options.cjs create mode 100644 src/game/combatDamageProfile.ts create mode 100644 src/game/floatingCombatText.test.ts create mode 100644 src/game/floatingCombatText.ts create mode 100644 src/game/graphicsSettings.test.ts create mode 100644 src/game/graphicsSettings.ts create mode 100644 src/game/romChampionRuneOverloadChild.test.ts create mode 100644 src/game/romDruidCurrentCoaMechanics.test.ts create mode 100644 src/game/romDruidCurrentCoaMechanics.ts create mode 100644 src/game/romDruidMageCoaCatalog.test.ts create mode 100644 src/game/romDruidMageInspiration.integration.test.ts create mode 100644 src/game/romDruidMageInspirationRuntime.test.ts create mode 100644 src/game/romDruidMageInspirationRuntime.ts create mode 100644 src/game/romDruidRogueCurrentCoa.test.ts create mode 100644 src/game/romDruidRogueCurrentCoa.ts create mode 100644 src/game/romDruidRogueSinisterRequest.integration.test.ts create mode 100644 src/game/romDruidRogueSinisterRequest.test.ts create mode 100644 src/game/romKnightFearless.integration.test.ts create mode 100644 src/game/romKnightGodsSwordCoaMechanics.test.ts create mode 100644 src/game/romKnightGodsSwordCoaMechanics.ts create mode 100644 src/game/romKnightGodsSwordRuntime.integration.test.ts create mode 100644 src/game/romLeopardInstinctOverrides.test.ts create mode 100644 src/game/romLeopardInstinctOverrides.ts create mode 100644 src/game/romMageDruidGreenGuardian.integration.test.ts create mode 100644 src/game/romMageDruidGreenGuardian.party.integration.test.ts create mode 100644 src/game/romMageDruidGreenGuardianRuntime.test.ts create mode 100644 src/game/romMageDruidGreenGuardianRuntime.ts create mode 100644 src/game/romMageFireWard.catalog.test.ts create mode 100644 src/game/romMageFireWard.integration.test.ts create mode 100644 src/game/romPriestChampionBeacon.integration.test.ts create mode 100644 src/game/romPriestChampionBeaconRuntime.test.ts create mode 100644 src/game/romPriestChampionBeaconRuntime.ts create mode 100644 src/game/romPriestChampionHeartRuneEnergyRuntime.test.ts create mode 100644 src/game/romPriestChampionOverrides.test.ts create mode 100644 src/game/romPriestChampionRuntime.test.ts create mode 100644 src/game/romPriestCoaCatalog.test.ts create mode 100644 src/game/romPriestHolyBlessing.integration.test.ts create mode 100644 src/game/romPriestHolyBlessingRuntime.test.ts create mode 100644 src/game/romPriestHolyBlessingRuntime.ts create mode 100644 src/game/romPriestHolyCandle.integration.test.ts create mode 100644 src/game/romPriestHolyCandle.test.ts create mode 100644 src/game/romPriestHolyCandleRuntime.ts create mode 100644 src/game/romPriestHolyVoidRuntime.test.ts create mode 100644 src/game/romPriestScoutCuringShot.catalog.test.ts create mode 100644 src/game/romPriestScoutCuringShot.integration.test.ts create mode 100644 src/game/romPriestScoutCuringShot.test.ts create mode 100644 src/game/romPriestScoutCuringShot.ts create mode 100644 src/game/romPriestScoutSaintsBlessingDamage.integration.test.ts create mode 100644 src/game/romPriestScoutSaintsBlessingDamage.test.ts create mode 100644 src/game/romPriestScoutSaintsBlessingDamage.ts create mode 100644 src/game/romPriestTooltips.test.ts create mode 100644 src/game/romRogueChaosDagger.test.ts create mode 100644 src/game/romRogueChaosDagger.ts create mode 100644 src/game/romRogueCurrentCoaHands.integration.test.ts create mode 100644 src/game/romRogueEnergizedHandsRuntime.ts delete mode 100644 src/game/romRogueNumbingDagger.integration.test.ts delete mode 100644 src/game/romRogueNumbingDaggerRuntime.test.ts delete mode 100644 src/game/romRogueNumbingDaggerRuntime.ts create mode 100644 src/game/romScoutPriestScreenAttack.integration.test.ts create mode 100644 src/game/romScoutPriestScreenAttack.test.ts create mode 100644 src/game/romScoutPriestScreenAttack.ts create mode 100644 src/game/romWarlockMageCoaRuntime.integration.test.ts create mode 100644 src/game/romWarlockMageSoulBrand.test.ts create mode 100644 src/game/romWarlockMageSoulBrand.ts create mode 100644 src/game/romWarlockMageSoulBrandAuraSemantics.test.ts create mode 100644 src/game/romWarlockMageSoulBrandSting.catalog.test.ts create mode 100644 src/game/romWarlockMageSoulBrandSting.test.ts create mode 100644 src/game/romWarlockMageSoulBrandSting.ts create mode 100644 src/game/romWarlockPriestSoulEnlightenment.catalog.test.ts create mode 100644 src/game/romWarlockPriestSoulEnlightenment.integration.test.ts create mode 100644 src/game/romWarlockPriestSoulEnlightenment.ts create mode 100644 src/game/romWarlockPriestSpreadingPain.test.ts create mode 100644 src/game/romWarlockPriestSpreadingPain.ts create mode 100644 src/game/romWarlockPsychicWarriorRuntime.test.ts create mode 100644 src/game/romWarlockPsychicWarriorRuntime.ts create mode 100644 src/game/romWarlockRogueShadowSlice.test.ts create mode 100644 src/game/romWarlockRogueShadowSlice.ts create mode 100644 src/game/romWarlockWarriorEnragedCoa.integration.test.ts create mode 100644 src/game/romWarlockWarriorEnragedCoaMechanics.test.ts create mode 100644 src/game/romWarlockWarriorEnragedCoaMechanics.ts create mode 100644 src/game/romWarriorCoaCatalog.test.ts create mode 100644 src/game/romWarriorCoaCatalog.ts create mode 100644 src/game/romWarriorCoaRuntime.integration.test.ts create mode 100644 src/game/romWarriorCurrentCoaMechanics.test.ts create mode 100644 src/game/romWarriorCurrentCoaMechanics.ts create mode 100644 src/game/romWarriorDruidRageOfCalmness.integration.test.ts create mode 100644 src/game/romWarriorDruidRageOfCalmness.test.ts create mode 100644 src/game/romWarriorDruidRageOfCalmness.ts create mode 100644 src/game/romWarriorRogueCoaCatalog.test.ts create mode 100644 src/game/romWarriorRogueExhaustion.test.ts create mode 100644 src/game/romWarriorRogueExhaustion.ts create mode 100644 src/game/wow335DeathKnightBladeBarrier.integration.test.ts create mode 100644 src/game/wow335DeathKnightBladeBarrierRuntime.test.ts create mode 100644 src/game/wow335DeathKnightBladeBarrierRuntime.ts create mode 100644 src/game/wow335DeathKnightBloodCakedBlade.test.ts create mode 100644 src/game/wow335DeathKnightBloodCakedBladeRuntime.ts create mode 100644 src/game/wow335DeathKnightBloodGorged.integration.test.ts create mode 100644 src/game/wow335DeathKnightBloodGorgedRuntime.test.ts create mode 100644 src/game/wow335DeathKnightBloodGorgedRuntime.ts create mode 100644 src/game/wow335DeathKnightBloodGorgedSpellFamily.test.ts create mode 100644 src/game/wow335DeathKnightBloodGorgedSpellFamily.ts create mode 100644 src/game/wow335DeathKnightBloodyVengeance.integration.test.ts create mode 100644 src/game/wow335DeathKnightBloodyVengeanceRuntime.test.ts create mode 100644 src/game/wow335DeathKnightBloodyVengeanceRuntime.ts create mode 100644 src/game/wow335DeathKnightDancingRuneWeaponRuntime.test.ts create mode 100644 src/game/wow335DeathKnightDancingRuneWeaponRuntime.ts create mode 100644 src/game/wow335DeathKnightDesolation.integration.test.ts create mode 100644 src/game/wow335DeathKnightDesolationRuntime.test.ts create mode 100644 src/game/wow335DeathKnightDesolationRuntime.ts create mode 100644 src/game/wow335DeathKnightEpidemicRuntime.test.ts create mode 100644 src/game/wow335DeathKnightEpidemicRuntime.ts create mode 100644 src/game/wow335DeathKnightMercilessCombat.integration.test.ts create mode 100644 src/game/wow335DeathKnightMercilessCombatRuntime.test.ts create mode 100644 src/game/wow335DeathKnightMercilessCombatRuntime.ts create mode 100644 src/game/wow335DeathKnightReaping.integration.test.ts create mode 100644 src/game/wow335DeathKnightReapingRuntime.test.ts create mode 100644 src/game/wow335DeathKnightReapingRuntime.ts create mode 100644 src/game/wow335DeathKnightSpellDeflection.integration.test.ts create mode 100644 src/game/wow335DeathKnightSpellDeflectionRuntime.test.ts create mode 100644 src/game/wow335DeathKnightSpellDeflectionRuntime.ts create mode 100644 src/game/wow335DruidMasterShapeshifterIntegration.test.ts create mode 100644 src/game/wow335DruidMasterShapeshifterRuntime.test.ts create mode 100644 src/game/wow335DruidMasterShapeshifterRuntime.ts create mode 100644 src/game/wow335DruidPredatoryInstincts.integration.test.ts create mode 100644 src/game/wow335DruidPredatoryInstinctsRuntime.test.ts create mode 100644 src/game/wow335DruidPredatoryInstinctsRuntime.ts create mode 100644 src/game/wow335HunterBestialDiscipline.integration.test.ts create mode 100644 src/game/wow335HunterBestialDisciplineRuntime.test.ts create mode 100644 src/game/wow335HunterBestialDisciplineRuntime.ts create mode 100644 src/game/wow335HunterGoForTheThroat.integration.test.ts create mode 100644 src/game/wow335HunterGoForTheThroatRuntime.test.ts create mode 100644 src/game/wow335HunterGoForTheThroatRuntime.ts create mode 100644 src/game/wow335HunterPetDefenseData.ts create mode 100644 src/game/wow335HunterPetHappinessRuntime.test.ts create mode 100644 src/game/wow335HunterPetHappinessRuntime.ts create mode 100644 src/game/wow335HunterPetInheritedDefenseRuntime.test.ts create mode 100644 src/game/wow335HunterPetInheritedDefenseRuntime.ts create mode 100644 src/game/wow335HunterPetRuntime.test.ts create mode 100644 src/game/wow335HunterPetRuntime.ts create mode 100644 src/game/wow335MageFrostWarding.integration.test.ts create mode 100644 src/game/wow335MageFrostWardingArmor.integration.test.ts create mode 100644 src/game/wow335MageFrostWardingRuntime.test.ts create mode 100644 src/game/wow335MageFrostWardingRuntime.ts create mode 100644 src/game/wow335MageImprovedFireBlastRuntime.test.ts create mode 100644 src/game/wow335MageImprovedFireBlastRuntime.ts create mode 100644 src/game/wow335MageNetherwindPresence.integration.test.ts create mode 100644 src/game/wow335MageNetherwindPresenceRuntime.test.ts create mode 100644 src/game/wow335MageNetherwindPresenceRuntime.ts create mode 100644 src/game/wow335MageShatter.integration.test.ts create mode 100644 src/game/wow335MageShatterRuntime.test.ts create mode 100644 src/game/wow335MageShatterRuntime.ts create mode 100644 src/game/wow335MageWintersChill.integration.test.ts create mode 100644 src/game/wow335MageWintersChillRuntime.test.ts create mode 100644 src/game/wow335MageWintersChillRuntime.ts create mode 100644 src/game/wow335PaladinAuraMasteryRuntime.test.ts create mode 100644 src/game/wow335PaladinConcentrationAuraPushback.integration.test.ts create mode 100644 src/game/wow335PaladinConcentrationAuraRuntime.test.ts create mode 100644 src/game/wow335PaladinConcentrationAuraRuntime.ts create mode 100644 src/game/wow335PaladinIllumination.integration.test.ts create mode 100644 src/game/wow335PaladinIlluminationRuntime.test.ts create mode 100644 src/game/wow335PaladinIlluminationRuntime.ts create mode 100644 src/game/wow335PaladinRetributionAura.integration.test.ts create mode 100644 src/game/wow335PaladinVengeance.integration.test.ts create mode 100644 src/game/wow335PaladinVengeanceRuntime.test.ts create mode 100644 src/game/wow335PaladinVengeanceRuntime.ts create mode 100644 src/game/wow335ShamanElementalFocusRuntime.test.ts create mode 100644 src/game/wow335ShamanElementalFocusRuntime.ts create mode 100644 src/game/wow335ShamanElementalWarding.integration.test.ts create mode 100644 src/game/wow335ShamanElementalWardingRuntime.test.ts create mode 100644 src/game/wow335ShamanElementalWardingRuntime.ts create mode 100644 src/game/wow335ShamanFlurry.integration.test.ts create mode 100644 src/game/wow335ShamanFlurryRuntime.test.ts create mode 100644 src/game/wow335ShamanFlurryRuntime.ts create mode 100644 src/game/wow335ShamanImprovedEarthShieldRuntime.test.ts create mode 100644 src/game/wow335ShamanImprovedEarthShieldRuntime.ts create mode 100644 src/game/wow335ShamanImprovedShieldsRuntime.test.ts create mode 100644 src/game/wow335ShamanImprovedShieldsRuntime.ts create mode 100644 src/game/wow335ShamanLightningOverload.integration.test.ts create mode 100644 src/game/wow335ShamanLightningOverloadRuntime.test.ts create mode 100644 src/game/wow335ShamanLightningOverloadRuntime.ts create mode 100644 src/game/wow335ShamanPartyMaelstromRuntime.test.ts create mode 100644 src/game/wow335ShamanShieldProc.integration.test.ts create mode 100644 src/game/wow335WarriorCriticalBlock.integration.test.ts create mode 100644 src/game/wow335WarriorCriticalBlockRuntime.test.ts create mode 100644 src/game/wow335WarriorCriticalBlockRuntime.ts create mode 100644 src/game/wow335WarriorDamageShield.test.ts create mode 100644 src/game/wow335WarriorDamageShieldRuntime.test.ts create mode 100644 src/game/wow335WarriorDamageShieldRuntime.ts create mode 100644 src/game/wow335WarriorImprovedDefensiveStance.integration.test.ts create mode 100644 src/game/wow335WarriorImprovedDefensiveStanceRuntime.test.ts create mode 100644 src/game/wow335WarriorImprovedDefensiveStanceRuntime.ts create mode 100644 src/game/wow335WarriorUnbridledWrath.integration.test.ts create mode 100644 src/game/wow335WarriorUnbridledWrathRuntime.test.ts create mode 100644 src/game/wow335WarriorUnbridledWrathRuntime.ts create mode 100644 src/game/wow335WarriorVictoryRush.integration.test.ts create mode 100644 src/game/wow335WarriorVictoryRushRuntime.test.ts create mode 100644 src/game/wow335WarriorVictoryRushRuntime.ts create mode 100644 src/scene/DungeonShadowLight.tsx create mode 100644 src/scene/graphicsMaterialQuality.test.ts create mode 100644 src/scene/graphicsMaterialQuality.ts create mode 100644 src/ui/FloatingDamageText.tsx diff --git a/.holy-candle-inspect.ts b/.holy-candle-inspect.ts new file mode 100644 index 00000000..3b85161f --- /dev/null +++ b/.holy-candle-inspect.ts @@ -0,0 +1,3 @@ +import { ROM_ALL_ABILITIES } from "./src/game/romAbilityCatalog"; +console.log("total", ROM_ALL_ABILITIES.length); +console.log(ROM_ALL_ABILITIES.filter((entry) => entry.effects.some((effect) => effect.kind === "heal" || effect.kind === "hot") && entry.castMode === "channel").map((entry) => `${entry.id}: ${entry.name} (${entry.effects.map((effect) => effect.kind).join(",")})`).join("\n")); diff --git a/PLAYTEST_NOTES.md b/PLAYTEST_NOTES.md index 155c750e..66dcc418 100644 --- a/PLAYTEST_NOTES.md +++ b/PLAYTEST_NOTES.md @@ -4,6 +4,20 @@ This file is the durable record of runtime behavior, regressions, and the evidence required before calling a visual bug fixed. Update it whenever scene, camera, input, physics, mob-rendering, or asset-loading code changes. +## 2026-09-30 Dungeon graphics options + +- `scripts/playtest-graphics-options.cjs` entered WoW Wailing Caverns and RoM + Forsaken Abbey in headless Edge with an isolated temporary database. It changed + render resolution to 200%, texture filtering to 16×, shadows to High, and + ambient fill to High through the Options panel. No browser page errors occurred. +- The canvas measured 1.38× pixel density under adaptive scaling and 2× after + the fixed setting, including after switching dungeons. The High setting + rendered both dungeon scenes without missing world geometry or textures. +- Evidence: `artifacts/playtest/graphics-options/{wow-default,wow-high,rom-high,graphics-options,graphics-options-thor}.png` + and `results.json`. The screenshots show visual operation, not a controlled + lighting fidelity or frame-rate benchmark. Higher-resolution source textures + and original client lightmaps are not shipped as alternate runtime tiers. + ## 2026-09-27 Bite-Sized editor movement regression - The original edit-mode action blocker also suppressed continuous movement and diff --git a/docs/ACTIVE_CLASS_AUDIT.md b/docs/ACTIVE_CLASS_AUDIT.md index a252d648..74000aea 100644 --- a/docs/ACTIVE_CLASS_AUDIT.md +++ b/docs/ACTIVE_CLASS_AUDIT.md @@ -1,11 +1,11 @@ # Active class behavior and spell visual audit -Updated 2026-09-30. This is a source/runtime audit of the shipped WoW 3.3.5a and RuneWaker catalogs in Healer Man. It records confirmed gaps and the fixes made in this pass. It is not a claim that every ability has passed a live-game playtest or a screenshot-based visual review. +Updated 2026-10-02. This is a source/runtime audit of the shipped WoW 3.3.5a and RuneWaker catalogs in Healer Man. It records confirmed gaps and the fixes made in this pass. It is not a claim that every ability has passed a live-game playtest or a screenshot-based visual review. ## Class-mechanics source precedence - For WoW, use the existing generated class, rank, and talent entries wherever they contain the relevant data. Consult [WotLKDB 3.3.5a](https://wotlkdb.com/) only to fill a missing tooltip or spell detail; do not replace a populated generated value with a conflicting database row. -- For RoM, keep populated RuneWaker generated entries and local source mappings authoritative. Consult the [Chronicles of Arcadia Wiki](https://chroniclesofarcadia.com/en/wiki/skills/list) only when tooltip or spell details are genuinely missing; do not import a conflicting later version into the local RuneWaker mechanic. +- For RoM, use populated RuneWaker generated entries and local source mappings as the baseline. When the current [Chronicles of Arcadia Wiki](https://chroniclesofarcadia.com/en/wiki/skills/list) or its patch notes clearly identifies the same ability or an explicit rework, prefer the current CoA behavior over a conflicting RuneWaker value. Verify the skill name and class pairing before treating a reused ID as the same ability. Document the selected source, the conflict, and any simulator approximation; leave missing triggers or values unresolved rather than guessing. - This mechanics follow-up excludes visual and sound tuning. The visual findings below record work from the earlier visual pass. ## Reviewed scope @@ -45,6 +45,10 @@ WoW inventory by generated catalog class: Manifest coverage means an effect mapping exists; a graph means an original effect graph can render in the browser. Neither proves the effect is the right size or brightness. Most RoM entries have only source-model metadata and use a generated fallback in the browser. ## Fixes made in this pass +- WoW Paladin Illumination (`talent-1461`) now refunds half the selected local Spell.dbc rank's base Mana cost on critical Flash of Light, Holy Light, or Holy Shock, using generated 33/66/100% rank chances. Player and companion casts snapshot the base cost before discounts at cast start. Generated local rank text takes precedence over WotLKDB's conflicting stock 20% proc / 30% refund; the unsupported Light's Hammer cooldown rider remains out because there is no local catalog row. Existing paid-rank semantics are unchanged. +- WoW Paladin Vengeance (`talent-1402`) now applies a 1/2/3% per-stack generated bonus (five stacks, 15 seconds) after positive landed player/companion Paladin critical damage from weapon swings, spells, or abilities. It modifies Holy damage and exact local Crusader Strike/Divine Storm ability rows. Generated tooltip values supersede the conflicting linked child Spell.dbc values (three stacks, 30 seconds, Physical+Holy); periodic events without a critical result and critical heals do not proc. +- WoW Mage Frost Warding (`talent-70`) has two scoped mechanics. The local Mage Fire Ward/Frost Ward proc uses generated 25/50% proc chances, half damage reduction, and a 1:1 Mana refund for player and companion; applying reduction before ordinary Ward absorption is an explicit simulator inference because the generated tooltip leaves ordering unspecified, and stock full-absorb behavior is not imported. Its generated 25/50% Frost Armor/Ice Armor rider scales only positive armor/resistance modifiers on those exact Mage aura effects, for player and companion, while each aura is active. Generic scalar parsing remains guarded; no local Mage Arcane Ward row exists and Shadow Ward remains Warlock-only. +- WoW Hunter Go for the Throat (`talent-1818`) now grants generated 15/30 pet Focus after qualifying player/companion Hunter melee/ranged critical strikes, with a 2-second Hunter-owner cooldown and active living pet Focus cap. The owner-scoped cooldown persisting through pet swaps is an architecture inference. Companion crit setup covers the baseline ranged swing and exact generated direct weapon ability IDs; integration tests exercise the swing and Arcane Shot. Raptor Strike is mapped but not selected by the current Marksmanship AI; traps, Stings, Volley, and unclassified spells are excluded, including a ranged-labeled Explosive Trap. This is a selection coverage limit, not a claim that every mapped strike has an AI-driven event. - Priest Flash Heal impact is softened for both WoW catalog IDs: scale `0.38`, opacity `0.22`. Cast-start remains unchanged. The original model was inspected and showed a broad, bright impact. - WoW Mage Arcane Explosion cast-start sphere is tuned to scale `0.65`, opacity `0.5`; the impact cue keeps default tuning after the original purple sphere appeared visually dominant. @@ -54,22 +58,24 @@ Manifest coverage means an effect mapping exists; a graph means an original effe - WoW Shaman Healing Stream Totem ranks 5394–58757 now summon a five-health, nonattacking totem for five minutes. It heals injured party members in 10 yards every two seconds, with each rank's extracted child-spell amount (6–25). - WoW Death Knight Empower Rune Weapon (47568) now activates all six runes with a single source-aligned effect. Black Ice now treats Frost and Shadow as alternative schools rather than requiring both on one spell. - WoW Death Knight Anti-Magic Shell now grants 2% Runic Power per point actually absorbed by its live magic-damage shield, respecting the source absorb cap and the Runic Power maximum; damage the shell does not absorb grants none. +- WoW Death Knight Desolation (`talent-2285`) now gives landed Blood Strike hits a self-buff from the local generated child rank: +1/2/3/4/5% damage with all attacks for 20 seconds. Talent rows provide 100% child links 63583/66800/66801/66802/66803 and the generated Blood Strike is spell 45902; no WotLKDB fallback was needed. Local generated data does not define the proc phase, so the landed/main-hand gate is corroborated by the WotLK simulator's [`blood_strike.go`](https://github.com/wowsims/wotlk/blob/master/sim/deathknight/blood_strike.go), not claimed as a primary server-core citation. Player and generated-companion ranks/aura ownership have focused coverage. The current simulator does not emit a distinct off-hand Blood Strike, so only its modeled primary strike can activate the talent. +- WoW Death Knight Blade Barrier (`talent-2017`) reads generated ranks for 1/2/3/4/5% all-damage reduction over 10 seconds and linked child IDs 51789/64855/64856/64858/64859. For players and generated companions, the effect activates when a committed action actually sends a ready base Blood rune into cooldown and leaves both base Blood runes cooling. The hook compares rune slots before and after spending, rather than relying on a Blood cost label: a Death Rune paying Blood cost while both original Blood runes are already cooling does not refresh Blade Barrier. Source data is local generated talent metadata; no WotLKDB fallback was needed. Focused coverage: four helper tests and two player/companion integration tests. - WoW Rogue Vanish now enters stealth, clears active root/slow control, and leaves the player in place; Preparation resets only Evasion, Sprint, Vanish, Cold Blood, and Shadowstep. - WoW Warlock Soulshatter (29858) now cuts each nearby enemy's threat by the source-defined 50% in a caster-centered 50-yard radius; targets outside it remain unchanged, including when the area is empty. - WoW Warlock Death's Grasp now applies its rank 1/2/3% hit bonus to direct player ability attacks and its matching spell haste to spell casts; auto-attacks, periodic ticks, and other classes do not receive the hit bonus. -- WoW Mage Blink now removes root/stun control and can be cast while stunned; the false movement-away behavior is removed. The intended 20-yard forward teleport remains unsupported until player facing is represented. +- WoW Mage Blink now moves forward up to the generated 20-yard distance using the live player-facing yaw, projects to ground, stops before a line-of-sight blocker, and preserves root/stun removal. Its relocation updates the active player position without replacing the run's saved spawn. - WoW Hunter Readiness preserves Bestial Wrath's cooldown exception. Bestial Wrath requires an active pet and places its source-row 19574 effects on that pet. The Beast Within (34471) now procs only on Bestial Wrath at its generated rank's 50%/100% chance and uses the generated tooltip's six seconds, +15% damage, and -50% mana cost; the populated generated talent entry takes precedence over the conflicting extracted spell row. - WoW Priest Prayer of Mending ranks 33076/48112/48113 now heal for the extracted base values (800/905/1043), spend one of five damage-taken charges per activation, and transfer to the most injured eligible party member within 40 yards and line of sight. This models five total heals, with up to four transfers; unrelated outgoing damage does not spend a charge. - WoW Holy Shock retains the player button and both source heal/damage payloads; Death Grip pulls and taunts; Pestilence spreads the caster's two diseases; Chains of Ice keeps its slow without a bogus root; Life Tap and Create Healthstone no longer produce false heals; Swiftmend prefers a caster-owned eligible Rejuvenation/Regrowth or otherwise the shortest remaining one and heals exactly 4/6 ticks. The player can configure Glyph of Swiftmend and preserve that HoT; explicitly configured party Druids can also carry the glyph, while generated companions remain unglyphed. -- WoW Shaman Maelstrom Weapon now receives each landed player autoattack and Stormstrike hand's own weapon speed for its proc roll. Stormstrike uses the generated main-hand/off-hand children and skips its off-hand strike when no off-hand weapon is equipped. Companion Maelstrom stacks and hand-specific swings remain unsupported. +- WoW Shaman Maelstrom Weapon now receives landed player and companion weapon hits using the attacking hand's own speed. Companion Shamans track equipped main/off-hand autoattacks independently; Stormstrike resolves its generated hand-tagged children and skips an unequipped off-hand, while Lava Lash retains its generated damage and rolls using the off-hand speed. Eligible companion casts reduce cast time by 20% per stack and consume the full bundle only after cast commitment, including instant casts and Lesser Healing Wave support casts. - WoW Warrior Bloodthirst now keeps player cast/damage fields from 23881 and uses child spell 23880 for three 1%-max-health heals on landed melee hits. Sweeping Strikes selects player self-buff 12328, arms five charges, and applies one hit to the nearest eligible secondary enemy for each landed melee hit. - RoM Warrior Survival Instinct now checks its health threshold; Moon Cleave runs three hits and checks its two-handed weapon requirement; Shout applies the current [CoA Shout entry](https://chroniclesofarcadia.com/en/wiki/skills/list/1-8)'s 15-Rage, 40-second self-centered area stun without the stale five-target cap (the local RuneWaker snapshot has older values); The Final Battle applies its second hit only below 30% target health; Probing Attack applies a six-second Vulnerable state that Keen Attack requires. -- RoM Knight Shackles of Light resolves its all-enemy root; Knight Smash requires a recent landed player critical hit; RoM Mage Fire Ward applies to the party; RoM Priest support targets are friendly, paired Priest buffs apply to their intended party members, and Priest/Scout Curing Shot heals and applies its HoT to up to five allies. +- RoM Knight Shackles of Light resolves its all-enemy root; Knight Smash requires a recent landed player critical hit; RoM Mage Fire Ward applies to the party; RoM Priest support targets are friendly, paired Priest buffs apply to their intended party members, and Priest/Scout Curing Shot (492636) heals every eligible modeled party member and applies six 3-second HoT ticks over 18 seconds; its caster-only +10% Elemental Damage is mapped to the Priest/Scout Water analogue (`frost`), an explicit subclass-based inference. - RoM Priest/Warlock Prayer of Tribulation (498770) now targets a friendly ally, channels four source-authored heals, and applies its local defense buff using the tooltip's 40% health branches. The local snapshot omits timing, so the matching current [CoA skill entry](https://chroniclesofarcadia.com/en/wiki/skills/list/5-9) supplied only the 1.5-second channel and 5-second cooldown; its newer area-damage and defense-buff payload was not imported. - RoM Scout/Mage Aggro Transfer now applies its mana regeneration to the selected ally; Scout/Priest Mana Arrows shields up to six nearby allies; Scout/Knight Healing Shot fires its hostile shot and heals the party member with the lowest maximum health. - RoM Scout, Knight, and Druid ranged skills now enforce their ranged-weapon requirement, including Thorn Arrow, Hidden Peril, Gryphon Bash, Arrow of Vengeance, Healing Arrows, and Unbinding Magic; Warrior/Scout Stun Shot and Scout Neck Strike also enforce it. - RoM Druid/Mage Spring of Blessings heals nearby party members over time; Druid/Mage Earth Chain chains to three enemies with 70% falloff; Shield of Light applies to up to three nearby allies; Druid/Scout Group Exorcism cleanses nearby allies and consumes its required Nature Power. Knight/Priest Free Will grants its selected ally 10 seconds of Root and Slow immunity. -- RoM Mage/Druid Green Guardian now preserves the two RuneWaker HoT payloads, including its target-max-health percentage, and schedules both for five two-second ticks when either rank of Mother Earth's Protection expires. Player and party casters are supported, and healing goes to the protection recipient, including a party ally; no CoA Wiki fallback was needed. +- RoM Mage/Druid Green Guardian (494331) now follows the exact-pair current CoA active stack skill: player and generated-companion actors gain one stack per full observed stationary second, up to 20, for +1% movement speed per stack. Companion AI uses the zero-cost self skill on its first available combat action when the aura is absent; that selection is a simulator policy. The old Mother Earth's Protection expiry HoTs are suppressed only for Mage-primary/Druid-secondary, and remain available to other local RuneWaker rows. The one-full-stationary-second post-movement reset is a documented timing approximation; CoA does not define pause duration, stack-loss events, or the MP refund basis, so no decay/refund is modeled. See [the source and runtime note](ROM_DRUID_MAGE_GREEN_GUARDIAN.md). - RoM Warrior/Scout Calm now grants 20 physical hit for 15 seconds only after its paired Skull Breaker fails; landing the attack, failing another ability, and using Warrior without Scout do not trigger it. - RoM Scout/Warden Thorn Arrow now requires the Briar Shield buff before it can be cast. - RoM Warden Briar Shield (493642) now applies RuneWaker component 503958's 900-second self aura and +5% armor without dealing damage on cast. A landed physical melee or ranged attack reflects component 503959's level-scaled fraction of main-hand weapon DPS to its attacker within 50 range. The local `runewakerOrgPower(-0.01, characterLevel, 8)` conversion yields 7.4% at level 80 and 9.4% at level 105; no later Chronicles of Arcadia trigger or stat values were imported. @@ -79,6 +85,7 @@ Manifest coverage means an effect mapping exists; a graph means an original effe - RoM Warlock/Priest Ring of Comfort heals up to six nearby allies instead of damaging the selected hostile target. - Champion Rune Pulse's initial Rage-aura mapping was later corrected to its landed-hit behavior in the follow-up below. - RoM Champion Kinetic Burn, Vacuum Wave, and Light Pulse resolve their self-centered nearby areas; Shock Strike uses a forward cone; Overrule clears control and grants the stated short control immunity. +- WoW Shaman Maelstrom Weapon applies its generated 2%-per-consumed-stack PvP damage reduction to eligible damage spells, capped at 10% for five stacks. Player and companion instant, cast-time, and channel execution preserve the stack snapshot; only character PvP targets are reduced, while NPC damage and Lesser Healing Wave healing are unchanged. The generated [talent-2057 row](../src/game/wow335Talents.generated.ts#L82504) supplies the rider, so no WotLKDB value was substituted. Focused validation passed 31 tests across the helper, player combat, and companion suites. ### Second-pass class follow-ups @@ -86,24 +93,27 @@ Manifest coverage means an effect mapping exists; a graph means an original effe - WoW Priest Focused Will preserves its generated +1/2/3 percentage points of spell critical chance; each landed incoming critical hit grants +3% healing received per stack for 10 seconds, up to three stacks, for player and party Priests. Its conditional healing clause is excluded from unconditional talent modifiers. Player and companion incoming-hit regressions pass. - WoW Priest Psychic Scream now applies its fear status once per cast, avoiding duplicate boss diminishing-return consumption, and Pain Suppression now remains eligible for low-health mitigation even though it also reduces threat. The Priest AI/control regression suites passed 45 tests across three files. - WoW Paladin Blessed Life's generated rank tooltips say that all attacks against the Paladin have a 4%/7%/10% chance (ranks 1/2/3) to cause half damage. Player and party enemy-hit paths use stable per-target/per-mob/per-attack/per-revision/per-resolution rolls only after a landed result, after `resolveEnemyDamageResult` and `romWardenWillAttackDamage`, and before mitigation and absorbs. Regressions cover both target paths, rank thresholds, misses, and unrelated party targets. -- WoW Paladin Eye for an Eye reflects the talent rank's 5/10/15% of incoming critical damage, capped at 50% of maximum health. Incoming critical-chance modifiers increase enemy attack crit chance. Divine Sacrifice tracks its source-defined 150%-of-caster-max-health redirect cap. Redemption enforces its out-of-combat gate, and Aura Mastery grants eligible recipients ten-second silence and interrupt immunities while doubling modifiers from the same Paladin's active aura on each recipient. For duration, the runtime follows local effect duration index 32 and the generated 31821 spell row (10 seconds); the generated talent-rank tooltip instead says 6 seconds, so that local source conflict remains explicit. Aura amplification applies only to the existing modifier model and does not supply missing Paladin aura mechanics. Redoubt follows the generated rank tooltip: shield-equipped block chance is 4/7/10%, each block has a 10% proc chance, and the rank-matched Strength/damage reduction lasts 10 seconds; WotLKDB supplied the missing child duration only. Vindication now uses generated rank chances (17/34/65%) and the local `4.5 × caster level − 3` reduction, with WotLKDB child 67 filling only its missing ten-second duration. Its source-owned debuff reduces the attack-power-derived part of modeled enemy melee damage. The capstone AP gain remains unresolved because its amount/operation is unstated. Focused Paladin tests cover these changes. +- WoW Paladin Eye for an Eye reflects the talent rank's 5/10/15% of incoming critical damage, capped at 50% of maximum health. Incoming critical-chance modifiers increase enemy attack crit chance. Divine Sacrifice tracks its source-defined 150%-of-caster-max-health redirect cap. Redemption enforces its out-of-combat gate. Aura Mastery now follows its generated talent tooltip and [WotLKDB's 3.3.5a spell 31821](https://wotlkdb.com/?spell=31821) at six seconds; it reduces represented confuse/fear/sleep duration by 50% on the Paladin, grants silence/interrupt immunity to affected allies, and doubles modeled modifiers from that same Paladin's active aura on each recipient. Its Retribution Aura damage shield uses generated rank base damage as Holy damage and doubles while the matching Aura Mastery is active; player and party incoming-hit paths are covered. Retribution Aura's DBC +0.033 spell-power coefficient now applies to player and companion proc damage. Concentration Aura reduces the existing incoming pushback penalties for player and generated-companion casters using the exact Aura 149 instance and its Paladin source: the generated 35% base plus that source's local Improved Concentration Aura +7/14/20-point rank. Cast delay and channel loss are scaled after spell-specific pushback resistance; the two-hit cap remains, and Aura Mastery does not multiply the reduction. Stock WotLKDB ranks (+5/10/15) are not used. Redoubt follows the generated rank tooltip: shield-equipped block chance is 4/7/10%, each block has a 10% proc chance, and the rank-matched Strength/damage reduction lasts 10 seconds; WotLKDB supplied the missing child duration only. Vindication now uses generated rank chances (17/34/65%) and the local `4.5 × caster level − 3` reduction, with WotLKDB child 67 filling only its missing ten-second duration. Its source-owned debuff reduces the attack-power-derived part of modeled enemy melee damage. Rank 3's capstone AP gain remains unwired: its current DBC has two self-targeted DUMMY effects without an AP operation or child; separate SLS row 209451's child 200067 cannot be borrowed. Focused Paladin tests cover these changes. - WoW Mage wires Improved Scorch, Fingers of Frost, Hot Streak, and Arcane Concentration from rank-specific data. Clearcasting procs at 5/10/15%, lasts 15 seconds, and makes the next successful active Mage ability free of Mana, Energy, and Rage cost; the missing duration comes from WotLKDB. Interrupted timed casts retain the proc, while channels consume it at their upfront-cost start. Empowered Fire restores 2% of the local level-based Mage base Mana on each positive Ignite tick, capped at the caster's Mana maximum; rank 3 also allows that caster's Living Bomb periodic damage to critically strike. Its generated 7/14/20% rider now increases only the spell-power coefficient of Fireball, Pyroblast, and Living Bomb, leaving DBC base points and die ranges unchanged for player and party Mages. - RoM Warlock Ruthless Judgment (498544) preserves its RuneWaker damage payload and grants the caster the sourced 20-second, +5% spell-damage aura only when the target is below 20% health. The target does not receive the aura; player and companion casts are covered. Its focused runtime suite passed 12 tests. -- WoW Shaman now wires Ancestral Awakening, Ancestral Healing, Shamanism, rank-scaled Reverberation, Improved Water Shield, Tidal Waves, and Riptide's target-scoped Chain Heal rider for player and party casters. Improved Water Shield restores the local Water Shield orb mana on qualifying critical Nature heals and doubles its chance for Healing Wave. Tidal Waves uses generated ranks for charges, Healing Wave cast-time reduction, Lesser Healing Wave crit chance, and its 4/8/12% spell-power coefficient; WotLKDB child 53390 fills only the missing 15-second duration. Riptide's 25% Chain Heal boost consumes only the caster's matching HoT on the primary target. Party Shaman heal events now use their actual Nature school for proc checks. Combined Shaman/player/party focused suites passed 54 tests. +- WoW Shaman now wires Ancestral Awakening, Ancestral Healing, Shamanism, rank-scaled Reverberation, Improved Water Shield, Improved Shields, Tidal Waves, and Riptide's target-scoped Chain Heal rider for player and party casters. Improved Water Shield restores the local Water Shield orb mana on qualifying critical Nature heals and doubles its chance for Healing Wave. Tidal Waves uses generated ranks for charges, Healing Wave cast-time reduction, Lesser Healing Wave crit chance, and its 4/8/12% spell-power coefficient; WotLKDB child 53390 fills only the missing 15-second duration. Riptide's 25% Chain Heal boost consumes only the caster's matching HoT on the primary target. Party Shaman heal events now use their actual Nature school for proc checks. Combined Shaman/player/party focused suites passed 54 tests. +- WoW Shaman Elemental Devastation follows generated talent node 1645 for player and party Shamans: a direct Fire, Frost, or Nature spell critical grants 4/8/12% melee and ranged critical chance for 10 seconds. Periodic damage does not trigger it. - RoM Champion rank 1 Forge installs a five-minute trigger; landed normal melee hits add a capped 8-second, 2%-per-stack attack-power buff and 10 Rage. Its runtime test file passed five tests. Shield Form and rank-2 proc chance data remain unavailable. -- WoW Hunter's Intimidation proc is attributed to the pet and consumes on its successful melee hit. Kill Command retains its generated 30-second pet aura, but the 1%-per-special-attack rider remains unsupported because the generated tooltip omits the starting bonus and the simulator emits no distinct pet-special event. Ordinary melee hits do not consume it; the fabricated 60-stack placeholder was removed. The focused Hunter suite passed 12 tests. +- WoW Hunter's Intimidation proc is attributed to the pet and consumes on its successful melee hit. The current player/companion Wolf baseline selects the highest local Bite rank for pet level, regenerates Focus at five per second, pays Bite's 25 Focus cost, and models Bite as a distinct 1.5-second-GCD special alongside the ordinary swing. Kill Command follows local Spell.dbc rows 34026/34027 and triggered child 58914: +60% pet special damage for 30 seconds, decaying by 20 percentage points on each pet special execution, with a 60-second cooldown. Its 60/40/20% tiers are applied to Bite; autos do not consume them. Mend Pet's HoT targets the living Hunter pet in player and companion casts, companion Hunters cast it below 75% pet health if no HoT is pending, and Revive Pet restores a dead pet at 15% health; companion Hunters automatically revive their dead pet. Furious Howl selects the local level-appropriate Wolf rank and adds its AP/14 × 2-second weapon-speed bonus to pet autoattacks. Pet base health, Strength, AP, and autoattack damage now use local `pet_levelstats` entry 1 and stock TrinityCore 3.3.5 formulas for both player and generated companion pets. Owner stamina and ranged-AP inheritance (45% stamina with +10 health per point; 22% ranged AP to pet AP) now updates dynamically. Pets also inherit spell damage equal to 12.87% of owner ranged AP, and Bite uses local 0.119658 spell-damage and 7% pet-AP coefficients. Selectable families and remaining family utilities remain open. Pet critical inheritance is also unresolved: local pet passive 19591 has zero-valued melee/spell crit aura amounts, and stock 3.3.5 core calculates non-player crit from a 5% base plus pet-owned auras without an owner-crit formula. The only owner-melee-crit formula found is in an unmerged server issue, not stock behavior, so no crit inheritance was added. - RoM Scout now keeps bow/crossbow accuracy out of melee hit chance, gates Poisonous Spit on Poison Powder, and implements Accurate Targeting's 15-second +50 physical-attack buff with its 30-second cooldown. The ranged-hit consumer and Scout-focused suites passed 49 tests across two files. - RoM Priest/Mage Lightning Rod (492638) now requires both its passive state and Bone Chill on the target before Lightning applies Electric Shock (20 seconds; −50 Water and Wind resistance). Its focused test file passed three tests. -- RoM Priest/Scout Saint's Blessing (493039) now triggers on Heal when a friendly target is below 30% health and applies its extracted +30 healing and +1% healing for 10 seconds before the triggering heal. The focused Priest/Scout runtime suites passed 12 tests across three files. +- RoM Priest/Scout Saint's Blessing (493039) now applies the current CoA +28% damage rider to player and generated-companion packets against living targets below 30% maximum health; direct and periodic damage are checked at each packet. CoA separately lists a Heal rider of +597 and +21% at skill level 105, but the local catalog has no matching Heal 493048 row or lower-rank curve. The older RuneWaker +30/+1%-for-10-seconds Heal aura remains a distinct legacy path and is not evidence for the current CoA rider. See [the source/runtime note](ROM_PRIEST_SCOUT_SAINTS_BLESSING.md). - RoM Mage rank-2 Catalysis's +50% spell haste now shortens casts/GCDs only for the RoM Mage class; rank 1 and other classes are unchanged. The focused RoM Mage runtime suite passed 10 tests. - RoM Druid now selects source-backed Nature Power branches for Fountain, Seeds, Wrath, Sandstorm, Earth Chain, Healing Wind, Poisonous Widow, Heart Piercing, and Cross of Thorns, with exact resource drain/refund behavior. Weakening Seed and Withering Seed select their RuneWaker base or empowered modifier component instead of dropping or applying both branches. Holy Fury, Extended Recovery, and Knee Ulcer also use their sourced duration/root values and passive gate. Five focused Druid/RoM suites passed 115 tests; the Seed and caster-resource follow-up passed 86 tests across five files. - RoM Warden's Will Attack passive now gates Frantic Briar's 10-second, 10% enemy damage reduction and routes it to every affected mob; all modeled incoming melee recipient paths consume the debuff. Tough Oak (494207) also reduces Warden/Mage Punch and Sepal Stab cooldowns by one second each. Briar Shield (493642) applies its sourced 900-second +5% armor aura and reflects local formula 503959's level-scaled main-hand DPS fraction on landed physical melee/ranged attacks within 50 range. Its focused runtime suite passed 15 tests. -- RoM Knight Divine Punishment stores its passive as a marker and applies the extracted 1% bonus only to Punishment damage/DoT components. Knight/Priest Holy Light's Fury (491635) now reduces Holy Seal cooldown by three seconds; its additional damage rider has no numeric payload. The current CoA patch changes the same skill identity to an 8% healing effect, so local RuneWaker values remain authoritative here. Knight periodic/mechanics suites passed 9 tests in this follow-up. The separate Light-vulnerability component remains unresolved because its extracted resistance direction conflicts with the tooltip. +- RoM Knight Divine Punishment stores its passive as a marker and applies the extracted 1% bonus only to Punishment damage/DoT components. Knight/Warrior Fearless (490088) preserves RuneWaker's +3% Strength and Stamina auras and grants 20-second Fear immunity; the misleading Fear-control tooltip marker is filtered out. Player and companion regressions passed six tests across two files. Knight/Priest Holy Light's Fury (491635) now reduces Holy Seal cooldown by three seconds; its additional damage rider has no numeric payload. The current CoA patch changes the same skill identity to an 8% healing effect, so local RuneWaker values remain authoritative here. Knight periodic/mechanics suites passed 9 tests in this follow-up. The separate Light-vulnerability component remains unresolved because its extracted resistance direction conflicts with the tooltip. - WoW Warlock Fel Synergy heals its active pet for 15% of effective spell damage at 50%/100% proc ranks; Soul Leech heals on eligible direct single-target Destruction hits with rank-scaled chance, a 15%-of-damage heal capped at 15% max health, and a 3-second cooldown. It also applies the generated −2 attack-power debuff to the hit target for 10 seconds; modeled enemy melee damage now reduces only its attack-power-derived portion while this aura is active. Eradication procs from Corruption at 15% and grants 7/14/20% cast haste for 10 seconds; Improved Shadow Bolt requires a critical Shadow Bolt and applies a 5% spell-crit vulnerability for 30 seconds. The focused Warlock suite passed 42 tests across four files. +- WoW Warlock Aftermath covers player and generated-companion Warlocks: generated ranks 18119/18120 (companion node `talent-982`) proc at 50%/100% only after a landed direct Conflagrate hit on its primary target, and the generated talent tooltip's custom payload applies a 50% movement slow for four seconds. Companion procs use a deterministic member-seeded roll. The party Conflagrate path derives its burst from that Warlock's active Immolate/Shadowflame DoT and consumes it only after a positive landed hit. This follows the project source preference; the stock [WotLKDB child 18118](https://wotlkdb.com/?spell=18118) instead gives 70% for five seconds. The party regression covers talent ranks 0 and 2, the exact burst amount, and DoT consumption. - WoW Warlock Metamorphosis now applies the generated 30-second form and its +130% armor contribution, +15% damage, −6 melee critical chance, and −25% stun/snare duration modifiers. It gates Fire/Shadow or shapeshift-safe abilities and adds Shadow Cleave, Challenging Howl, Demon Charge, and Immolation Aura; Immolation uses its local AP-reduction formula. The PvP-only +10% damage rider has no modeled player target. Four focused Warlock suites passed 39 tests. - WoW Death Knight Butchery now grants 10/20 Runic Power for eligible player killing blows at ranks 1/2, clamps to the resource cap, and ignores ineligible targets and party/pet kills. Its focused runtime test passed 15 cases. - WoW Mage Impact now uses the active rank-3 row's 4% landed direct-magic-spell proc to arm the next Fire Blast, which stuns for 3 seconds and consumes the charge on a landed cast; a miss preserves it. Impact's 3/6/9% rank damage bonus is scoped to Fire Blast and Meteor, not all Fire spells. The focused Mage/Impact suites passed 14 tests across two files. The local legacy DBC differs on proc chance and stun duration. -- WoW Priest Lightwell now maps each summoned rank to its Renew child and applies its source-backed three ticks at two-second intervals over six seconds, including rank-specific base healing and the five ranks with local spell-power coefficient rows. Its generated rank tooltip's 30%-of-max-health cancellation rule now accumulates effective HP damage separately per recipient and removes that recipient's HoT at threshold; mitigated and absorbed damage do not count. The existing 180-second duration and ten-click limit remain. +- WoW Mage Improved Fire Blast (talent-27) reduces Fire Blast's cooldown by 1/2 seconds and increases its damage against monsters by 5/10% for players and generated companions. Explicit rank modifiers prevent the mixed-unit tooltip parser from inventing values; focused Mage and party tests passed 49 tests across four files. +- WoW Priest Lightwell now maps each summoned rank to its Renew child and applies its source-backed three ticks at two-second intervals over six seconds, including rank-specific base healing and all six coefficients: the first five come from local/AzerothCore rows, while rank 6 uses 62.60% per tick from the exact WotLKDB 3.3.5a entry for child 48085. Its generated rank tooltip's 30%-of-max-health cancellation rule now accumulates effective HP damage separately per recipient and removes that recipient's HoT at threshold; mitigated and absorbed damage do not count. The existing 180-second duration and ten-click limit remain. - RoM Priest/Warlock Soul Cleansing Ceremony now gates Cleanse's curse-removal category; without the passive, Cleanse remains limited to magic, poison, and disease. Its integration regression verifies that an ally curse is removed with the pair passive. - WoW Warlock Death's Grasp now gives 1/2/3% hit to direct player ability hits and 1/2/3% spell haste to spell casts; auto-attacks and periodic ticks do not receive the hit bonus. - WoW Death Knight Anti-Magic Shell now converts actual consumed magic absorb into Runic Power (2% of absorbed damage in the modeled resource scale), respecting shell capacity and resource caps. @@ -116,11 +126,12 @@ Manifest coverage means an effect mapping exists; a graph means an original effe - RoM Mage Elemental Weakness rank 1 (490247) now applies its sourced 30-second −30 all-resistance debuff to each of the five resistance fields used by combat damage; rank 2 keeps its separate magical-defense effect. - RoM Mage/Priest Grand Dispel (492928) now makes Mage/Priest Purify remove modeled harmful magic, curse, poison, or disease effects while preserving its one-target cleanse behavior. - RoM Priest/Warlock Soul Cleansing Ceremony (498771) now lets its pair-scoped passive expand Cleanse (491175) to curses; without the passive, Cleanse remains limited to magic, poison, and disease. Eight Priest/catalog suites passed 119 tests. -- WoW Priest Lightwell now selects the matching Renew child per summoned rank and heals for three ticks at two-second intervals over six seconds, with source-backed per-tick base healing and the five sourced spell-power coefficients. Its generated tooltip's 30%-of-max-health damage cancellation now accumulates effective HP damage per recipient; fully mitigated/absorbed hits do not count. Its existing 180-second duration and ten-click limit remain. +- WoW Priest Lightwell now selects the matching Renew child per summoned rank and heals for three ticks at two-second intervals over six seconds, with source-backed per-tick base healing and all six spell-power coefficients; rank-6 child 48085 uses the exact WotLKDB 3.3.5a value of 62.60% per tick. Its generated tooltip's 30%-of-max-health damage cancellation now accumulates effective HP damage per recipient; fully mitigated/absorbed hits do not count. Its existing 180-second duration and ten-click limit remain. - WoW Warrior's Improved Whirlwind now reduces Whirlwind's cooldown by 1/2 seconds at ranks 1/2 without affecting other attacks. Battle Stance's active 10% armor-penetration aura now applies to physical attacks. Battle Shout and Commanding Shout reach party members within their source 30-yard radius. Improved Heroic Strike and Improved Execute reduce Rage costs by 2/4/6 per rank; Improved Execute damage and Unrelenting Assault damage/cooldown are scoped to the named abilities. Execute keeps its below-20% gate and rank-scaled damage instead of mapping to an instant-kill effect. The focused Warrior runtime, catalog, and talent suites passed 57 tests across three files. -- WoW Druid Improved Rejuvenation now parses its rank-scaled +7/14/20% bonus and applies it only to Rejuvenation healing. The focused talent and Druid runtime suites passed 12 tests across two files. +- WoW Druid Improved Rejuvenation parses its rank-scaled +7/14/20% bonus for player healing, and companion Rejuvenation HoTs now snapshot the same owner talent modifier when applied. The focused talent and party runtime suites passed 54 tests across two files. - WoW Druid Savage Fury now scopes its generated 4/8/12% damage bonus to all six named abilities; its dedicated regression verifies those scopes at all three ranks and excludes unrelated attacks. - WoW Druid Living Seed now stores 30% of an eligible critical heal at talent ranks' 33/66/100% proc chances, lasts 15 seconds, and blooms on the target's next landed direct hit. The runtime covers the player and party targets; the two tooltip-listed heals absent from the local WoW Druid ability catalog cannot trigger. +- WoW Druid Predatory Instincts (generated `talent-1795`, spells 33859/33866/33867) applies Aura 163's 5/10/15% increase to the bonus portion of critical damage and Aura 229's 4/7/10% reduction against area attacks; the generated “While in Cat Form” scope gates both. Local rank DBC effects provide the values, and [WotLKDB rank 2](https://wotlkdb.com/?spell=33866) confirms Cat Form and both aura types. Player and generated-companion damage paths are covered. The generic `damagePlayer` adapter lacks delivery metadata, so it cannot classify an untagged call as AoE. Predatory Instincts' “does not stack with other similar effects” clause is not independently exercised because no competing AoE-specific reduction is modeled. The focused Predatory Instincts and Master Shapeshifter regressions passed 16 tests across four files. - Companion resource restores now update only the restored resource pool, preserving the WoW Druid Cat's Energy regeneration when its companion casts Enrage. The party damage audit suite passed 15 tests. - RoM Warlock Defense Net now retains its 5-second 50% magic mitigation and grants fear, stun, root, and slow immunity to its friendly target; the runtime maps the source's Helpless category to fear because it has no distinct Helpless state. Its focused runtime suite passed seven tests. - RoM Warlock/Priest Mind Shield now shortens Defense Net to four seconds for that class pair, as its description specifies; the normal spell remains five seconds elsewhere. The Warlock runtime suite passed eight tests. @@ -135,32 +146,65 @@ These are specific, source-backed gaps that still need implementation or a gamep ### WoW -- **Hunter:** Freezing Arrow, Freezing Trap, Frost Trap, Immolation Trap, and Explosive Trap now have armed-trap runtime behavior for players and companions. Local DBC create-trap rows supply placement lifetime and trigger radius; Freezing Trap uses its local child-spell freeze duration by rank (10/15/20 seconds), and damage breaks the freeze. Companion self-placed traps are recorded at the Hunter's current position and retain their owner and learned rank; Frost Trap uses that owner's Entrapment rank, and Immolation/Explosive Trap damage uses owner level, gear, and talent values captured when the trap triggers. Frost Trap's local aura row supplies a 10-yard, 50% slow zone lasting 30 seconds with a two-second pulse; Entrapment uses generated rank slow bonuses (4/10/15%), local rank proc values (2/4/6%), and its three-second root child. Immolation Trap uses its local child-rank periodic values, five fire ticks every three seconds, and the missing numeric 2% ranged-attack-power-per-tick coefficient from [WotLKDB](https://wotlkdb.com/). Intimidation stores and consumes its next-melee proc on the pet. Beast Within follows the generated rank tooltip (50/100% proc on Bestial Wrath, six-second damage/mana riders) instead of conflicting extracted child amounts. Kill Command retains its generated 30-second pet aura, but its starting damage percentage remains unavailable: the generated tooltip says “listed amount” and the [WotLKDB row](https://wotlkdb.com/?spell=34026) exposes only a server-side dummy effect. The source's 1%-per-special-attack decay also awaits a pet-special event path. Ordinary melee hits do not consume that aura; no 60-stack or damage amount is invented. -- **Priest:** Desperate Prayer, allied Dispel Magic, party buffs, Pain Suppression threat reduction, Prayer of Mending, Divine Aegis, Surge of Light, Serendipity, Shadow Weaving, Holy Concentration, Test of Faith, Lightwell's rank-specific six-second click heal, and Pain and Suffering have focused runtime behavior. Pain and Suffering uses its generated 33/66/100% proc ranks after Mind Flay, Mind Sear, or Mind Blast and refreshes only the caster's Shadow Word: Pain on that target; the player and companion cast paths preserve the DoT payload. Spell Warding now reduces direct and periodic magic damage by its generated 1/2/3% ranks and leaves physical hits unchanged. Lightwell's generated 30%-of-max-health damage cancellation is implemented per recipient using effective HP damage; its visual remains unreviewed in live gameplay. The rank-6 Renew child (48085) has no local spell-power coefficient row. WotLKDB sibling Renew rows (including [spell 28276](https://wotlkdb.com/index.php?spell=28276)) list 62.6% per tick, while the local/AzerothCore coefficient used for the first five ranks is 33.33%; the exact rank-6 WotLKDB row was unavailable, so no sibling coefficient was inferred. -- **Death Knight:** Death Coil's friendly Undead heal, Death Strike disease-count self-heal, Anti-Magic Shell and Zone absorbs, Anti-Magic Shell Runic Power from actual absorbed magic damage, Bone Shield charges, Blood Tap rune restriction, Deathchill, Improved Rune Tap, Butchery's eligible-kill Runic Power, Rime's generated 5/10/15% Obliterate proc (Howling Blast cooldown reset and one persistent, one-use rune-free Howling Blast), Mark of Blood's generated 4%-max-health heal on landed damage (20 charges, 20-second duration), Scent of Blood, and Sudden Doom's generated 5/10/15% chance after landed Blood Strike/Heart Strike to immediately dispatch one free Death Coil at the same target have focused fixes/tests. Scent of Blood uses generated 15% proc chance after dodge, parry, or direct damage; ranks 1/2/3 grant that many melee-hit charges, each restoring 10 Runic Power. Player and party incoming-event/landed-melee paths are covered, one actual hit consumes only one charge even when the combat event has multiple damage packets, Runic Power respects its cap, and child 50421 expires after 20 seconds. Its trigger rank page [49509 on WotLKDB](https://wotlkdb.com/?spell=49509) shows the 15% proc links but no duration; the missing child duration comes from the matching 3.3.5 [spell 50421 row at WoWRoad](https://wowroad.info/?spell=50421), corroborated by [DVG's 80-level WLK record](https://80.dvg.cn/?spell=50421). Sudden Doom is covered for player and party Death Knights; the triggered player cast preserves the GCD and waives Runic Power, while party effect execution skips a second ability-use commit. Blood-Caked Blade and other conditional/pet/disease talents remain outside this pass. Populated local Hysteria talent and class spell rows disagree on its physical damage bonus (15% vs. 20%), and Dancing Rune Weapon rows disagree on the reduction to its duplicate attacks (50% vs. 10%); these conflicts remain unresolved rather than choosing one value. Spell visuals have not received a rendered class pass. -- **Rogue:** stealth/dagger gates, five-assault Killing Spree (both weapons per assault), Shadowstep, Riposte readiness, Unfair Advantage's rank 1/2 50/100% main-hand weapon-damage retaliation for player and party Rogues after dodge or parry, with a per-Rogue two-second limit, and future-only Tricks threat routing are covered. Initiative, Ruthlessness, and rank-3 Honor Among Thieves have proc hooks; Honor Among Thieves uses the Rogue's own landed direct-damage casts with a three-second limit. Shadow Walker also enables combat Sneak Attack and applies its sourced cost/cooldown changes only to the Rogue/Priest pair. Combat Potency now runs on distinct off-hand swings: ranks 1/2/3 use the local 33/66/100% chances for 5 Energy, and rank 3 reduces active Blade Flurry and Killing Spree cooldowns by one second per landed off-hand hit. Improved Kick's max-rank capstone grants 40 Energy and 35% attack speed for six seconds only after a successful interrupt, for player and party Rogues; the talent's movement-speed cap rider is not modeled because enemies have no movement-speed bonus state. The catalog has no Combat Readiness ability to receive the named reduction. Pick Pocket remains excluded from this mechanics pass. -- **Shaman:** Nature's Swiftness, Tidal Force, Healing Stream Totem, Shamanistic Rage, Ancestral Awakening, Ancestral Healing, Shamanism, rank-scaled Reverberation, Maelstrom Weapon, Elemental Oath, Improved Water Shield, Tidal Waves, and Riptide's Chain Heal rider have focused behavior. Convection now applies its generated 3/6/9/12/15% mana-cost reduction to each modeled listed spell through explicit ability scopes; the source-listed Earthquake has no local Shaman ability row. Improved Water Shield restores the rank-scaled Water Shield orb mana on eligible critical Nature heals (double chance for Healing Wave); the generated talent ranks remain authoritative. Tidal Waves grants three Chain Heal or two Riptide charges at the generated rank chance; charges reduce Healing Wave cast time or add Lesser Healing Wave critical chance, and its 4/8/12% spell-power coefficient applies to both heals. Riptide's 25% Chain Heal increase applies only to the caster's matching active Riptide HoT on Chain Heal's primary target, which is then consumed. WotLKDB child 53390 fills only Tidal Waves' missing 15-second duration. Elemental Oath (`talent-2049`) adds its generated 1/2/3 percentage points once to Shaman and party spell-damage and healing critical chance; melee and ranged critical chance are unchanged. Reverberation follows its generated rank tooltip: a successful Shock has the rank's 33/66/100% chance to arm an eight-second, 20% bonus for the next different Shock or Elemental Blast; linked child 965977 is missing, but the generated tooltip contains the implemented mechanic. Elemental Focus grants rank-scaled Clearcasting with two discounted casts and expires after 15 seconds, matching patch-D child spell 16246 and SpellDuration row 8; its focused runtime test covers expiry. Player Maelstrom Weapon follows its generated eligible-spell list, 20% cast-time reduction per stack, five-stack cap, and whole-bundle next-spell consumption. WotLKDB fills the absent 4/8/12 procs-per-minute rank rates and 30-second duration; landed player autoattacks and both generated Stormstrike weapon-hand children now use the attacking weapon's speed. Companion Maelstrom procs and per-hand attacks are not modeled. Fireball/Frostbolt are absent from the Shaman catalog, and its 2%-per-stack PvP damage reduction has no PvP runtime path. Other passives still need event-model coverage; no exhaustive class runtime or rendered VFX pass is claimed. -- **Paladin:** Redemption, Reckoning's rank-based proc and three-hit charge window, Eye for an Eye reflection/cap, Divine Storm healing, Beacon transfer, Greater Blessing fanout, Hammer of Wrath health gate, Holy Shield's shield requirement and eight source-defined block charges, Divine Sacrifice redirect cap, aura parsing, Aura Master's 10-second silence and interrupt immunity, Avenger's Shield's three-target/no-falloff chain, Redoubt, and Vindication have targeted fixes or runtime coverage. Redoubt follows generated ranks and requires a shield; its 10% block proc grants rank-scaled Strength and damage reduction. Vindication uses generated 17/34/65% rank chances and the local `4.5 × caster level − 3` attack-power reduction; WotLKDB child 67 supplies only the missing 10-second duration. The source-owned nonstacking debuff reduces the attack-power-derived portion of modeled enemy melee damage. Its capstone attack-power gain remains unresolved because the generated tooltip does not specify its amount or exact operation. Aura Master's amplification and active/UI duration/scope discrepancy also remain open. -- **Mage:** Blink root/stun clearing, Improved Scorch, Fingers of Frost, Hot Streak, Arcane Concentration/Clearcasting, Brain Freeze, Missile Barrage, active-row Impact's next-Fire-Blast stun, and Impact's 3/6/9% damage scope on Fire Blast and Meteor have focused coverage. Clearcasting follows generated 5/10/15% proc ranks, spends on the next successful Mage ability, and expires after 15 seconds (duration filled from WotLKDB). Brain Freeze follows its generated trigger ranks and applies a 15-second one-use proc that makes the next Fireball or Frostfire Bolt instant, free of Mana, and 25% stronger; Frozen Orb is absent from the learnable local catalog. Missile Barrage reads per-spell chances from its generated rank descriptions, triggers on landed direct damage from available listed spells or a successfully applied Slow debuff, and makes the next Arcane Missiles channel half as long with half-spaced pulses and no Mana cost; missing child duration comes from WotLKDB's 15-second row. Empowered Fire restores 2% of the caster's local level-based base Mana per positive Ignite tick, respects that caster's Mana cap, and grants rank 3 Living Bomb periodic criticals; its generated 7/14/20% coefficient increase is applied only to Fireball, Pyroblast, and Living Bomb for player and party Mages. Flame Throwing adds the generated 2/4/6 yards to hostile damaging-spell range without expanding healing range or AoE radius. Torment the Weak applies its generated 3/6/9% bonus only to Fireball, Frostbolt, Frostfire Bolt, Pyroblast, Arcane Missiles, Arcane Blast, and Arcane Barrage against a target with an active movement- or attack-speed slow; player and party direct/channel paths are covered. Improved Counterspell applies the generated 4/7/10-second cooldown reduction only to Counterspell and adds its generated two-second silence only after it interrupts an active cast; player and party paths are covered. Frostbite uses its generated 5/10/15% proc chance and four-second freeze for player Frost damage and now also party direct Frost hits and generated Blizzard channel pulses, using actual landed positive damage. Non-player Frost timed/area damage events have an owner-aware hook, but no learnable pure-Frost Mage ground effect currently reaches the area-tick path; no synthetic spell was added. The player path remains on the existing shared damage hook. These mechanics use generated local ranks, so no WotLKDB lookup was needed. Molten Fury suppresses its generic always-on scalar and applies the generated 6%/12% Fire, Frost, or Arcane damage bonus only below 35% target health for player direct/periodic/area damage and party direct/periodic damage; party direct damage includes same-event Sunder bonuses before multiplication, and the threshold is reevaluated per hit or tick. Arcane Orb, Moonfire, Starfire, and Starsurge are tooltip-listed but absent from the Mage catalog. The active generated Impact row (4% proc, 3-second stun) takes precedence over the legacy DBC row. Focus Magic runtime coverage applies +3% spell critical strike chance to the recipient using the generated class spell row (54646) and grants the Mage +3% for 10 seconds after that recipient lands a spell critical; the generated talent-node tooltip instead says the recipient receives +1%, so the +3% recipient value remains a documented source/UI conflict. Forward Blink movement remains unsupported while player facing is absent. -- **Warlock:** Conflagrate consumption, Shadowflame periodic damage, Seed of Corruption threshold/death explosion, Curse of Agony ramp, Soulshatter, Fel Synergy, Soul Leech healing and its generated 2-AP/10-second target debuff, Eradication, crit-gated Improved Shadow Bolt, Backlash's rank-based proc/cast rider, Death's Grasp's rank-scoped hit/haste effects, Nightfall, Metamorphosis, and RoM Ruthless Judgment's below-20% caster bonus now have focused coverage. The local talent row resolves child 900067's tooltip placeholders to −2 attack power for 10 seconds, although the child spell row itself is absent locally; WotLKDB's exact child URL is inaccessible and has no indexed search result. Its capstone text gives +30% crit after a physical hit while casting, but the generated ranks do not specify whether that rider is rank-gated or how the cast-scoped trigger is consumed, so it remains unresolved. Nightfall follows its generated rank chances, trigger list, next-ability scope, 25/50% mana discount, 20% Shadow Bolt damage rider, and five-second ICD; its missing 10-second aura duration comes from WotLKDB. Soul Link uses the populated talent tooltip rather than the conflicting dummy DBC row: it shares 6/8/10/12% of post-mitigation incoming damage with a controlled, living, in-range non-Imp demon. The transferred share bypasses absorbs and prevention, and damage beyond the demon's remaining health stays on the caster. Player, enemy-attack, and companion-target paths have tests. -- **Druid:** Eclipse, Omen of Clarity (including successful overheal events), Nature's Grace, Living Seed (33/66/100% rank proc, 30% effective-crit-heal storage, 15-second duration, and bloom on the target's next landed direct hit), Primal Fury's rank-scaled Bear/Dire Bear Rage and Cat combo-point procs, the rank-scaled Improved Rejuvenation healing bonus, Savage Fury's generated 4/8/12% damage increase to Claw, Rake, Shred, Mangle (Cat), Mangle (Bear), and Maul, and Feral Instinct have source-backed behavior. Feral Instinct applies its 10/20/30% damage bonus only to Swipe (Bear), Swipe (Cat), and Ravage; its 1/2/3% Tiger's Fury damage and Enrage damage-taken bonuses are timed to those active buffs, and positive landed damage with Swipe or Ravage reduces both cooldowns by one second. Primal Fury excludes Cat auto-attacks, periodic ticks, and non-combo abilities and caps combo points at five. Living Seed covers modeled player, party, online, and summon recipients; Flourish and Lesser Healing Wave are named in the local tooltip but absent from the WoW Druid ability catalog. Glyph of Swiftmend is configurable for the player and explicitly configured party Druids; generated companions stay unglyphed by default, and glyph preservation applies only when active. -- **Warrior:** Battle Stance armor penetration, Battle/Commanding Shout party radius, Improved Heroic Strike/Execute Rage discounts, Improved Execute's below-20% gate, rank-scaled damage and conditional crit window, Unrelenting Assault's named ability scope, Bloodthirst/Sweeping Strikes, Improved Whirlwind's 1/2-second cooldown reduction, Blood Craze, Second Wind, and Anger Management have focused behavior tests. Anger Management grants 2/4/6 Rage per three seconds; Charge gains its 5/10/15 talent bonus atop local rank Rage and rank three applies four seconds of 30% damage reduction. Blood Craze and Second Wind follow their generated rank tooltips for proc triggers and base-health healing, using WotLKDB only for missing periodic cadence details. Unbridled Wrath remains unresolved: its generated rank descriptions say 2/4 additional Rage after landed Heroic Strike, Cleave, or auto-attack damage, but both generated rank-effect rows have `procChance: 0`; rank 1 triggers child 12964, whose [WotLKDB row](https://wotlkdb.com/?spell=12964) specifies only 1 Rage, while rank 2 references child 812964, for which no local or WotLKDB row is available. Thus both the trigger probability and the rank-2 payload are missing, and the rank-1 child amount conflicts with the generated tooltip. The proc remains unimplemented rather than guessed. Other passives/procs remain incomplete. +- **Hunter:** Freezing Arrow, Freezing Trap, Frost Trap, Immolation Trap, and Explosive Trap now have armed-trap runtime behavior for players and companions. Local DBC create-trap rows supply placement lifetime and trigger radius; Freezing Trap uses its local child-spell freeze duration by rank (10/15/20 seconds), and damage breaks the freeze. Companion self-placed traps are recorded at the Hunter's current position and retain their owner and learned rank; Frost Trap uses that owner's Entrapment rank, and Immolation/Explosive Trap damage uses owner level, gear, and talent values captured when the trap triggers. Frost Trap's local aura row supplies a 10-yard, 50% slow zone lasting 30 seconds with a two-second pulse; Entrapment uses generated rank slow bonuses (4/10/15%), local rank proc values (2/4/6%), and its three-second root child. Immolation Trap uses its local child-rank periodic values, five fire ticks every three seconds, and the missing numeric 2% ranged-attack-power-per-tick coefficient from [WotLKDB](https://wotlkdb.com/). Intimidation stores and consumes its next-melee proc on the pet. Beast Within follows the generated rank tooltip (50/100% proc on Bestial Wrath, six-second damage/mana riders) instead of conflicting extracted child amounts. The current Wolf pet baseline implements level-ranked Bite, Focus cost/regeneration, distinct special and auto attacks, Call/Revive, Furious Howl, and Mend Pet targeting for players and companions; companion Hunters revive a dead pet and cast Mend Pet below 75% pet health when no HoT is pending. Local Spell.dbc rows 34026/34027 plus triggered child 58914 define Kill Command as +60% pet special-attack damage for 30 seconds, losing 20 percentage points each time a special is executed, with a 60-second cooldown; three Bites therefore use +60/40/20%, while autos leave the aura alone. The base pet table and AP/weapon formulas now match local entry 1 and TrinityCore 3.3.5. Owner stamina/ranged-AP inheritance, 12.87% ranged-AP-to-spell-damage inheritance, and Bite local coefficients of 0.119658 spell damage plus 0.07 pet AP are implemented; selectable families/utilities and pet critical inheritance remain unresolved. +- Hunter pet incoming hits now include 35% of the owner's effective armor and 40% of the owner's effective Arcane, Fire, Frost, Nature, and Shadow resistance, added to the pinned level-based pet armor/Agility profile. Player and generated-companion pets use the same shared hit path; pet-owned defense modifiers apply before mitigation, then existing damage-taken auras and absorbs. Holy inheritance remains zero because the character-stat model has no Holy resistance. This formula follows the pinned TrinityCore 3.3.5/TDB server implementation, not direct Blizzard source. Focused coverage passed 11 tests, including an owner armor aura and unchanged non-Hunter summons; see [the source/runtime note](WOW_HUNTER_PET_DEFENSE_INHERITANCE.md). +- Wolf Furious Howl uses the local ranks 24604 and 64491–64495: 20 Focus, a 20-second owner-and-pet AP buff, 40-second recovery, and no pet GCD. Its flat pet AP now contributes `rank AP × 2 / 14` damage to each two-second auto swing, following local stock [`Pet.cpp`](https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/Entities/Pet/Pet.cpp) and [`StatSystem.cpp`](https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/Entities/Unit/StatSystem.cpp). The same auto-cast and damage path covers player and party companion pets. +- Player Hunter pets now expose Attack/Follow/Stay commands, Defensive/Aggressive/Passive reaction modes, and configurable Growl autocast (off by default). Their target policy consumes an executed owner's hostile-action event, keeps a valid current victim, and respects follow/stay return movement; generated companion Wolves use Follow/Defensive defaults and receive their own owner's action events. Growl selects the local Wolf rank, spends 15 Focus, uses its 5-second category cooldown, and adds the Spell.dbc flat-threat payload to pet-owned threat without a forced-target timer. Player and generated-companion pet regressions cover owner targeting, victim locking, Growl resource/threat behavior, and the absence of a hard taunt. +- Bestial Discipline (`talent-1390`) increases the existing 5 Focus/second regeneration for the active tamed Hunter pet by the generated 50%/100% rank, yielding 7.5/10 Focus per second for player and generated-companion Hunters. The existing elapsed-time pool remains continuous because the source specifies a regeneration increase but no discrete tick; the effective rate is stored on the pet pool and remains capped. The separate Intimidation Mana-cost rider stays scoped by the talent modifier parser; companion-controlled Intimidation has a separate coverage limitation in the feature note. +- **Priest:** Desperate Prayer, allied Dispel Magic, party buffs, Pain Suppression threat reduction, Prayer of Mending, Divine Aegis, Surge of Light, Serendipity, Shadow Weaving, Holy Concentration, Test of Faith, Lightwell's rank-specific six-second click heal, and Pain and Suffering have focused runtime behavior. Pain and Suffering uses its generated 33/66/100% proc ranks after Mind Flay, Mind Sear, or Mind Blast and refreshes only the caster's Shadow Word: Pain on that target; the player and companion cast paths preserve the DoT payload. Spell Warding now reduces direct and periodic magic damage by its generated 1/2/3% ranks and leaves physical hits unchanged. Lightwell's generated 30%-of-max-health damage cancellation is implemented per recipient using effective HP damage; its visual remains unreviewed in live gameplay. Rank-6 Renew child 48085 has no local or AzerothCore `spell_bonus_data.sql` row, so its coefficient is sourced directly from [WotLKDB 3.3.5a spell 48085](https://wotlkdb.com/index.php?spell=48085): 62.60% spell power per tick. The 33.33% AzerothCore coefficient belongs to sibling rank 5 child 48084 and was not transferred to rank 6. +- **Death Knight:** Death Coil's friendly Undead heal, Death Strike disease-count self-heal, Anti-Magic Shell and Zone absorbs, Anti-Magic Shell Runic Power from actual absorbed magic damage, Bone Shield charges, Blood Tap rune restriction, Deathchill, Improved Rune Tap, Butchery's eligible-kill Runic Power, Rime's generated 5/10/15% Obliterate proc (Howling Blast cooldown reset and one persistent, one-use rune-free Howling Blast), Mark of Blood's generated 4%-max-health heal on landed damage (20 charges, 20-second duration), Scent of Blood, Sudden Doom, Blood-Caked Blade, and Epidemic have focused behavior/tests. Epidemic adds its local generated 3/6-second duration as one/two extra three-second ticks to Blood Plague and Frost Fever for players and companions. Blood-Caked Blade uses generated 10/20/30% rank chances; the local 50463 child row supplies 25% weapon damage plus 12.5% per active Frost Fever/Blood Plague from that Death Knight on the target. Player main/off-hand autos are separate rolls, companion procs use the companion's rank and disease ownership, and the triggered strike cannot critically hit. Scent of Blood uses generated 15% proc chance after dodge, parry, or direct damage; ranks 1/2/3 grant that many melee-hit charges, each restoring 10 Runic Power. Player and party incoming-event/landed-melee paths are covered, one actual hit consumes only one charge even when the combat event has multiple damage packets, Runic Power respects its cap, and child 50421 expires after 20 seconds. Its trigger rank page [49509 on WotLKDB](https://wotlkdb.com/?spell=49509) shows the 15% proc links but no duration; the missing child duration comes from the matching 3.3.5 [spell 50421 row at WoWRoad](https://wowroad.info/?spell=50421), corroborated by [DVG's 80-level WLK record](https://80.dvg.cn/?spell=50421). Sudden Doom is covered for player and party Death Knights; the triggered player cast preserves the GCD and waives Runic Power, while party effect execution skips a second ability-use commit. Desolation (`talent-2285`) now applies the generated +1/2/3/4/5% all-attack damage aura for 20 seconds after a landed Blood Strike, reading the rank from the player or party actor. Its generated rows supply 100%-chance child links 63583/66800–66803 but omit proc phase, so the landed/main-hand gate is corroborated by the [WotLK simulator handler](https://github.com/wowsims/wotlk/blob/master/sim/deathknight/blood_strike.go); the simulator models one primary Blood Strike and has no separate off-hand event. Hysteria now uses the current Area-52 talent node's +15% physical damage, 1% max-health loss per second, and 30-second duration; the separate class row's +20% damage value is superseded. Dancing Rune Weapon (49028) locally gives 60 Runic Power, instant cast, a 30-yard range, 12-second Rune Weapon and 90-second cooldown; the source-linked child 51906 reduces the weapon's damage by 50%, while the parent 10-point effect is a dummy ([WotLKDB 3.3.5a](https://wotlkdb.com/index.php?spell=49028)). Its 12-second aura now activates for players and generated companions. Both runtimes mirror eligible landed direct hostile primary-target spells and melee autos at half of the owner's pre-target-mitigation raw damage; source gates and 50% scaling have 10 helper tests, with player Death Coil/window-expiry and companion aura/Death Coil/melee integration regressions. The [AzerothCore 3.3.5-derived handler](https://github.com/azerothcore/azerothcore-wotlk/blob/master/src/server/scripts/Spells/spell_dk.cpp#L3260-L3419) supplies the spell-copy/melee-recalculation server reference and its target/utility/AoE restrictions; this is a fork handler, not stock TrinityCore behavior. Because no independent Rune Weapon stats are modeled, mirror damage reuses the owner's raw hit through the existing target damage path; periodic ticks and the separate summon actor are not modeled, and companion use remains a simulator extension. Spell visuals have not received a rendered class pass. +- **Death Knight (continued):** Bloody Vengeance (`talent-1944`) reads its 1/2/3% physical damage per stack, three-stack maximum, 15/30/30-second durations, and linked child IDs (50447/50448/50449) from generated talent ranks. It triggers only after a critical hit has dealt positive damage, and applies/refreshes a source-owned physical damage aura after the triggering hit; player and generated companion criticals are supported. Companion autoattacks and generated direct damage abilities get combat-result roll contexts when the talent is learned. Generated channel damage can trigger only when its path emits a critical result; deterministic periodic ticks without a critical result do not trigger it. No external spell database was needed. +- **Rogue:** stealth/dagger gates, five-assault Killing Spree (both weapons per assault), Shadowstep, Riposte readiness, Unfair Advantage's rank 1/2 50/100% main-hand weapon-damage retaliation for player and party Rogues after dodge or parry, with a per-Rogue two-second limit, and future-only Tricks threat routing are covered. Initiative, Ruthlessness, and rank-3 Honor Among Thieves have proc hooks; Honor Among Thieves uses the Rogue's own landed direct-damage casts with a three-second limit. Shadow Walker also enables combat Sneak Attack and applies its sourced cost/cooldown changes only to the Rogue/Priest pair. Combat Potency now runs on distinct off-hand swings: ranks 1/2/3 use the local 33/66/100% chances for 5 Energy, and rank 3 reduces active Blade Flurry and Killing Spree cooldowns by one second per landed off-hand hit. Its custom patch-D child 415010 also explicitly names Combat Readiness (86378) as a one-second recipient, but that ability is absent from the stock 3.3.5 generated catalog. Improved Kick uses the stock two-rank 50%/100% chance to silence for 2 seconds. Its max-rank capstone restores up to 40 Energy and grants 35% attack speed for 6 seconds after a successful interrupt; both effects are modeled for player and party Rogues. The generated movement-speed cap rider is intentionally ignored. Pick Pocket remains excluded from this mechanics pass. +- **Shaman:** Nature's Swiftness, Tidal Force, Healing Stream Totem, Shamanistic Rage, Ancestral Awakening, Ancestral Healing, Shamanism, rank-scaled Reverberation, Maelstrom Weapon, Elemental Oath, Improved Water Shield, Tidal Waves, and Riptide's Chain Heal rider have focused behavior. Convection applies its generated 3/6/9/12/15% mana-cost reduction to modeled Shaman spells through explicit ability scopes. Generated Shaman Convection (talent-564) mentions Earthquake, but local 3.3.5a Spell.dbc has no Earthquake SkillLineAbility assignment and the generated class catalog has no learnable Earthquake row, so no Shaman ability or cost mapping is synthesized. Improved Water Shield restores the rank-scaled Water Shield orb mana on eligible critical Nature heals (double chance for Healing Wave); the generated talent ranks remain authoritative. Improved Shields adds the generated 5/10/15% mana bonus to Water Shield orbs for player and companion Shamans. Tidal Waves grants three Chain Heal or two Riptide charges at the generated rank chance; charges reduce Healing Wave cast time or add Lesser Healing Wave critical chance, and its 4/8/12% spell-power coefficient applies to both heals. Riptide's 25% Chain Heal increase applies only to the caster's matching active Riptide HoT on Chain Heal's primary target, which is then consumed. WotLKDB child 53390 fills only Tidal Waves' missing 15-second duration. Elemental Oath (`talent-2049`) adds its generated 1/2/3 percentage points once to Shaman and party spell-damage and healing critical chance; melee and ranged critical chance are unchanged. Reverberation follows its generated rank tooltip: a successful Shock has the rank's 33/66/100% chance to arm an eight-second, 20% bonus for the next different Shock or Elemental Blast; linked child 965977 is missing, but the generated tooltip contains the implemented mechanic. Elemental Focus (`talent-574`) uses the local generated 50%/100% proc chances and 30% mana discount for the next two Fire/Frost/Nature spells or abilities; after a landed nonperiodic elemental spell critical, the player and generated-companion paths grant two charges that last 15 seconds (local SpellDuration row 8) and consume a charge at cast commitment. The new companion integration matches the existing player rules. Its focused profile and party suites passed 2 and 5 tests. Lightning Overload (`talent-1686`, rank spells 30675/30678/30679) uses [the generated local 3.3.5 rank row](../src/game/wow335Talents.generated.ts#L72628): landed direct Lightning Bolt or Chain Lightning hits use its 7/14/20% chance, tripled on critical hits (21/42/60%). Player and generated-companion paths resolve a same-target echo at half the initiating pre-defense amount, with no extra mana cost or threat; the echo gets its own hit, critical, resistance, and mitigation resolution and cannot recursively proc Overload. Since the local tooltip does not specify per-jump Chain Lightning event rules, the simulator checks each direct target hit in its existing effect loop. Companion Lightning Bolt/Chain Lightning hits now resolve Nature mechanically through `abilityDamageSchool`; the presentation-school field remains unchanged. The separate generated custom Unleashed Storm capstone rider is outside this implementation. Focused helper and player/companion integration validation passed 4 tests. Player and companion Maelstrom Weapon follow the generated eligible-spell list, 20% cast-time reduction per stack, five-stack cap, and whole-bundle next-spell consumption. WotLKDB fills the absent 4/8/12 procs-per-minute rank rates and 30-second duration. Landed player/companion autoattacks and Stormstrike hand strikes use their own weapons' speeds; party tests also cover Lava Lash's off-hand speed and eligible Lesser Healing Wave support casts. Fireball and Frostbolt are Mage spells in the local 3.3.5a catalog: Fireball ranks are assigned to Mage Fire (SkillLine 8, class mask 128) and Frostbolt ranks to Mage Frost (SkillLine 6, class mask 128), with no assignments on Shaman SkillLines 373/374/375 (class mask 64). Their mention in generated Maelstrom Weapon (talent-2057) rank text does not establish Shaman class attribution, so no Shaman rows or gameplay mappings are added. The class-line mapping comes from [the ability generator](../scripts/generate-wow335-abilities.mjs#L16-L23). Its 2%-per-stack PvP damage reduction has no PvP runtime path. Elemental Warding (`talent-1640`, local generated rank spells 28996/28997/28998) reduces owner incoming Fire/Frost/Nature damage by 2/4/6%. Its narrow rank helper ignores the separate Tethered Elemental-only clauses; both player and generated-companion incoming hits apply the school-scoped modifier after existing race/Druid multipliers. The focused 6-test helper/parser suite and 7-test player/companion integration suite pass, covering all three affected schools and unchanged physical/Arcane/Holy/Shadow hits. No Tethered Elemental actor exists, so that pet's 5/10/15% damage reduction and 50/100/150% threat bonus remain unsupported and are not applied to the Shaman or generic companions. Other passives still need event-model coverage; no exhaustive class runtime or rendered VFX pass is claimed. +- WoW Shaman Flurry (`talent-602`) now grants the actor's generated 4/6/10% melee haste after a landed direct melee critical, for the next three melee autoattack attempts across both hands. Local child Spell.dbc/SpellDuration.dbc rows supply the 15-second aura; WotLKDB's 12/18 child values conflict with the generated expanded tooltips, and rank two's raw basePoints also conflicts with its tooltip's 6%, so the implementation follows the generated tooltip values. Missed swing attempts consume a charge; a critical-triggering swing does not. Re-proc refresh behavior and same-time hand order are explicit assumptions pending stock server evidence. Player and companion integration coverage passed with the helper suite (8 tests); see [the source/runtime note](WOW_SHAMAN_FLURRY.md). +- **Paladin:** Redemption, Reckoning's rank-based proc and three-hit charge window, Eye for an Eye reflection/cap, Divine Storm healing, Beacon transfer, Greater Blessing fanout, Hammer of Wrath health gate, Holy Shield's shield requirement and eight source-defined block charges, Divine Sacrifice redirect cap, aura parsing, Aura Master's 10-second silence and interrupt immunity, Avenger's Shield's three-target/no-falloff chain, Redoubt, and Vindication have targeted fixes or runtime coverage. Redoubt follows generated ranks and requires a shield; its 10% block proc grants rank-scaled Strength and damage reduction. Vindication uses generated 17/34/65% rank chances and the local `4.5 × caster level − 3` attack-power reduction; WotLKDB child 67 supplies only the missing 10-second duration. The source-owned nonstacking debuff reduces the attack-power-derived portion of modeled enemy melee damage. Rank 3's capstone AP gain stays unwired: its current DBC effects are a reducer child plus two self-targeted DUMMY effects with no AP aura or child; the separate SLS row's 200067 link cannot be assigned to rank 3. Aura Master's amplification and active/UI duration/scope discrepancy also remain open. +- **Mage:** Blink root/stun clearing, Improved Scorch, Fingers of Frost, Hot Streak, Arcane Concentration/Clearcasting, Brain Freeze, Missile Barrage, active-row Impact's next-Fire-Blast stun, and Impact's 3/6/9% damage scope on Fire Blast and Meteor have focused coverage. Clearcasting follows generated 5/10/15% proc ranks, spends on the next successful Mage ability, and expires after 15 seconds (duration filled from WotLKDB). Brain Freeze follows its generated trigger ranks and applies a 15-second one-use proc that makes the next Fireball or Frostfire Bolt instant, free of Mana, and 25% stronger; Frozen Orb is absent from the learnable local catalog. Missile Barrage reads per-spell chances from its generated rank descriptions, triggers on landed direct damage from available listed spells or a successfully applied Slow debuff, and makes the next Arcane Missiles channel half as long with half-spaced pulses and no Mana cost; missing child duration comes from WotLKDB's 15-second row. Empowered Fire restores 2% of the caster's local level-based base Mana per positive Ignite tick, respects that caster's Mana cap, and grants rank 3 Living Bomb periodic criticals; its generated 7/14/20% coefficient increase is applied only to Fireball, Pyroblast, and Living Bomb for player and party Mages. Flame Throwing adds the generated 2/4/6 yards to hostile damaging-spell range without expanding healing range or AoE radius. Torment the Weak applies its generated 3/6/9% bonus only to Fireball, Frostbolt, Frostfire Bolt, Pyroblast, Arcane Missiles, Arcane Blast, and Arcane Barrage against a target with an active movement- or attack-speed slow; player and party direct/channel paths are covered. Improved Counterspell applies the generated 4/7/10-second cooldown reduction only to Counterspell and adds its generated two-second silence only after it interrupts an active cast; player and party paths are covered. Frostbite uses its generated 5/10/15% proc chance and four-second freeze for player Frost damage and now also party direct Frost hits and generated Blizzard channel pulses, using actual landed positive damage. Non-player Frost timed/area damage events have an owner-aware hook, but no learnable pure-Frost Mage ground effect currently reaches the area-tick path; no synthetic spell was added. The player path remains on the existing shared damage hook. These mechanics use generated local ranks, so no WotLKDB lookup was needed. Molten Fury suppresses its generic always-on scalar and applies the generated 6%/12% Fire, Frost, or Arcane damage bonus only below 35% target health for player direct/periodic/area damage and party direct/periodic damage; party direct damage includes same-event Sunder bonuses before multiplication, and the threshold is reevaluated per hit or tick. The catalog attribution check is complete: Moonfire and Starfire are Druid ranks (local class skill line 574); Arcane Orb DBC rows 34172/34190 are not mapped to a player class or talent; Frozen Orb and Starsurge have no named row in the local 3.3.5a Spell.dbc. WotLKDB's Frozen Orb 72082 row has no Mage class/trainer attribution, so none of these tooltip references warrants a Mage catalog addition or remap. The active generated Impact row (4% proc, 3-second stun) takes precedence over the legacy DBC row. Focus Magic now takes its recipient +1% spell critical-chance value and tooltip from generated talent node 2211, while its separate +3%/10-second Mage proc remains unchanged; the older enUS ability row 54646 recipient +3% is superseded. Shatter (talent-67) adds generated +17/34/50 percentage points of critical chance to nonperiodic Mage spell hits against frozen targets, including Fingers of Frost, for players and party Mages. Forward Blink movement remains unsupported while player facing is absent. +- **Warlock:** Conflagrate consumption, Shadowflame periodic damage, Seed of Corruption threshold/death explosion, Curse of Agony ramp, Soulshatter, Fel Synergy, Soul Leech healing and its generated 2-AP/10-second target debuff, Eradication, crit-gated Improved Shadow Bolt, Backlash's rank-based proc/cast rider, Death's Grasp's rank-scoped hit/haste effects, Nightfall, Metamorphosis, and RoM Ruthless Judgment's below-20% caster bonus now have focused coverage. The local talent row resolves child 900067's tooltip placeholders to −2 attack power for 10 seconds, although the child spell row itself is absent locally; WotLKDB's exact child URL is inaccessible and has no indexed search result. Its capstone text gives +30% crit after a physical hit while casting, but no generated rank links the unlearnable patch-D helper rows 830297–830299 (a one-charge current-cast buff and cast-finish cleanup); the incoming-hit trigger, rank gate, and consumption behavior remain unestablished, so the rider stays unwired. Nightfall follows its generated rank chances, trigger list, next-ability scope, 25/50% mana discount, 20% Shadow Bolt damage rider, and five-second ICD; its missing 10-second aura duration comes from WotLKDB. Soul Link uses the populated talent tooltip rather than the conflicting dummy DBC row: it shares 6/8/10/12% of post-mitigation incoming damage with a controlled, living, in-range non-Imp demon. The transferred share bypasses absorbs and prevention, and damage beyond the demon's remaining health stays on the caster. Player, enemy-attack, and companion-target paths have tests. +- **Druid:** Eclipse, Omen of Clarity (including successful overheal events), Nature's Grace, Living Seed (33/66/100% rank proc, 30% effective-crit-heal storage, 15-second duration, and bloom on the target's next landed direct hit), Primal Fury's rank-scaled Bear/Dire Bear Rage and Cat combo-point procs, the rank-scaled Improved Rejuvenation healing bonus, Savage Fury's generated 4/8/12% damage increase to Claw, Rake, Shred, Mangle (Cat), Mangle (Bear), and Maul, and Feral Instinct have source-backed behavior. Feral Instinct applies its 10/20/30% damage bonus only to Swipe (Bear), Swipe (Cat), and Ravage; its 1/2/3% Tiger's Fury damage and Enrage damage-taken bonuses are timed to those active buffs, and positive landed damage with Swipe or Ravage reduces both cooldowns by one second. Primal Fury excludes Cat auto-attacks, periodic ticks, and non-combo abilities and caps combo points at five. Living Seed covers modeled player, party, online, and summon recipients. The catalog references were verified: Lesser Healing Wave is a Shaman spell in stock 3.3.5, while Flourish appears only in the custom Ascension class-11 catalog, so neither is missing from the stock Druid catalog. Glyph of Swiftmend is configurable for the player and explicitly configured party Druids; generated companions stay unglyphed by default, and glyph preservation applies only when active. Nature's Reach (talent-764) adds +2/4/6 yards to cast-time/channel damaging spells for players and generated companions; instant damage and healing receive no range bonus. Master Shapeshifter (talent-1915) now applies its generated 2/4% bonus only for the active Bear, Cat, Moonkin, or Tree form, covering player/companion damage and critical chance plus direct/periodic healing paths. +- **Warrior:** Battle Stance armor penetration, Battle/Commanding Shout party radius, Improved Heroic Strike/Execute Rage discounts, Improved Execute's below-20% gate, rank-scaled damage and conditional crit window, Unrelenting Assault's named ability scope, Bloodthirst/Sweeping Strikes, Improved Whirlwind's 1/2-second cooldown reduction, Blood Craze, Second Wind, Anger Management, and Damage Shield have focused behavior tests. Damage Shield reflects the generated 10/20% of the Warrior's resolved block value after a landed direct melee hit, for both players and generated companions. Anger Management grants 2/4/6 Rage per three seconds; Charge gains its 5/10/15 talent bonus atop local rank Rage and rank three applies four seconds of 30% damage reduction. Blood Craze and Second Wind follow their generated rank tooltips for proc triggers and base-health healing, using WotLKDB only for missing periodic cadence details. Unbridled Wrath (`talent-159`) grants the generated 2/4 Rage on landed, damaging main-hand melee autoattacks at the upstream [WotLK Simulator](https://github.com/wowsims/wotlk/blob/master/sim/warrior/talents.go)'s 3 procs-per-minute-per-rank rate, using each Warrior's own un-hasted weapon speed. Player and companion procs are covered; Warrior off-hand autos are not modeled. The generated tooltip takes precedence over the conflicting child payloads (12964/812964). Improved Victory Rush now uses the generated 33/66/100% parry chances, 10-second window, 12-second internal cooldown, +20/40/60 percentage points of critical chance, and +33/66/100% threat while using the parry window; base Victory Rush also opens for 20 seconds after an XP-yielding kill. Player and generated companion casts require and consume readiness. Critical Block (`talent-1893`) applies its generated 8/16/25% additional reduction to successful blocks for players and generated companions, except against player attackers and with Touched by the Light (`talent-2195`); the conflicting stock double-block chance is not used. Improved Defensive Stance applies its generated stance mitigation and avoidance-triggered Enrage proc for both paths. ### RoM -- **Warrior:** Survival thresholds, weapon requirements, three-hit Moon Cleave, several Slash/state riders, and Warrior/Priest Defender's Roar party max-health effects have focused fixes. Warrior/Scout Calm now adds +20 physical hit for 15 seconds after failed Skull Breaker, following the populated RuneWaker passive/component values. Druid/Warrior Briar Technique now gains up to five +3% Physical Attack/+3% Wisdom stacks for 15 seconds on landed Natural Attack or Heart Piercing hits while its passive is learned; the local child payload is duplicated on those two skills, so the implementation scopes the proc to those source-backed triggers. The [current CoA Druid/Warrior page](https://chroniclesofarcadia.com/en/wiki/skills/list/8-1) names Cross Thorn Blow (494018) as a third trigger, but the matching RuneWaker ability row is absent; its locally referenced child 499956 is also missing, so no third trigger has been inferred. The current CoA [Warrior/Knight page](https://chroniclesofarcadia.com/ja/wiki/skills/list/1-6) identifies local Heroic Surprise Attack (492661) as Heroic Charge Attack; Resist (493251) now references Blocking Stance 493287, while RuneWaker has active Blocking Stance 491480, and the Wiki omits Resist's Rage chance/amount. Recovery of Life (494377) is now Rage of Calmness with an unquantified rider on the [Warrior/Druid page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-8). The [Warrior/Rogue page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-3) gives Exhaustion (493248) a 30% chance to return 25 Energy and 50 Rage on current Probing Attack 493283, but RuneWaker maps the trigger to primary Warrior Probing Attack 491133 and describes player-only target-resource drain. The [Warrior/Warlock page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-9) now describes Speed Slash (499827) as increasing Slash damage and reducing its Rage cost by 10, and Excellent Combat Training (499806) as +20% Physical Damage; these conflict with RuneWaker's cooldown-reset references to missing rows 499828, 499825, and 499826. No conflicting Wiki payloads were imported pending identity/version confirmation. -- **Scout:** Ranged Weapon Mastery's bow/crossbow accuracy now affects ranged hit chance only; Poisonous Spit requires Poison Powder; Accurate Targeting grants its source-backed buff and cooldown; and Scout/Priest Sniper reduces Snipe's cast time by one second. Scout/Warrior Enhanced Throat Attack and Rogue/Scout Slit Throat now silence a target for four seconds after a landed Throat Attack; Enhanced Throat Attack's extra range is unquantified in local data. The [current CoA Scout skills page](https://chroniclesofarcadia.com/wiki/skills/list/2-6?locale=en) confirms ranged-weapon requirements for Shot, Joint Blow, Vampire Arrows, Wind Arrows, and Autoshot; the combat validator now enforces those requirements, with player and companion rejection covered for Scout secondary skills without a ranged slot. Drums of War (493010) now triggers for the learned Scout/Priest build after a landed ranged Shot (490423), applying RuneWaker's +20 physical/magical critical-strike modifiers for 8 seconds to living party members within 50 yards. Each caster has a separate 15-second cooldown. RuneWaker describes the recipients as nearby party members but omits the radius; the [CoA Scout/Priest page](https://chroniclesofarcadia.com/en/wiki/skills/list/2-5) supplies range 50 and was used only for this missing detail. Player, party-caster, cooldown, and range behavior have focused regressions. The newer CoA critical-damage rework was not imported. Natural Poison Powder acquisition for Scout/Rogue remains unavailable in the loadout model. Pet crit/dodge/damage passives remain unsupported because summons expose no pet-specific stats or event path; other paired passives still need review. -- **Rogue:** Dagger Mastery, Treasure Hunter, Weakened Soul Stab, rear-position gates, Sneak Attack's out-of-combat gate, resource gates, Rogue/Priest Shadow Walker, and Rogue/Mage Day of Rain's Throw cooldown and Enchanted Throw hit-rate interaction have targeted behavior. Rogue/Priest Sinister Methods now grants +20 physical critical strike for 10 seconds on landed Low Blow or Blind Spot hits, including critical hits, with a 20-second cooldown; the passive is only a marker until one of those hits lands. Instant Shadow (497206) now arms after a successful dodge and can be activated for the local child 502597's three-second stealth. Enchanted Throw (491178) now adds the referenced generated Throw (490309) damage on landed Rogue/Mage melee auto-attacks; the hidden 491185 child payload is absent, so the runtime reuses the local Throw damage type/calculation. Projectile ammunition is not modeled. Off Hand Mastery (490143) remains unsupported because RoM off-hand swings are not modeled; local component 620335 carries its damage/accuracy modifiers, while the [current CoA Rogue page](https://chroniclesofarcadia.com/en/wiki/skills/list/3-1) reports later level-55 values that were not copied into the RuneWaker model. +- **Warrior:** Survival thresholds, weapon requirements, three-hit Moon Cleave, several Slash/state riders, and Warrior/Priest Defender's Roar party max-health effects have focused fixes. Warrior/Scout Calm now adds +20 physical hit for 15 seconds after failed Skull Breaker, following the populated RuneWaker passive/component values. Druid/Warrior Briar Technique now gains up to five +3% Physical Attack/+3% Wisdom stacks for 15 seconds on landed Natural Attack or Heart Piercing hits while its passive is learned; the local child payload is duplicated on those two skills, so the implementation scopes the proc to those source-backed triggers. The [current CoA Druid/Warrior page](https://chroniclesofarcadia.com/en/wiki/skills/list/8-1) names Cross Thorn Blow (494018) as a third trigger, but the matching RuneWaker ability row is absent; its locally referenced child 499956 is also missing, so no third trigger has been inferred. The current CoA [Warrior/Knight page](https://chroniclesofarcadia.com/wiki/skills/list/1-6?locale=en) identifies local Heroic Surprise Attack (492661) as Heroic Charge Attack. It keeps Resist at 493251 and lists the distinct level-50 Blocking Stance upgrade at 493287; current CoA says Resist grants +80% Aggro and +20% received physical-damage reduction while that stance is active. Patch 11.1.1 introduced the aggro effect (current value supersedes the older +75.6% patch text), and patch 12.1.3 says the missing damage-reduction effect was fixed. Blocking Stance and Resist are now cataloged and integrated separately for player and generated-companion incoming hits and threat, gated by each learned passive plus active local Blocking Stance 491480. Blocking supplies +8% Parry, −18.9% damage taken, and +75.4% Aggro; Resist supplies +80% Aggro and −20% physical damage taken. The two Aggro factors remain individually modeled but their overlap is neutral/unmodeled until a stacking rule is sourced. The 3-Rage proc and 10-second lockout are retained as tooltip information only because the proc chance is unspecified. Recovery of Life (494377) has a pair/learned-passive-gated runtime helper for current CoA Rage of Calmness: local RuneWaker values provide −10 Rage and −10 seconds to modeled Whirlwind 490133, applied for both player casts and generated companions. Component 506368 supplies the 20-second post-hit window. CoA confirms the effect directions but points to Whirlwind 494939; the ID mismatch is documented. Its general post-hit Rage reduction stays unwired because neither source quantifies it. Source: [CoA Warrior/Druid page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-8). Current CoA [Warrior/Rogue](https://chroniclesofarcadia.com/en/wiki/skills/list/1-3) confirms Exhaustion's (493248) identity and passive Whirlwind reductions. The runtime now restores 25 Energy and 50 Rage with a deterministic 30% chance after landed pair Probing Attack 493283, only when Exhaustion is learned; player cast-path coverage and a capped generated-companion hook regression are included. Its separate catalog row uses 664.3% main-hand weapon DPS, or 1116.9% with caster-owned Bleed or the locally represented two-handed mace/hammer. The unspecified hammer cooldown rider is not modeled. Local primary-Warrior Probing Attack 491133 remains distinct. The earlier audit claim that 493248 was Morale Slash and 493283 Exhaustion was incorrect: the current page lists 493248 as Exhaustion and Morale Slash as 1491760. The [Warrior/Warlock page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-9) describes Speed Slash (499827) as increasing Slash damage and reducing its Rage cost by 10, and Excellent Combat Training (499806) as +20% Physical Damage. Runtime already models the known −10 Rage cost and +20% Physical Damage; it leaves Speed Slash's unquantified damage increase and RuneWaker's unsupported cooldown-reset references alone. Generated tooltips now state the supported −10 Rage and +20% Physical Damage effects without restoring the unsupported cooldown resets. +- **Scout:** Ranged Weapon Mastery's bow/crossbow accuracy now affects ranged hit chance only; Poisonous Spit uses its landed-hit triggers and RuneWaker item 200563 Poison Powder as an unlimited carried reagent, without the separate Rogue Poison Bottle aura; Accurate Targeting grants its source-backed buff and cooldown; and Scout/Priest Sniper reduces Snipe's cast time by one second. Scout/Warrior Enhanced Throat Attack and Rogue/Scout Slit Throat now silence a target for four seconds after a landed Throat Attack. Hash-matched local RuneWaker rows do not quantify Enhanced Throat Attack's extra range or link a range modifier to Throat Attack; the passive's own range field 5 is cast-distance metadata, not an additive range bonus. The [current CoA Scout skills page](https://chroniclesofarcadia.com/wiki/skills/list/2-6?locale=en) confirms ranged-weapon requirements for Shot, Joint Blow, Vampire Arrows, Wind Arrows, and Autoshot; the combat validator now enforces those requirements, with player and companion rejection covered for Scout secondary skills without a ranged slot. Current CoA Drums of War (493010) replaces RuneWaker's +20 physical/magical critical-strike rating payload: after a landed local ranged Shot 490423 (the CoA same-name/role Shot is 493011), it grants +20% critical damage for 15 seconds to the living party within modeled range 50. Another 15-second post-expiry lockout makes the next proc ready 30 seconds after activation. The shared player/companion critical resolver adds this to the critical bonus portion, preserving crit chance and ordinary hits; it adds with the Warlock/Priest +25% critical bonus for party actors that have both auras. Current CoA Screen Attack (499555) replaces the local passive marker with an active 17.4% damage buff for 20 seconds and a 60-second cooldown. The current skill page's +55 is skill training, so the simulator applies the max-row value at all character levels. Its radius 150 is modeled as 15 project units; recipients follow the existing living-party, 3D-radius, and line-of-sight checks. Patch 11.1.1 states 30 seconds, but the current CoA skill row states 20; runtime follows the current row and uses the patch only for periodic-damage coverage. Player and generated-companion tests cover activation, recipients, direct/periodic damage, expiry, and cooldown. Priest/Scout Curing Shot (492636) now uses the current CoA instant cast, 6-second cooldown, +105 heal values, uncapped modeled-party fan-out, and caster-only +10% subclass-defined Elemental Damage. The Priest/Scout kit is water-themed, so the simulator maps this buff to its `frost` Water analogue only; fire/nature/arcane/holy/shadow/physical remain unchanged. Its 120 MP local cost is preserved because no lower-rank CoA cost is published. See [the source/runtime note](ROM_PRIEST_SCOUT_CURING_SHOT.md). The generic damage resolver now filters expired dealt-damage auras at the timestamp boundary, which makes timed party buffs stop affecting the exact expiry-time hit. Pet crit/dodge/damage passives remain unsupported because summons expose no pet-specific stats or event path; other paired passives still need review. +- Scout/Knight Enhanced Armor Perfection (492346) sets Enhanced Armor's duration to the 600 seconds stated by local component 501823. Scout/Priest Sniper (492344) now reduces Snipe's cast by one second for both players and generated party Scouts. +- **Rogue:** Dagger Mastery, Treasure Hunter, Weakened Soul Stab, rear-position gates, Sneak Attack's out-of-combat gate, resource gates, Rogue/Priest Shadow Walker, and Rogue/Mage Day of Rain's Throw cooldown and Enchanted Throw hit-rate interaction have targeted behavior. Rogue/Priest Sinister Methods now grants +20 physical critical strike for 10 seconds on landed Low Blow or Blind Spot hits, including critical hits, with a 20-second cooldown; the passive is only a marker until one of those hits lands. Instant Shadow (497206) now arms after a successful dodge and can be activated for the local child 502597's three-second stealth. Enchanted Throw (491178) links its buff component 501279 to hidden physical child 491185, also described by passive 491184. Child component 502595 combines skill-scaled main-hand DPS and `Throw_DMG`; component 502596 grants 10% physical and magic damage reduction for four seconds. RuneWaker C++ source defines these terms, but Healer Man does not have the native `Main_DMG`/`Throw_DMG` derivation or `CalPhyDamage` mitigation inputs. Player and companion incoming-hit branches are present in `combatStore.ts`; no child counterattack hook has been added. The mechanic remains unresolved, and the existing player outgoing Throw (490309) fallback stays in place. Projectile ammunition is not modeled. Off Hand Mastery (490143) now applies RuneWaker component 620335's +4% off-hand damage and +4 percentage-point accuracy modifiers to player and companion off-hand swings. RoM Rogue autoattacks use separate hand timing; companion main-hand hits also use the dual-wield hit table when an off-hand weapon is equipped. Focused regressions cover player and party swing behavior. The [current CoA Rogue page](https://chroniclesofarcadia.com/en/wiki/skills/list/3-1) reports later level-55 values that were not copied into the RuneWaker model. - RuneWaker Numbing Dagger (490347) supplies a 10-second creature sleep (500737) and a separate 3-second player sleep (503046). `applyStatus` now selects the local duration by defender kind for player casts, companion casts, and the lower-level control action; focused regressions cover NPC and character-defender targets. +- Rogue/Scout Coerce (493019) now follows the current [CoA skill entry](https://chroniclesofarcadia.com/en/wiki/skills/list/3-2): Low Blow deals 20.2% more damage and costs 5 fewer Energy. The Wiki says “lesser energy cost” without a number, so the implementation keeps only the compatible −5 amount in the RuneWaker tooltip; it removes RuneWaker's below-30%-health temporary +2% Physical Damage proc because CoA defines a different direct Low Blow modifier. Both player and generated-companion casts are covered. Focused Rogue mechanic, pair validation, and party ability tests passed (98 total); the TypeScript no-emit check passed. - **Rogue/Champion Nerve Gear:** RuneWaker passive 498839 (child 621652) now remains a learned marker; each successful non-passive Rogue/Champion elite-skill cast grants +5% attack speed and +2 dodge for 5 seconds, stacking to five. Player and party hooks apply once per cast, including area casts. - **Rogue Poison:** RuneWaker Poison (490329) component 500715 specifies a 50% normal-attack trigger to child 490357. Its local tooltip supplies a four-stack cap and a 2% reduction to target damage per stack. Player and party landed normal attacks now apply source-owned stacks when that Rogue has learned Poison and its self aura is active; the common enemy-hit consumer applies the debuff to melee, ranged, and spell damage. The hidden child has no local duration row, so only its missing 900-second duration is taken from the [current CoA Rogue skills page](https://chroniclesofarcadia.com/en/wiki/skills/list/3-1); its conflicting 8% reduction and attack-speed rider are excluded. -- **Priest:** Knight/Priest Holy Smite now heals and consumes Holy Seals correctly; Holy Protection applies its alternate threat payload as intended; Priest/Knight Holy Power applies RuneWaker's +60 Wisdom and +1% Wisdom for 20 seconds, ending after three successful casts of Heal; Priest/Mage Enlightenment now triggers when the Priest/Mage caster completes Heal (490261), grants +1% Wisdom for 8 seconds, and uses a per-caster 20-second internal cooldown in player and party paths; its generated passive aura is suppressed at startup. Lightning Rod requires the sourced Bone Chill target state; Priest/Scout Saint's Blessing uses its friendly-target health threshold; Priest/Warrior Battle Monk Stance gates five stance-dependent abilities for player and companion paths; Priest/Warlock Prayer of Tribulation has focused runtime coverage; and Soul Cleansing Ceremony conditionally extends Cleanse to curses. Blessed Spring Water (490298), Embrace of the Water Spirit (491323), and Shadow Fury (492932) now apply their source-described modifier auras to the party; Embrace's separate periodic proc remains caster-only. Infused Light Chain (498610) locally says it increases Chain of Light damage, removes its cooldown, and can add Rage on hits, but the generated passive has no source components: the trigger chance, Rage amount, and damage increase are all missing. Chain of Light (491164) itself has a local 6-second cooldown, and the existing override removes that cooldown when the passive is learned. The [current CoA Priest/Champion record](https://chroniclesofarcadia.com/en/wiki/skills/list/5-10) reuses ID 498610 for a differently named Rage Control passive that grants 20 Rage per second of spell channeling; because that is a conflicting later payload rather than a matching source for the local on-hit effect, no chance, Rage amount, or damage bonus was inferred from it. Protection Rune Seal (498613) now attaches a hidden monitor to Regenerate and uses its local 8% chance to reset Heart Rune Energy on a successful periodic tick, including the final tick before expiry; the healing-strength rider remains unquantified. Current CoA records also conflict with local RuneWaker IDs/names or payloads for Priest/Champion 498612 and Priest 490274–490276; those records were not used to remap the local catalog. Other conditional/passive mechanics still need review. -- **Knight:** Divine Punishment's 1% damage modifier is now limited to Punishment instead of applying globally; Knight/Priest Holy Light's Fury applies the local 3-second Holy Seal cooldown reduction. Disregard Danger (493273) now redirects 40% of one ally hit for 10 seconds, consumes the redirect after the first hit, and gives the caster +20 Parry for 10 seconds; its integration test verifies the 40/60 split and that the next hit is unredirected. Master of Parry (492935) applies the generated +5,000 Parry modifier for 15 seconds and consumes it after two successful blocks; the hidden periodic trigger now shares the source 15-second lifetime. Its runtime test forces real block events and verifies the charge countdown/removal. Shield of Valor (490468) now reduces a party Knight's Holy Seal cooldown by 1 second on each parry while its local 15-second aura is active; the deterministic regression covers active-parry, expired/inactive-parry, and active non-parry controls. War Prayer (490078) schedules six personal Holy Seal increments at 3-second intervals over 18 seconds, and its regression test verifies Punishment consumes the earned stacks. Local child 490079 is absent; the current CoA [skill entry](https://chroniclesofarcadia.com/en/wiki/skills/list/6-1) and [fix patch](https://chroniclesofarcadia.com/patch/10-4-1-1000) corroborate the personal Seal mechanic. Deadly Whirlwind (491639) now applies its local 10-Rage/20-second reductions to Warrior Whirlwind (490133) in player and party casts; paired passive lookup is scoped to a learned Knight/Warrior build. Focused regressions verify both paths, including the party cast at 40 Rage against Whirlwind's 50-Rage base cost. Its 10-second healing-reduction rider is not inferred because its local trigger/child attribution is absent. God's Sword (491621) has an isolated helper and regression that scopes the local 40% critical-hit-rate value to Holy Strike (490148) and the Knight/Rogue pairing, but landed-damage integration remains unresolved: the local tooltip says only “increased by 40%” and the RuneWaker passive row has no extracted components or numeric modifier. The current combat resolver interprets added critical chance as percentage points; the local data does not establish whether this is +40 points or a 40% relative increase to Holy Strike's existing critical chance. The current [CoA 10.6.1 patch](https://chroniclesofarcadia.com/en/patch/10-6-1-1000) describes a later active/offhand-DPS version of God's Sword that conflicts with the local passive tooltip and cannot resolve the older value's semantics, so that later behavior was not imported. Some other periodic/triggered spell references do not resolve. Holy Light's Fury's extra damage value is absent, and the current CoA page describes a later, conflicting healing version. Throw Shield and Shield Bash require an equipped shield, and Arrow of Vengeance enforces its ranged-weapon requirement. Light-vulnerability remains ambiguous between tooltip and extracted resistance component. -- **Warden:** Nature Crystal immunity, Heart of Oak/Crystalline absorbs, Awakened immunity/next-crit behavior, Nature Power scaling for Healing Ripple/Gift Pulse, Spirit of Life party HoT, Mysterious Grace party scope, Will Attack's Frantic Briar debuff, Damage Transfer's 30% split to a live nearby pet, Tough Oak's one-second Punch/Sepal Stab cooldown reductions, and Briar Shield's sourced 900-second +5% armor aura plus level-scaled physical reflection have focused fixes. Briar Shield uses RuneWaker's local formula for main-hand DPS reflection on landed physical melee/ranged attacks within 50 range; newer Wiki trigger/stat behavior was not imported. Tough Oak's pet-defense rider has no pet-stat model. Oak Blessing (494011) now activates RuneWaker component 620679's +5% physical attack aura and 1%-maximum-HP healing every three seconds only during Heart of the Oak's 60-second duration. Three gaps remain source-limited: Damage Transfer (493399) component 503942 references missing child 493416 via `onHitMagicId` and has 10-second duration/30% modifiers, while the tooltip references local component 503643 with 15-second duration; no child payload exists in the generated catalog, and the [current CoA Warden page](https://chroniclesofarcadia.com/en/wiki/skills/list/7-2) has no matching child details and describes a conflicting version. Revival (499542) references missing state 499544; its only extracted component, 623078, contains no numeric payload. The [current Rogue/Warden page](https://chroniclesofarcadia.com/en/wiki/skills/list/3-7) reuses ID 499542 for Wood Spirit's Will and ID 494043 for Blood Hound, so those later entries do not match local RuneWaker Revival or Weak Point Strike. Weak Point Strike's two local damage components (620294/620295) preserve base and bonus hit formulas but contain no extra-hit proc chance; do not invent one. Other reactive passives remain incomplete. -- **Mage:** rank-1 Catalysis mana ticks, rank-2 Catalysis cast haste, Phoenix's 12-target cap, Control Flame, Flame Follower's Fireball cooldown rider, and rank-1 Elemental Weakness's all-resistance debuff are covered. Elemental Extraction's critical triggers now match its RuneWaker tooltip. Meditative Current now suppresses the generic always-on passive payload and applies its source-complete rule (landed Flame 491150 or Plasma Arrow 491169, +10 spell haste for 10 seconds, 30-second internal cooldown) to player and party Mage casters, with an independent cooldown marker per caster and focused runtime coverage. Mage/Knight Light of Day (493034) now suppresses its generic passive aura and grants +8% Holy damage for 15 seconds only after a landed direct Holy Light Strike (491594) or Light Charge (492634) hit, with an independent 20-second cooldown per caster; player and party regressions cover both triggers, startup suppression, and cooldown behavior. Fireball 490204 is intentionally excluded by the local tooltip. Eruption's local passive row (490221) has no proc chance or effect payload. Party Mage casts now receive the same deterministic proc roll and existing 10% damage-doubling behavior as player casts, but this only establishes runtime parity. The current CoA entry for the same spell ID confirms the identity and Fireball/Flame triggers but has no numeric payload; CoA patch 10.2.1 reports a later 30% proc chance (up from 10%) and Eruption damage increased to 200%, without confirming that patch values match this RuneWaker snapshot or defining whether 200% is a separate proc hit or multiplier. Those later values and the damage interpretation remain unimported and unverified. Rank 2's source payload has no mana tick; Flame Follower's crit amount is absent from source components. -- **Druid:** Spirit of Life party HoT, Unity's guaranteed spell crit/healing and 15-second movement lock, Spirit Guidance's Nature Power gain, Savage Blessing's friendly target, Healing Arrows, source-backed Nature Power selection/spending for Fountain, Seeds, Wrath, Sandstorm, Earth Chain, Healing Wind, Poisonous Widow, Heart Piercing, and Cross of Thorns, plus Brilliance of Nature's 10-to-15 dynamic cap for the player and companion, have focused fixes. Weakening Seed and Withering Seed select exactly one local RuneWaker modifier branch per cast; each component maps to its own 20-second −2% target debuff. Caster-directed Nature Power drains are now distinct from hostile-target resource steals, preserving the source ordering for spends and refunds. Mage/Druid Green Guardian retains both local HoT components and, on either Mother Earth's Protection rank expiring, heals the protected recipient for five ticks at two-second intervals. Player and companion casters are covered. Charm faction conversion and Rebirth's debt reductions have no corresponding simulator state; hostile player targets are unsupported, so Necrotic Wound's player-only 10-second healing reduction cannot be applied or tested. Local passive proc probabilities remain unavailable on Revival Slash, Quick Light Protection, Boiling Rock, Inspiration, Inspiration Display, Avalanche, Extended Recovery, and Spring Flower Eulogy; the current CoA Inspiration/Recovery descriptions conflict with the local trigger behavior, so no later proc rates were imported. -- **Warlock:** Mind Transference's Rage-to-psi conversion, Heart Fence's full Rage consumption and duration scaling, Heart Strike gate, Crime and Punishment refresh/scaling, Liquidation Suffering target scopes, named cooldown resets, Defense Net's magic mitigation/control immunity, and Mind Shield's pair-scoped duration reduction have focused behavior. Helpless currently maps to fear in the runtime. Breathing Control and several Priest-pair passives lack proc probabilities or complete event details; hidden child 499869 and End of Thought's tick interval are absent. Current [CoA Warlock/Warrior](https://chroniclesofarcadia.com/en/wiki/skills/list/9-1) and [Warlock/Priest](https://chroniclesofarcadia.com/en/wiki/skills/list/9-5) records conflict with RuneWaker values and IDs for Mind Transference, Deep Breathing Control, Divine Assistance, and related triggers; those were preserved. -- **Champion:** Fearless Blow's health/Rage gate, Rune Draw pull, Indomitable Spirit threshold, cooldown-reset scopes, rank-1 Forge trigger, Rune Pulse's 5 Rage on landed hit, Champion/Warrior Determination Rune's 30%-max-HP shield, and Rune Overload's local 15-Rage-per-second drain and zero-Rage termination have focused fixes. Soul Forge Mystery activates its sourced +10% Shadow damage bonus for 10 seconds after a critical hit, while its five-minute physical-critical aura remains active. Way of Frenzy now grants +2% Stamina per landed Divine Vengeance hit, stacking to five for 60 seconds; its local tooltip and component supply the trigger, stack cap, modifier, and duration. Shield Form has no player-learnable source skill; Forge rank-2, Chain Drive, Dark Energy Strike, and other proc chances are absent or incomplete. The current [CoA Champion/Rogue skills page](https://chroniclesofarcadia.com/en/wiki/skills/list/10-3) reuses Rune Overload's identity with newer values/behavior, so local RuneWaker values were retained. +- **Priest:** Knight/Priest Holy Smite now heals and consumes Holy Seals correctly; Holy Protection applies its alternate threat payload as intended; Priest/Knight Holy Power applies RuneWaker's +60 Wisdom and +1% Wisdom for 20 seconds, ending after three successful casts of Heal; Priest/Mage Enlightenment (492933) follows current CoA as a permanent +12% Wisdom passive for the same Priest/Mage pair, replacing RuneWaker’s completed-Heal (490261) +1% Wisdom for 8 seconds and its 20-second internal cooldown; the catalog tooltip matches CoA, and the player passive synchronizer applies the permanent aura on build initialization/update while generated companions apply the learned self-passive before their first RuneWaker cast. Lightning Rod requires the sourced Bone Chill target state; Priest/Scout Saint's Blessing applies current CoA's +28% damage below 30% maximum target HP, while its separate +597/+21% Heal rider at skill level 105 remains unresolved because the local Heal row and lower-rank curve are absent; Priest/Warrior Battle Monk Stance gates five stance-dependent abilities for player and companion paths; Priest/Warlock Prayer of Tribulation has focused runtime coverage; and Soul Cleansing Ceremony conditionally extends Cleanse to curses. Blessed Spring Water (490298), Embrace of the Water Spirit (491323), and Shadow Fury (492932) now apply their source-described modifier auras to the party; Embrace's separate periodic proc remains caster-only. Current CoA reworks Infused Light Chain (498610) into Rage Control: +20 Rage per completed second of channeling. Player and generated-companion completion and interruption paths now grant only whole elapsed channel seconds; ordinary casts do not count, replacing the unsupported local Chain of Light damage, cooldown, and on-hit riders. Protection Rune Seal (498613) attaches a hidden monitor to Regenerate and uses the local 8% chance to reset Heart Rune Energy on a successful periodic tick, including the final tick before expiry. Its local generated passive row has no components or heal scalar, and current CoA describes only a “slight chance” to reset Heart Rune Energy; neither source establishes the local tooltip's increased-healing clause or quantifies it, so it remains unwired rather than inferred from the reset chance. Beacon of Regeneration (498620) now applies the current CoA 30-second effect to one friendly marked member, once per direct healing cast after recipients are aggregated. The CoA +105 row publishes 770 HP; because skill progression is unavailable, every unlocked rank uses that documented value. Player and companion casts both apply generic source healing-done and recipient healing-taken modifiers (raw 770, Faith +5% = 809 on either path). The local range 20 is decimeters and matches CoA range 200; its level-50 29 flat MP cost differs from the CoA +105 88 flat MP, with no supported cost curve. Child 621227 does not map to the current trigger or amount. HoT ticks and channel pulses remain outside the event model because structured healing events lack a periodic marker and CoA does not settle their eligibility. The 10.2.1 patch explicitly renames local Ice Fog ranks 1/2/3 (490274/490275/490276) to Holy Blessing, Vow of Silence, and Holy Void, respectively; the [current Priest skill list](https://chroniclesofarcadia.com/wiki/skills/list/5-1) confirms each ID and level. This is a patch-backed identity mapping, not an ID-only inference; Bone Chill is separate ID 491165. Holy Blessing (490274) follows the current [CoA Priest-primary entry](https://chroniclesofarcadia.com/en/wiki/skills/list/5-7): its permanent `(current Wisdom + 115) × 1.105` Wisdom formula and +100.9% Light damage are represented by a tagged caster aura. Existing Wisdom modifiers resolve first; only the incremental Wisdom-to-spell-power conversion is injected into coefficient-based spell amounts, because cast scaling bypasses `applyAuraStats`, and generic spell-power aura fields are not double-counted. Light maps to Holy; the player source aura is school-scoped, and generated-companion direct spell damage applies the same tagged modifier on the deterministic party path. CoA does not specify stacking with other Wisdom buffs, so existing stat-resolver behavior is retained before Holy Blessing. Two player/companion combat regressions verify actual spell amounts and Holy-versus-Nature damage; the four-file focused Priest suite passes 14 tests. The player Frost control includes RuneWaker's existing “Prayer: water-damage” +5% Frost aura when predicting the actual event amount. Vow of Silence (490275) applies 8.4 seconds to NPC targets and 4.2 seconds to character targets in player and companion casts. Holy Void (490276) now deals the CoA 1655 Light hit and applies Voidal Infection for 20 seconds, reducing physical and magical defense by 18.8%. The Priest-primary cast path maps physical-defense to armor, and the presentation school explicitly resolves this “Holy Void” identity as Holy before the generic “Void” keyword can mark it Shadow. The focused runtime suite covers player and generated-companion casts against NPC targets, including the target-side aura, physical armor reduction, and increased damage through modeled magic resistances. Character-target behavior routes through the generic aura stat path but is not separately covered here. NPCs have no Light/Holy resistance field, so the magical-defense rider cannot reduce Holy Void’s own Light hit; that remains an explicit simulator limit. Other conditional/passive mechanics still need review. +- **Priest/Champion Heart Rune Energy (498612):** current CoA keeps the same name, ID, and pair but deliberately replaces the local RuneWaker heal/Mind buff with 975.1% CPS Light damage (runtime coefficient 9.751, Holy school), 15 Rage cost, 150 range, an 80-radius caster-centered AoE, instant cast, and 12-second cooldown. Patch [11.1.5.3000](https://chroniclesofarcadia.com/tr/patch/11-1-5-3000) confirms the damage rework and a 15-second Blessing of Humility cooldown reduction on use; patch [11.1.5.4002](https://chroniclesofarcadia.com/patch/11-1-5-4000) confirms the AoE is centered on the caster with 80 range. Player and generated-companion execution has focused coverage for the Rage cost, Holy-school damage to all six in-radius test targets, exclusion of a target just outside the radius, 12-second cooldown, and Blessing cooldown reduction. CoA and the catalog provide no target-count cap, so runtime leaves it uncapped rather than guessing; party target resolution covers modeled visible/engaged mobs. The separate Protection Rune Seal Regenerate-tick path still resets this exact ability ID; its existing player regression passes. Companion Protection Rune Seal procs are not separately verified. +- **Knight/Warrior CoA batch:** current CoA removes the periodic-damage component from Holy Seal and converts Knight-primary Holy Power Explosion (490172) from its local active mana/healing effect to a passive +198% Aggro modifier. Patch [10.6.1](https://chroniclesofarcadia.com/en/patch/10-6-1-1000) supplies the Holy Seal change; patch [12.1.3](https://chroniclesofarcadia.com/patch/12-1-3-1000) confirms Holy Power Explosion's current value. The generated local Holy Power Explosion row is `rom-knight`, so its threat effect belongs on Knight actions, not Warrior-primary actions. The current CoA pair page has a level-50 Warrior/Knight Blocking Stance passive (493287), now represented as a separate catalog marker from Resist (493251) and local active Blocking Stance (491480). Its +8% parry, −18.9% received damage, and +75.4% Aggro are modeled as separate helper modifiers from Resist's +80% Aggro/20% physical reduction; each requires its passive plus the separate active stance, and they are not combined until the source/runtime stacking rule is established. Player and companion runtime integration now removes only the four legacy Holy Seal DoTs, applies Knight-only Holy Power Explosion +198% Aggro, and gates Blocking Stance/Resist mitigation on the learned passives plus active stance. Separate helper, catalog, combat, and runtime regressions cover the effects; the two Rage proc chances remain unresolved. Leopard Instinct (495402) now updates hit stacks and Dodge-stack loss for player and generated-companion incoming-hit paths. Each stack grants +3 percentage points Dodge; its separate Magic Resistance Rate value is retained in helper state but remains unapplied because the stat model has no consumer. +- **Knight/Rogue Leopard Instinct (495402):** current CoA describes a passive: each received hit adds a stack of +3% Dodge and +3% Magic Resistance Rate, up to 10; a dodge removes one stack. Patch [11.1.5.3000](https://chroniclesofarcadia.com/tr/patch/11-1-5-3000) replaced the three-hit absorb with this stack behavior, and patch [12.1.2](https://chroniclesofarcadia.com/fr/patch/12-1-2-1000) made the skill passive. The current source says each hit, not specifically a normal attack; player and generated-companion hit paths increment its persistent stack aura, and each dodge removes one stack. There is no duration, cooldown, or absorb in the current version; the 20-second/90-second values are historical. Each stack grants +3 percentage points Dodge. The separate Magic Resistance Rate component is intentionally unapplied because the simulator has no stat consumer; it is not folded into spell resistance or another unrelated stat. +- **Priest/Warrior Condensed Rage (493038):** the current [CoA Priest/Warrior entry](https://chroniclesofarcadia.com/en/wiki/skills/list/5-1) confirms the same name, ID, and class pair, with a +22% Physical Damage passive. Patch [11.1.1](https://chroniclesofarcadia.com/patch/11-1-1-3000) changed the rider from Water/Light Damage to Physical Damage; patch [11.1.1.5000](https://chroniclesofarcadia.com/patch/11-1-1-5000) removed the buff requirement. This supersedes RuneWaker's incoming-hit healing description and missing-child references 493056/495293. The generated catalog/tooltip and player/companion physical-damage paths now use the learned passive without a trigger or stance gate; focused regressions cover both actor paths. +- **Priest/Champion Rage Control (498610):** current CoA keeps the same ID and pair but reworks RuneWaker's Infused Light Chain into a passive that grants 20 Rage for each completed second of spell channeling, per the [current CoA Priest/Champion list](https://chroniclesofarcadia.com/en/wiki/skills/list/5-10). This replaces the local unsupported Chain of Light damage, cooldown, and on-hit Rage riders. Player/party channel completion and interruption paths grant only whole elapsed channel seconds; ordinary casts and partial seconds do not count. The generated tooltip reflects the new passive. The source does not specify additional channel exceptions. +- **Knight:** Divine Punishment now follows current CoA's +28.5% Punishment damage and applies a 10-second general damage-taken increase of 2% per pre-spend Holy Seal stack, replacing the RuneWaker +1% Light-only modifier. Deadly Whirlwind retains the local RuneWaker −10 Rage/−20-second Warrior Whirlwind adjustments because current CoA still says the passive reduces its Rage cost and cooldown but does not publish amounts. On successful Whirlwind hits it adds CoA Deadly Wound: −30% healing received for 10 seconds on NPCs or 5 seconds on player targets. Compassion of Holy Light (491635) is a documented cross-pair bridge: the selected English CoA [skill list](https://chroniclesofarcadia.com/wiki/skills/list/6-5?locale=en) reports Knight/Shaman, while localized/index results disagree on the displayed pair. This simulator has no playable Shaman class/pair, so the local Knight/Priest row stays and uses the explicit CoA payload; it does not assert that the pair identities match. The [11.1.5 patch](https://chroniclesofarcadia.com/patch/11-1-5-3000) supplies the 120 + 0.2 × STA landed-hit heal, Holy Illumination trigger, and 5-to-4-second cooldown reduction; player and generated companion casts are covered. Holy Illumination supplies 15% damage reduction for 10 seconds. The simulator has no shield-defense stat, so the patch's 5× shield-defense damage rider is not represented. Focused validation passed 22 tests across the Knight override, periodic runtime, and Whirlwind integration files; the narrow TypeScript check passed. Disregard Danger (493273) still redirects 40% of one ally hit for 10 seconds, consumes the redirect after the first hit, and gives the caster +20 Parry for 10 seconds; its integration test verifies the 40/60 split and that the next hit is unredirected. Master of Parry (492935) applies the generated +5,000 Parry modifier for 15 seconds and consumes it after two successful blocks; its hidden periodic trigger shares the source 15-second lifetime. Shield of Valor (490468) reduces a party Knight's Holy Seal cooldown by 1 second on each parry while its local 15-second aura is active. War Prayer (490078) schedules six personal Holy Seal increments at 3-second intervals over 18 seconds; local child 490079 is absent, but the current CoA [skill entry](https://chroniclesofarcadia.com/en/wiki/skills/list/6-1) and [fix patch](https://chroniclesofarcadia.com/patch/10-4-1-1000) corroborate the personal Seal mechanic. God's Sword (491621) is a continuous same-ID/name/pair rework: CoA 10.6.1 changed it to offhand-DPS Light damage, 11.1.5 set the coefficient to 350%, and 12.1.0 made it passive. The current [CoA Knight/Rogue entry](https://chroniclesofarcadia.com/wiki/skills/list/6-3?locale=ru) says offensive physical abilities add 350% offhand weapon DPS as Light damage with high Aggro, superseding RuneWaker's +40% Holy Strike crit rider. Player and generated Knight/Rogue companion runtime integration now records a separate Light/Holy damage packet at 3.5× offhand DPS after a qualifying landed direct physical hit, gated by the learned passive, exact pairing, and positive offhand DPS. Four helper tests and three integration tests cover those gates and actor paths. CoA does not publish an Aggro multiplier or multi-hit, channel, or AoE cadence, so none is inferred. Holy Light's Fury's extra damage value and remaining periodic/triggered spell references are unresolved. Throw Shield and Shield Bash require an equipped shield; Arrow of Vengeance enforces its ranged-weapon requirement. +- **Warden:** Nature Crystal immunity, Heart of Oak/Crystalline absorbs, Awakened immunity/next-crit behavior, Nature Power scaling for Healing Ripple/Gift Pulse, Spirit of Life party HoT, Mysterious Grace party scope, Will Attack's Frantic Briar debuff, Damage Transfer's 30% split to a live nearby pet, Tough Oak's one-second Punch/Sepal Stab cooldown reductions, and Briar Shield's sourced 900-second +5% armor aura plus level-scaled physical reflection have focused fixes. Briar Shield uses RuneWaker's local formula for main-hand DPS reflection on landed physical melee/ranged attacks within 50 range; newer Wiki trigger/stat behavior was not imported. Tough Oak's pet-defense rider has no pet-stat model; local RuneWaker encodes +5% armor while current CoA specifies +60% pet Physical Defense, so no proxy value was added. Oak Blessing (494011) now activates RuneWaker component 620679's +5% physical attack aura and 1%-maximum-HP healing every three seconds only during Heart of the Oak's 60-second duration. The hash-matched RuneWaker source contains Damage Transfer child 493416 and Lua `01460.lua`; executable component 503942 transfers 30% for 10 seconds when the owner's supported pet (102297/102324/102325) is alive within inclusive 3D range 300. Player and generated-party incoming-hit paths apply the split once and sync pet health/absorbs; party coverage checks the 30/70 split, range and expiry, and a single pet event. Tooltip component 503643's 15-second value is not executable. The [current CoA Warden page](https://chroniclesofarcadia.com/en/wiki/skills/list/7-2) does not resolve the RuneWaker conflict. Revival (499542) references missing state 499544; its only extracted component, 623078, contains no numeric payload. The [current Rogue/Warden page](https://chroniclesofarcadia.com/en/wiki/skills/list/3-7) uses ID 499542 for Rogue/Warden Low Blow and ID 494043 for Blood Hound; neither current skill matches the local Warden Revival/Weak Point Strike identity, so no cross-skill mapping was made. Weak Point Strike's two local damage components (620294/620295) preserve base and bonus hit formulas but contain no extra-hit proc chance; do not invent one. Other reactive passives remain incomplete. +- **Mage:** rank-1 Catalysis mana ticks, rank-2 Catalysis cast haste, Phoenix's 12-target cap, Control Flame, Flame Follower's Fireball cooldown rider, and rank-1 Elemental Weakness's all-resistance debuff are covered. Elemental Extraction's critical triggers now match its RuneWaker tooltip. Meditative Current now suppresses the generic always-on passive payload and applies its source-complete rule (landed Flame 491150 or Plasma Arrow 491169, +10 spell haste for 10 seconds, 30-second internal cooldown) to player and party Mage casters, with an independent cooldown marker per caster and focused runtime coverage. Mage/Knight Light of Day (493034) now suppresses its generic passive aura and grants +8% Holy damage for 15 seconds only after a landed direct Holy Light Strike (491594) or Light Charge (492634) hit, with an independent 20-second cooldown per caster; player and party regressions cover both triggers, startup suppression, and cooldown behavior. Fireball 490204 is intentionally excluded by the local tooltip. Eruption's local passive row (490221) has no proc chance or effect payload. Hash-matched RuneWaker MagicObject trigger fields contain no edge to Eruption; Fireball (490204) and Flame (491150) likewise do not link the passive. Party Mage casts now receive the same deterministic 30% base proc roll as player casts. The existing damage-doubling formula remains unchanged and unverified: no source defines the baseline for the “200%” damage statement. The current CoA entry has the same name, ID, and Mage-primary pairing and confirms Fireball/Flame triggers, so CoA patch 10.2.1 supplies the selected 30% base proc chance (up from 10%). Patch 12.1.0.5000 implies Elemental Catalysis also raises Eruption's chance but gives no value, so that bonus remains unapplied. Patch 10.2.1.1250 raised Eruption damage to 200% without defining its baseline; do not interpret that as either an extra 200% hit or a 2x total multiplier. The sourced base chance is being applied while the damage payload remains unresolved. Rank 2's source payload has no mana tick; Flame Follower's crit amount is absent from source components. Fire Ward (490248) follows the current CoA Mage page: it applies 11.5% less received damage across the six modeled magical schools to the caster and party within radius 100 (10 runtime units), leaving physical damage unchanged. The local RuneWaker component (500366) supplies +10 Fire resistance and a 600-second duration; CoA lists +230 at skill level 105 but gives no scaling curve, and the simulator has no skill-level state for Fire Ward, so +10 remains active rather than guessing intermediate values. Local cost/range/timing (120 MP, 150/15 runtime units, instant) are retained. The isolated catalog/aura test passed; two player/companion scope/radius runtime tests pass: player and generated-companion casts apply to self/nearby party members and exclude a distant member. +- **Druid:** Spirit of Life party HoT, Unity's guaranteed spell crit/healing and 15-second movement lock, Spirit Guidance's Nature Power gain, Savage Blessing's friendly target, Healing Arrows, source-backed Nature Power selection/spending for Fountain, Seeds, Wrath, Sandstorm, Earth Chain, Healing Wind, Poisonous Widow, Heart Piercing, and Cross of Thorns, plus Brilliance of Nature's 10-to-15 dynamic cap for the player and companion, have focused fixes. Weakening Seed and Withering Seed select exactly one local RuneWaker modifier branch per cast; each component maps to its own 20-second −2% target debuff. Caster-directed Nature Power drains are now distinct from hostile-target resource steals, preserving the source ordering for spends and refunds. Mage/Druid Green Guardian (494331) now follows the exact-pair current CoA active stack skill: player and companion actors gain one stack per full observed stationary second up to 20, for +1% movement speed per stack. Companion auto-use when its aura is absent is simulator policy. The old expiry HoTs are suppressed only for Mage-primary/Druid-secondary; the post-movement one-second gate is a timing approximation, and stack loss/MP refund remain unwired because CoA leaves the trigger and basis unspecified. See ROM_DRUID_MAGE_GREEN_GUARDIAN.md. An isolated CoA helper and 7 tests record Spirit Guidance 493536's no-player-target rule and reputation-based NPC conversion, plus Rebirth 493537's 30%, Advanced Rebirth 493559's 45% with Amulet of Light, and Supreme Rebirth 493560's 75% with Golden Amulet. These rules are not runtime-integrated: combat lacks NPC faction/reputation and player death-debt/item-consumption state. The CoA duration is listed only for one Spirit Guidance skill value, and basic Rebirth's optional amulet bonus is unquantified. Current CoA Druid/Rogue Necrotic Wound supersedes RuneWaker's old heal-reduction payload; see the source/rationale note. Local passive proc probabilities remain unavailable on Revival Slash, Quick Light Protection, Boiling Rock, Inspiration Display, Avalanche, Extended Recovery, and Spring Flower Eulogy. Current CoA Druid/Mage Inspiration (494322) now grants one deterministic stack per positive Nature's Power spend for the exact pair, capped at ten for ten seconds. Its modeled five-unit caster-centered radius and shared-stack refresh are explicit approximations; player/companion recipient and cast-haste integrations are tested. Fireball speed/resource riders remain unresolved per ROM_DRUID_MAGE_INSPIRATION.md. Current CoA Recovery still conflicts with the local trigger behavior, so no later proc rates were imported. +- **Warlock:** Aftermath remains covered for player and generated companions. Current CoA same-pair or explicit-rework behavior is now wired for Mind Transference 498642 (75 Rage → 6 Psi, 1-second cooldown); Divine Assistance 498668 (+16% magical damage and healing); Healing Fortune 498633 (landed Psychic Arrows grants +12% healing and +12% Wisdom for 20 seconds, and Warp Charge heals a friendly target); Psychic Rising Tide 498643 (Rising Tide becomes instant with a 5-second cooldown, grants 1 Psi, and a critical hit triggers Healing Fortune); and Mind Shield 498648 (+1 Psi on Urgent Heal; Defense Net duration reduction retained). Soul Enlightenment 498649 now uses the current CoA +5.7% damage dealt/+17.1% received healing aura for 30 seconds, 2 Psi, and a modeled 7.5-unit radius; player and companion casts are covered, while the Willpower Construct Caster restriction is tooltip-only because that state is not represented by cast validation. The local Mind Transference +40% physical-attack child rider is omitted because current CoA does not confirm it. Current CoA Rising Tide can route an ally-targeted cast to that ally's hostile target, but the simulator has no hostile-target selection state on party members, so only that redirect is unsupported and is called out in its tooltip. Psychic Warrior 499868 is the same Warlock/Warrior pair and ID as the local obsolete passive, now shown with the current name and tooltip. Its 187.5% area / 1,050% single-target main-hand DPS coefficients are recorded in an isolated helper; combat integration remains open: the isolated helper preserves both Physical and Dark tags, but CoA does not document hybrid defense order or added-hit cadence/roll inheritance; see the [source/runtime note](ROM_WARLOCK_WARRIOR_PSYCHIC_WARRIOR.md). The [12.1.4.1500 patch](https://chroniclesofarcadia.com/patch/12-1-4-1500) raised the area coefficient to 250%, and [12.1.5.1000](https://chroniclesofarcadia.com/patch/12-1-5-1000) reduced it to the current 187.5%. The additional attribute-gated main-hand damage for Slash and Consistent Heart Strike remains unmodeled because CoA gives no amount. Current CoA lists Enraged 499871 on the [Warlock/Warrior page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-1) as Warrior General level 60: instant, 40-second cooldown, restoring 100 Rage, 35 Focus, and 1 Psi. It is a distinct learned row and reuses the generic capped resource effects for players and companions. RuneWaker Warrior General Enraged 490492 remains a separate same-name ability, while hidden local child 499869 remains unidentified; the player/companion regressions cover resource gains and caps, cooldown, level unlock, and pair gating. Current CoA Warlock/Mage Soul Brand 498705 now handles any landed Fire damage (including periodic hits): it applies the capped, refreshing +2%-per-stack elemental damage-taken aura and restores 1 Psi to the triggering player or companion. Soul Brand Sting 498710 costs 2 Psi, gates on the tagged local Willpower Blade aura, adds 1× derived Intelligence to each Dark/Fire packet, and resets Flaming Heart Strike on cast. Warlock/Priest Spreading Pain 499856 consumes its +25% Magical Critical Bonus aura in the central player/companion spell-critical resolver, scaling the bonus portion of a 2.0 multiplier to 2.25; ordinary hits and crit chance do not change. See the feature notes for source conflicts and simulator mapping limits. Remaining gaps include Spreading Pain's CoA 10% MP cost, which the RoM Warlock resource model cannot pay, and CoA range 150, which has no verified conversion to local 22.5; Soul Brand Sting preserves local range 22.5 for the same conversion reason. Other gaps include Breathing Control's unspecified proc probability/timing; Deep Breathing Control 499870's 15% HP amount is known, but neither current CoA nor patch 11.1.2.3000 identifies whether it triggers on manual Enraged 499871 or only an automatic Breathing Control proc, and its extra Focus amount is unknown; Mind Shield's Ring of Comfort reset probability; hidden local child 499869's identity; Psychic Warrior's composite damage type and unknown attribute-gated amounts; and End of Thought's tick interval. +- **Champion:** Fearless Blow's health/Rage gate, Rune Draw pull, Indomitable Spirit threshold, cooldown-reset scopes, rank-1 Forge trigger, Rune Pulse's 5 Rage on landed hit, Champion/Warrior Determination Rune's 30%-max-HP shield, and Rune Overload's local 15-Rage-per-second drain and zero-Rage termination have focused fixes. The Rune Overload child catalog entry now resolves hidden MagicCollect 498574 from component 621243 as a 0.6 physical-damage coefficient; catalog work also removed an unsupported 10-yard radius heuristic. Component 621241 links it as an on-time one-second tick, but runtime has no autonomous timer consumer for that link. The local description says the child hits nearby targets without a numeric radius or target cap, so scheduling and target scope remain unresolved rather than guessed. The current [CoA Champion/Rogue list](https://chroniclesofarcadia.com/en/wiki/skills/list/10-3) has a conflicting later ID mapping: CoA calls 498571 Rune Overload and 498572 Runecraft - Haste, while RuneWaker calls 498572 Rune Overload and 498571 Remodeled Body. CoA patch history confirms later revisions (Shield Form gate and Disassembly termination; Rage drain and damage changes), so the current CoA values were not imported into the RuneWaker model. Soul Forge Mystery activates its sourced +10% Shadow damage bonus for 10 seconds after a critical hit, while its five-minute physical-critical aura remains active. Way of Frenzy now grants +2% Stamina per landed Divine Vengeance hit, stacking to five for 60 seconds; its local tooltip and component supply the trigger, stack cap, modifier, and duration. Shield Form has no player-learnable source skill; Forge rank-2, Chain Drive, Dark Energy Strike, and other proc chances are absent or incomplete. + +### Source-complete CoA mechanics with remaining runtime gaps + +- **Warlock/Priest Spreading Pain (499856):** The current [CoA Warlock/Priest page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-5) preserves the exact local skill name, ID, and pair and specifies the three linked debuffs, +18% Magical Attack Power, +25% Magical Critical Bonus, and Healing Fortune activation. Patch [10.6.1](https://chroniclesofarcadia.com/en/patch/10-6-1-1000) narrows that activation to Healing Fortune's healing-increase portion: +12% healing for 20 seconds, not its separate Wisdom or Warp Charge effects. The catalog/tooltip and player/generated-companion cast effects preserve the local linked children and apply the sourced +18% magical attack, +12% healing, and +25% Magical Critical Bonus. The central critical resolver consumes the tagged bonus aura only for magical spell crits: a 2.0 critical multiplier becomes 2.25 by increasing its bonus portion, with no change to crit chance or ordinary hits. The wiki also lists 10% MP plus 15 Focus and range 150, versus the local row's 15 Focus and range 22.5. RoM Warlock has no Mana pool and no general wiki-range conversion was verified, so those cost/range differences remain documented without an invented cost or range override. + +- **Warlock/Rogue Shadow Slice (CoA rework of local Soul Raid 498678):** The official [CoA special-skills list](https://chroniclesofarcadia.com/en/wiki/basic-information/special-skills) confirms the skill is Warlock/Rogue level 30. Patch [10.4.0.4001](https://chroniclesofarcadia.com/patch/10-4-0-4000) explicitly maps Soul Raid to Shadow Slice and says it modifies Shadow Step (490344): a 1-second stun, 4,400 Dark hit, and +30% Dark damage/+10% movement speed for 30 seconds. Patch [10.4.1](https://chroniclesofarcadia.com/en/patch/10-4-1-1000) corrects its Psi recovery from 2 to 3. `romWarlockRogueShadowSlice.ts` encodes the source-gated hit, status, buffs, and resource rider; focused tests cover exact values and identity gating. The rework replaces Shadow Step's local teleport; the simulator can model the strike and effects but has no position state for the shadow-behind-target movement. CoA does not provide a lower-rank damage curve, so 4,400 is represented as the quoted flat amount with no invented level scaling. The generated catalog/tooltip and player/companion cast mechanics are integrated, replacing the local six-second +10% Dark/+10% movement rider when the passive is learned. +- **Warlock/Mage Soul Brand (498705):** Current CoA's same-name, same-ID, same-pair rework supersedes RuneWaker's three-skill trigger, 9% Dark/Flame-only debuff, and no-Psi payload. Player and generated-companion hooks now apply the current effect after positive landed Fire damage, including periodic events: +2% damage taken per stack for 20 seconds, up to four stacks, and +1 Psi to the source. The five available elemental-school mappings are Fire, Frost, Nature, Holy, and Shadow; Arcane and Physical are excluded. Focused helper/aura and runtime tests cover direct/periodic player and companion hits. +- **Warlock/Mage Soul Brand Sting (498710):** The current [CoA Warlock/Mage page](https://chroniclesofarcadia.com/wiki/skills/list/9-4) and patches [11.1.1.4000](https://chroniclesofarcadia.com/patch/11-1-1-4000) and [12.1.0.5000](https://chroniclesofarcadia.com/patch/12-1-0-5000) support the 2-Psi cost, 3737.5 + 1×Intelligence Dark and Fire packets, Willpower Blade requirement, and Flaming Heart Strike reset on cast. The exact-pair catalog/runtime now models those packets using each actor's derived Intelligence, gates use on an active locally tagged “Willpower Blade” aura, and resets on cast. This state-name gate does not equate local RuneWaker 497955 with CoA Willpower Sharpening 1494096. CoA range 150 remains unsupported because its unit conversion to the local 22.5 is unverified; the local range is preserved. Focused tests cover player and companion gates/amounts and the cooldown reset. + +## Mechanics implemented in this follow-up + +- **Rogue/Mage Chaos Dagger (491178):** The same-ID/name/pair [current CoA row](https://chroniclesofarcadia.com/en/wiki/skills/list/3-4) gives the landed normal-attack Fire packet as 169.4% of the attacking hand's weapon DPS; [patch 12.1.0.4000](https://chroniclesofarcadia.com/patch/12-1-0-4000) changes it to passive. Player and companion main/off-hand packets now go through the existing Fire resistance, aura, absorb, and death pipeline. This deliberately replaces RuneWaker's Enchanted Throw projectile/physical-child behavior for Rogue/Mage only. CoA's listed 25 MP has no published spend timing after the passive conversion; the simulator does not guess a per-auto debit. The separate temporary Physical Attack Power rider says only “slightly” and supplies no amount or duration, so it remains open. See [the source and rationale note](ROM_ROGUE_MAGE_CHAOS_DAGGER.md); 43 helper/player checks and one party integration case pass. +- **WoW Death Knight Merciless Combat (`talent-1993`):** Generated local rank rows supply the eligible abilities (Icy Touch, Howling Blast, Obliterate, Frost Strike), 6%/12% bonus, and strict target-health threshold below 35%, so no WotLKDB fallback was needed. Player and generated-companion direct-hit paths check each target's current health immediately before resolving damage and apply the rank bonus before mitigation. It does not modify Icy Touch's periodic Frost Fever tick; exact-threshold and unrelated-spell controls are covered. The parser cannot safely model this conditional as a global scalar, so the per-target hook is intentional. See [the source and integration note](WOW_DEATH_KNIGHT_MERCILESS_COMBAT.md); focused validation passed six tests. +- **WoW Mage Netherwind Presence (`talent-1846`):** Generated local ranks 44400/44402/44403 set 1/2/3% spell haste per stack, up to three stacks for 10 seconds. Because the generated 100%-chance Proc Trigger Spell rows lack proc-phase flags, the runtime awards one stack at accepted cast commitment; this is documented as an event-phase inference, and channels do not grant one stack per pulse. The generated tooltip's reachable Mage triggers are Arcane Missiles, Arcane Barrage, and Arcane Blast; Arcane Orb is missing from the catalog, while Moonfire/Starfire/Starsurge are non-Mage rows. At max rank, casting Slow with three stacks adds 30% movement speed for three seconds without consuming the haste stacks. The player movement controller and companion follow controller consume that aura; actual in-scene movement feel remains a manual playtest item. No WotLKDB fallback was used because stock 44400 is a different permanent +2% effect. Focused validation passed seven tests across two files; see [the feature note](WOW_MAGE_NETHERWIND_PRESENCE.md). +- **WoW Death Knight Spell Deflection (`talent-2018`):** Generated ranks supply the 15/30/45% School Absorb and school mask 126 (Holy, Fire, Nature, Frost, Shadow, Arcane); the tooltip supplies the dynamic proc chance equal to current Parry. The player and generated-companion incoming-hit paths apply one rank-scaled absorb on landed discrete enemy spell hits after existing aura/resistance reductions and before subsequent Ward/transfer/shield stages, and record it in absorbed combat damage. The current enemy model has no periodic incoming damage-tick event; future periodic spells must not use this direct-hit adapter. Integer flooring is labeled as a simulator choice, and an AzerothCore handler is used only as corroboration because it is a fork-specific reference. Focused validation passed seven tests across helper, player/companion integration, and Frost Warding regression files; see [the source/rationale note](WOW_DEATH_KNIGHT_SPELL_DEFLECTION.md). +- **RoM Mage/Druid Green Guardian (494331):** Current CoA behavior replaces the exact Mage-primary/Druid-secondary local passive: a zero-stack aura gains one stack per full observed stationary second, capped at 20, and each grants 1% movement speed. The full stationary second after a sampled position change is an explicit timing approximation; CoA says moving briefly pauses generation but gives no duration. The old Protection-expiry HoTs are suppressed only for this pair. Companion AI casts the skill through the normal ability path when learned and its aura is absent, a simulator policy. Stack loss and the 10% MP restore remain unwired because CoA does not define the loss event or percentage basis. Focused validation passed 29 tests and TypeScript emitted no diagnostics; see [the source/runtime note](ROM_DRUID_MAGE_GREEN_GUARDIAN.md). + +- **Druid/Rogue Necrotic Wound and Sinister Request:** Current CoA behavior replaces conflicting RuneWaker payloads for this exact pair. Wound requires Corrosive Poison plus one Nature's Power, spends 4% Mana once at channel start, deals three 329.7% Dark hits over 1.5 seconds, spreads Corrosive Poison, and has no cooldown or old healing-reduction/root riders. Its three evenly spaced pulse timestamps are a documented approximation; CoA specifies hit count and duration, not timestamps. The channel completion check now tests only unspent costs, which fixes rejection after prepaid Nature's Power reaches zero. Sinister Request fills existing supported party resource pools to their caps in source radius 150, converted to 15 project units; patch 12.1.6.2004 supplies the current 15-second cooldown, and successful Wound/Poisonous Widow Embrace casts reduce it by one second. Player and companion paths respect the existing position/LOS selection and companion AI reacts to nearby depleted allies. CoA does not define the poison-spread duration-copy rule, so the simulator refreshes the full duration. The global 50% AoE multiplier is not represented. See [the source and implementation note](ROM_DRUID_ROGUE_NECROTIC_WOUND.md). +- **Rogue Poisonous Hands and Energized Hands:** The current [CoA Rogue page](https://chroniclesofarcadia.com/en/wiki/skills/list/3-1) and patches [12.1.0.4000](https://chroniclesofarcadia.com/patch/12-1-0-4000), [12.1.0.5000](https://chroniclesofarcadia.com/patch/12-1-0-5000), and [12.1.5.1000](https://chroniclesofarcadia.com/patch/12-1-5-1000) take precedence over conflicting RuneWaker rows for Rogue-primary IDs 490329 and 490347. Poisonous Hands builds up to ten target stacks while the target's damage-dealt reduction remains fixed at 8% total; each successful application also builds one 1% current-target attack-speed stack, and switching targets resets that self-ramp. Energized Hands supplies +100% Energy regeneration, +50% maximum Energy, +20% Energy costs, and −0.1 seconds to committed skill cooldowns. The local generated 50% proc chance is retained only as a fallback because CoA does not quantify “a chance.” The project has no Poison Bottle inventory; CoA gives no faster-main-hand cast-time formula, so the 1-second tooltip cast is the current fallback; and the cooldown subtraction timing is an implementation choice documented in [the feature note](ROM_ROGUE_POISONOUS_HANDS.md). Player/companion focused validation passed 49 tests. +- **Priest-primary Holy Candle (490304):** Current CoA values and patch 12.1.6.2000 set +27% healing, 5% Mana activation cost, range 1, a 30-second cooldown, and 12% self-damage; the CoA developer reply sets its per-owner limit to once per second. The local 60-second duration is retained because CoA omits duration; the old +5% modifier and free-running HP drain are replaced. Accepted healing casts charge once before target fan-out, with per-owner throttling across spells; full-health targets count, invalid or interrupted casts do not, HoTs charge at application rather than each tick, and channels use a persistent per-cast guard. The max-health basis is an explicit interpretation because CoA does not specify current versus maximum HP. Tests cover player/companion, AoE fan-out, overheal, failure/interruption, HoT ticks, and a channel scheduler boundary; the Divine Hymn channel is a test fixture only. See [the rationale](ROM_PRIEST_HOLY_CANDLE.md); focused validation passed 16 tests across three files. ## Visual review and evidence limits @@ -173,4 +217,7 @@ These are specific, source-backed gaps that still need implementation or a gamep ## Focused test coverage -The earlier consolidated class-related suite matched `^(wow335|rom|deathKnight|mageBlinkRuntime|wowDruid|wowNature|wowTidal|talentModifiers|combatAuras|combatStore)` plus `src/scene/combatEffectRuntime.test.ts`: **55 files and 711 tests passed**. The integrated focused pass for the prior phase passed **398 tests across 30 files**. The latest combined follow-up passed **125 tests across 12 files**, covering Mage Missile Barrage, Shaman Maelstrom Weapon, Warrior Blood Craze/Second Wind, Paladin Aura Mastery/Redoubt, and related regression coverage. This continuation's Priest/Warrior stance, Mage Flame Throwing/Empowered Fire, Warrior Anger Management/Charge, and party-runtime regressions passed **153 tests across 11 files**; Warlock Metamorphosis and talent regressions passed a further **39 tests across four files**. The latest focused pass for Soul Link, Champion Soul Forge, Priest party scopes, Disregard Danger, Master of Parry, and shared combat regressions passed **200 tests across five files**. The Hunter trap follow-up passed 23 tests across three files. The current combined Hunter, Warlock, Priest, Knight, and shared-combat regression run passed 270 tests across 14 files; the 8 GB TypeScript build and `git diff --check` passed, and `npm run release:check` passed for 105 changed paths. The current Glyph of Swiftmend, Shaman weapon-hand, and related account/catalog/party configuration regression run passed **151 tests across eight files**. This wave's 8 GB TypeScript/Vite production build passed; KTX2 found zero fallback textures and the environment-performance audit reported green with no regressions. Vite emitted existing dynamic-import/chunk-size warnings. `npm run release:check` passed for 24 changed paths, including untracked files. The Obsidian vault check passed in an earlier wave. These focused checks do not prove every ability/talent combination. The full `npm test` suite was not rerun; an earlier run had 15 failing files and 21 failed tests, including dungeon-count and balance expectation failures. +The earlier consolidated class-related suite matched `^(wow335|rom|deathKnight|mageBlinkRuntime|wowDruid|wowNature|wowTidal|talentModifiers|combatAuras|combatStore)` plus `src/scene/combatEffectRuntime.test.ts`: **55 files and 711 tests passed**. The integrated focused pass for the prior phase passed **398 tests across 30 files**. The latest combined follow-up passed **125 tests across 12 files**, covering Mage Missile Barrage, Shaman Maelstrom Weapon, Warrior Blood Craze/Second Wind, Paladin Aura Mastery/Redoubt, and related regression coverage. This continuation's Priest/Warrior stance, Mage Flame Throwing/Empowered Fire, Warrior Anger Management/Charge, and party-runtime regressions passed **153 tests across 11 files**; Warlock Metamorphosis and talent regressions passed a further **39 tests across four files**. The latest focused pass for Soul Link, Champion Soul Forge, Priest party scopes, Disregard Danger, Master of Parry, and shared combat regressions passed **200 tests across five files**. The Hunter trap follow-up passed 23 tests across three files. The current combined Hunter, Warlock, Priest, Knight, and shared-combat regression run passed 270 tests across 14 files; the 8 GB TypeScript build and `git diff --check` passed, and `npm run release:check` passed for 105 changed paths. The current Glyph of Swiftmend, Shaman weapon-hand, and related account/catalog/party configuration regression run passed **151 tests across eight files**. Companion Maelstrom Weapon regressions passed **89 tests across four files**, covering party and player runtimes, the party support-cast path, and Stormstrike catalog mapping. The latest focused Death Knight, Hunter, and party run passed **80 tests across four files**, covering Blood-Caked Blade player/companion procs and companion pet-aura targeting. Blink forward movement, player relocation, source-distance, obstruction, and root/stun regressions passed **29 tests across three files**. The 8 GB TypeScript check and Vite production bundle passed after the Blink changes; `npm run release:check` also passed. The Hunter pet model remains Wolf-only; family selection/utilities and pet critical inheritance remain open. The Hunter pet formula, Hunter combat, and party-runtime regressions passed 62 tests across three focused files. These focused checks do not prove every ability/talent combination. The full `npm test` suite was not rerun; an earlier run had 15 failing files and 21 failed tests, including dungeon-count and balance expectation failures. + + +This RoM current-CoA follow-up passed 114 focused tests across eight files and sc --noEmit; git diff --check and whitespace checks on touched/new files passed. Companion Exhaustion coverage directly exercises the landed-hit helper and capped resource events; party AI did not select this pair-specific ability in rotation, so the new test does not claim an end-to-end AI cast. diff --git a/docs/ACTIVE_CLASS_MECHANICS_BACKLOG.md b/docs/ACTIVE_CLASS_MECHANICS_BACKLOG.md index 5abb38b6..0070dd3e 100644 --- a/docs/ACTIVE_CLASS_MECHANICS_BACKLOG.md +++ b/docs/ACTIVE_CLASS_MECHANICS_BACKLOG.md @@ -1,117 +1,203 @@ # Active Class Mechanics Backlog -Updated 2026-09-30. This document lists unresolved ability and talent mechanics for all ten WoW 3.3.5a classes and all ten RuneWaker primary classes. It excludes completed fixes and all visual or sound review. Some items need source confirmation or simulator support before they can be implemented; do not guess missing values. See [the full audit](ACTIVE_CLASS_AUDIT.md) for the supporting findings and source conflicts. +Updated 2026-10-02. This document lists unresolved ability and talent mechanics for all ten WoW 3.3.5a classes and all ten RuneWaker primary classes. It excludes completed fixes and all visual or sound review. Some items need source confirmation or simulator support before they can be implemented; do not guess missing values. For RoM conflicts, prefer clearly matching current Chronicles of Arcadia behavior over the RuneWaker snapshot; verify skill identity and class pairing, and document the source and any simulator approximation. See [the full audit](ACTIVE_CLASS_AUDIT.md) for the supporting findings and source conflicts. ## WoW 3.3.5a ### Hunter -- [ ] Resolve Kill Command's starting damage bonus from a matching source. Its generated tooltip leaves the amount unspecified, and the WotLKDB row is a server-side dummy effect. -- [ ] Add a pet-special-attack event so Kill Command's source-described 1% damage decay can be applied per pet special attack. +- [ ] Complete the remaining WoW 3.3.5a Hunter pet mechanics for player Hunters and generated Hunter companions. The current Wolf baseline has level-ranked Bite, a regenerating Focus pool, separate Bite and melee-swing events, Call/Revive handling, Furious Howl, Kill Command, Mend Pet targeting, owner stamina/ranged-AP and spell-damage inheritance, and Bite's local AP/spell-damage coefficients. Still needed: selectable/preserved families; the remaining family, stable, feed, and training mechanics; and pet critical-stat inheritance. No stock owner-crit inheritance rule was established. +- [x] Audit pet critical inheritance sources: local 19591 “Tamed Pet Passive 06” has zero-valued melee/spell crit aura amounts, and stock 3.3.5 core uses pet base crit plus the pet's own auras without an owner-crit formula. The proposed owner-melee-crit formula is only from an unmerged server issue; do not import it as stock behavior. Pet critical-stat inheritance itself remains unresolved. +- [x] Hunter pets dynamically inherit 45% of owner stamina (+10 pet health per inherited point) and 22% of owner ranged AP as pet AP for player and companion summons. The pet profile recalculates when owner stats or auras change. +- [x] Wolf Bite adds 7% of effective pet AP to the local rank's base damage. Local AzerothCore `spell_bonus_data.sql` rows 17253–17261, 27050, 52473, and 52474 supply that coefficient; temporary pet AP effects such as Furious Howl are included. +- [x] Kill Command uses local 3.3.5a Spell.dbc rows 34026/34027 and triggered child 58914: +60% pet special-attack damage for 30 seconds, reduced by 20 percentage points when a pet special is executed, with a 60-second cooldown. Three Bite executions therefore use +60%, +40%, then +20%; ordinary melee swings do not consume the rider. +- [x] The Wolf baseline selects the highest local Bite rank available at the pet's level (1–80), charges the DBC-listed 25 Focus, and keeps its 1.5-second pet global cooldown independent of ordinary swings. Mend Pet's periodic heal is routed to the living active pet for player and generated companion Hunters; Revive Pet restores a dead pet at the modeled 15% health. +- [x] Wolf Furious Howl selects the local level-appropriate rank, costs 20 Focus, buffs the Wolf and master with the DBC-listed AP for 20 seconds, and recovers in 40 seconds without starting the pet GCD. The pet-side AP adds `rank AP × 2 / 14` damage to each 2-second auto swing using stock [TrinityCore `Pet.cpp`](https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/Entities/Pet/Pet.cpp) and [`StatSystem.cpp`](https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/Entities/Unit/StatSystem.cpp); Bite separately receives its 7% pet-AP coefficient. +- [x] Hunter pets inherit spell damage at 12.87% of owner ranged AP. Bite applies local AzerothCore coefficients of 0.119658 spell damage and 0.07 pet AP for player and generated companion Hunters. +- [x] Player Hunter pets expose Attack/Follow/Stay, Defensive/Aggressive/Passive, and Growl autocast controls (Growl starts off). Target decisions consume the owner's executed hostile-action event, retain a living victim until it becomes invalid, and use the local rank-specific Growl Focus/cooldown/flat-threat rows without a hard taunt; generated companion Wolves start Follow/Defensive and receive only their own owner's action events. +- [x] Player and generated-companion Hunter pets apply stock-compatible inherited defenses on incoming hits: the pinned TrinityCore 3.3.5/TDB profile supplies pet level-based armor/Agility, 35% of the owner's effective armor, and 40% of the owner's five modeled magical resistances. Holy remains zero because character stats have no Holy-resistance field. Other summons keep their prior mitigation path. This uses a pinned TrinityCore implementation baseline, not direct Blizzard-server evidence; see [the source/runtime note](WOW_HUNTER_PET_DEFENSE_INHERITANCE.md). +- [x] Go for the Throat (`talent-1818`) grants the generated 15/30 Focus after a qualifying Hunter melee/ranged critical strike, with a two-second Hunter-owner cooldown and the active living pet's Focus cap. Player and generated companion paths are wired. Companion roll setup covers the baseline ranged swing and the exact generated direct attack map (Aimed Shot, Arcane Shot, Auto Shot, Chimera Shot, Counterattack, Kill Shot, Mongoose Bite, Multi-Shot, Raptor Strike, Scatter Shot, Silencing Shot, Steady Shot), requiring its mapped attack kind. Party integration covers the baseline ranged swing and Arcane Shot; the current Marksmanship AI does not select Raptor Strike. Traps, Stings, Volley, and unclassified spells remain excluded, even if a generic event labels them ranged; a ranged-labeled Explosive Trap regression verifies this gate. The owner-scoped cooldown surviving pet swaps is an architecture inference. + +- [x] Bestial Discipline (`talent-1390`) increases the active tamed Hunter pet's Focus regeneration by the generated 50%/100% ranks (5 baseline → 7.5/10 Focus per second) for player and generated-companion Hunters. Focus accrues continuously through the existing elapsed-time pet pool; the source gives no discrete tick cadence, so this is a runtime integration inference. The separate Intimidation Mana-cost rider remains scoped to Intimidation by the existing talent modifier parser. ### Priest -- [ ] Find the exact spell-power coefficient for Lightwell's rank-6 Renew child (48085). It has no local coefficient row; do not infer it from sibling ranks, whose listed coefficient differs from the local value used for ranks 1–5. +- [x] Lightwell rank-6 Renew child (48085) uses 0.626 spell power per tick. Local Spell.dbc supplies the 1,540 base heal and two-second cadence but has zero coefficient fields. The exact [WotLKDB 3.3.5a entry](https://wotlkdb.com/index.php?spell=48085) identifies child 48085 as Rank 6 and lists 62.60% spell power per tick; this is direct evidence for rank 6, not an inference from sibling 48084 or 28276. The runtime and focused profile test now use 0.626. +- [x] Current CoA Priest-primary Holy Candle (490304) uses +27% healing, a 5% Mana activation cost, range 1, 30-second cooldown, and the local 60-second aura duration because CoA publishes no duration. Patch 12.1.6.2000 supplies the current 12% self-damage; a developer reply confirms a one-second owner throttle. Player and generated-companion casts pay once per accepted healing cast, regardless of target fan-out; HoTs charge on application rather than ticks, and channels keep a per-cast guard. The maximum-health basis is an explicit local interpretation because CoA does not say current versus maximum HP. The old +5% aura and free-running -6% HP dot are replaced. The focused CoA Priest suite passed 16 tests across three files; see [the source and runtime note](ROM_PRIEST_HOLY_CANDLE.md). ### Death Knight -- [ ] Continue the conditional, pet, and disease talent pass, including Blood-Caked Blade. -- [ ] Resolve conflicting local values for Hysteria's physical damage bonus (15% versus 20%) and Dancing Rune Weapon's duplicate-attack damage reduction (50% versus 10%). +- [ ] Continue the remaining conditional, pet, and disease talent pass. Blood-Caked Blade is wired for player and companion autoattacks, and Epidemic extends both Death Knight diseases for player and companion casts. +- [x] Reaping (`talent-2001`) uses generated rank chances 33/66/100%, trigger spells Blood Strike (45902) and Pestilence (50842), and the local aura type 226 30-second period. WotLKDB 56835 confirms a 30-second Periodic Dummy with duration `n/a`; the timer is a refreshable removal tick, not a rune duration. The pinned [AzerothCore-derived handler](https://github.com/mod-playerbots/azerothcore-wotlk/blob/e822d718322289dd036fb2daf8867ba41283bf9a/src/server/scripts/Spells/spell_dk.cpp#L2640-L2705) converts one base Blood rune just spent, restores a Reaping-owned rune immediately on a successful landed spend, and retains it after a miss until expiry. Player and companion paths use independent conversion owners so Reaping expiry does not erase Blood Tap; Blood Strike's second damage packet cannot re-restore the rune. Companion Blood adds Blood Strike as a final trigger fallback only with a learned rank and ready base Blood rune; Pestilence is available only when it can spread that companion's active disease to another engaged target within the local 10-yard circle. Pestilence utility casts treat an actual disease transfer as the landed event because they have no damage packet. Focused tests cover helper ownership/expiry, player and companion Blood Strike, companion selection, and player/companion Pestilence spread. The core link is an AzerothCore-derived fork reference, not pristine TrinityCore behavior. +- [x] Bloody Vengeance (`talent-1944`) uses generated ranks for +1/2/3% physical damage per stack, a three-stack cap, and rank-specific 15/30/30-second duration. Any positive landed critical damage from a generated Death Knight player or companion event adds one source-owned stack after the hit; companion autos and direct damaging abilities receive combat-result rolls while talented. No WotLKDB fallback was needed. Party channel pulses only proc when their combat path produces a critical result; deterministic periodic damage without a crit result cannot trigger it. +- [x] Desolation (`talent-2285`) reads each rank's generated +1/2/3/4/5% all-attack damage bonus and 20-second duration, then applies the linked 100%-chance child aura after a landed Blood Strike for players and generated companions. The landed/main-hand gate is corroborated by the WotLK simulator's [`blood_strike.go`](https://github.com/wowsims/wotlk/blob/master/sim/deathknight/blood_strike.go); local generated talent rows do not specify the proc phase. This simulator has one primary Blood Strike action and no separate off-hand strike event. No WotLKDB fallback was needed because the local generated payload contains rank amounts, duration, and child IDs. +- [x] Blade Barrier (`talent-2017`) uses the generated 1/2/3/4/5% all-damage reduction for 10 seconds and the rank child links 51789/64855/64856/64858/64859. The aura triggers only on a real base-Blood-rune transition: a base Blood rune that was ready enters cooldown, and both base Blood runes are cooling after the committed action. This tracks original Blood runes, not Blood-cost runes: a Death Rune paying Blood cost while both base Blood runes were already cooling cannot refresh the aura. Player and generated-companion casts use the same transition gate and their own ranks. No WotLKDB fallback was needed. Four helper tests and two integration tests cover ranks, duration, reduction, player activation, companion activation, and Death Rune exclusion. +- [x] Merciless Combat (`talent-1993`) applies the generated 6%/12% bonus to Icy Touch, Howling Blast, Obliterate, or Frost Strike only while the current target is below 35% health. The generated rank rows supply the exact named spells, strict threshold, rank values, and child spell IDs, so no WotLKDB fallback was needed. Player and generated-companion direct damage paths apply the bonus before target mitigation; helper and integration coverage verify rank behavior and the exact 35% boundary. See [the source/rationale note](WOW_DEATH_KNIGHT_MERCILESS_COMBAT.md). +- [x] Spell Deflection (`talent-2018`) reads generated 15/30/45% school-absorb ranks and the 126 nonphysical school mask, then rolls once per landed direct incoming spell hit against the defender's live Parry chance. Player and generated-companion paths apply it after existing resistance/aura reductions and before later Ward, transfer, shield, and health-loss stages; absorbed damage is recorded. The discrete enemy attack model has no periodic incoming spell-tick event, so its current spell-hit event is the direct-hit boundary. Whole-damage floor rounding is a simulator choice; AzerothCore is corroboration, not stock-source authority. Focused validation passed 7 tests across three files; see [the source/implementation note](WOW_DEATH_KNIGHT_SPELL_DEFLECTION.md). +- [x] Epidemic applies its local generated 3/6-second duration increase as one/two extra three-second ticks to Blood Plague and Frost Fever. +- [x] Hysteria (49016) follows current Area-52 talent node 1954: +15% physical damage with 1% max-health loss per second for 30 seconds; the conflicting stock class row's +20% is not used. +- [x] Resolve Dancing Rune Weapon (49028)'s local payload: generated Spell.dbc gives 60 Runic Power, instant cast, 30-yard range, a 12-second summon, and a 90-second cooldown; its tooltip references child 51906, whose third effect reduces the Rune Weapon's damage by 50%. The parent's 10-point effect is Dummy, not mitigation. [WotLKDB 3.3.5a](https://wotlkdb.com/index.php?spell=49028) confirms the cost, duration, range, cooldown, and parent effect structure. A half-damage helper and source-gated mirror-event predicate are implemented and tested. +- [x] Integrate Dancing Rune Weapon (49028) for player and generated-companion Death Knights. Casting applies its sourced 12-second aura; the simulator does not fabricate a separate summon actor or stats. During the window, player and companion runtimes mirror eligible landed direct hostile primary-target spells and melee autos at half of the owner's raw damage. The [AzerothCore 3.3.5-derived handler](https://github.com/azerothcore/azerothcore-wotlk/blob/master/src/server/scripts/Spells/spell_dk.cpp#L3260-L3419) is the executable server reference, not a TrinityCore implementation: spell gates require a learned spell (Death Coil damage child 47632 is the exception), a living hostile target, and exclude listed utility spells (Raise Dead/Ally, Death Grip, Dark Command, Death Pact, Death and Decay, Anti-Magic Shell), positive/summoning actions, and secondary AoE targets. Companion mirroring is a simulator extension over modeled companion actions. The source Rune Weapon's independent hit/crit/stat calculations are approximated by reusing the owner's pre-target-mitigation raw damage at 50% through the existing target-damage path; periodic spell ticks and a separate Rune Weapon actor are not modeled. Coverage: 10 focused helper tests plus player Death Coil/window-expiry and companion summon-aura/Death Coil/melee integration regressions pass. ### Rogue -- [ ] Model the enemy movement-speed state needed for Improved Kick's movement-speed cap rider, or confirm that this effect is outside the simulator's supported scope. -- [ ] Verify the Combat Readiness cooldown reference against the 3.3.5 catalog; the named ability is absent, so its intended receiver is unresolved. +- [x] Improved Kick follows the requested stock effect: Kick has a 50%/100% chance to silence the target for 2 seconds. Its max-rank capstone restores up to 40 Energy and grants 35% attack speed for 6 seconds after a successful interrupt. The generated tooltip and player/party runtime use these effects; the generated movement-speed cap is ignored. +- [x] Combat Potency's local custom child 415010 confirms its rank-3 cooldown rider targets Blade Flurry (13877), Killing Spree (51690), and Combat Readiness (86378) by one second. The existing runtime applies this to those abilities when present; Combat Readiness is absent from the stock 3.3.5 generated catalog, so the custom recipient remains unavailable in this catalog scope. ### Shaman +- [x] Elemental Devastation follows generated talent node 1645: direct Fire/Frost/Nature spell criticals grant the rank's 4/8/12% melee and ranged critical chance for 10 seconds. Player and generated companion Shamans use the event path; periodic damage is excluded. +- [x] Extend Elemental Focus (`talent-574`) to generated companion Shamans: landed nonperiodic Fire/Frost/Nature spell criticals use the generated rank's 50%/100% proc chance and grant two Clearcasting charges for 15 seconds. Each committed eligible spell spends one charge and reduces mana cost by 30%. The player path already used these generated rank values; the local SpellDuration row 8 supplies the missing 15-second duration. Focused validation: 2 profile tests and 5 party Shaman tests. +- [x] Improved Shields applies the generated 5/10/15% increase to Water Shield orb mana for player and generated companion Shamans. +- [x] Implement Lightning Overload's generated base effect (`talent-1686`, rank spells 30675/30678/30679) from [the local generated 3.3.5 rank row](../src/game/wow335Talents.generated.ts#L72628): Lightning Bolt and Chain Lightning landed direct spell hits use the local 7/14/20% rank chance, tripled after a critical hit. A proc resolves a same-target echo from half the initiating spell's pre-defense amount, with no extra mana cost or threat and no recursive Overload roll. Player and generated-companion paths are covered; companion Lightning Bolt/Chain Lightning damage uses Nature school. The local source does not give a separate event rule for Chain Lightning jumps, so the simulator checks each direct target hit in its existing damage loop. Focused validation: 2 helper tests and 2 player/companion integration tests. +- [x] Implement Elemental Warding (`talent-1640`, generated spells 28996/28997/28998) from the [local generated talent node](../src/game/wow335Talents.generated.ts#L70552): ranks 1/2/3 reduce the owner’s incoming Fire, Frost, and Nature damage by 2/4/6%. The rank helper reads only that owner clause and prevents generic parsing of the separate Tethered Elemental-only riders. Both player and generated-companion incoming-hit paths apply the school-scoped modifier after existing race and Druid multipliers; Fire/Frost/Nature reductions and unchanged physical/Arcane/Holy/Shadow damage are covered. Focused validation: 6 helper tests and 7 player/companion integration tests. +- [ ] Model Elemental Warding’s separate Tethered Elemental damage reduction (5/10/15%) and threat bonus (50/100/150%) only if the simulator gains an actual Tethered Elemental actor and pet-specific incoming damage/threat. The current simulator has no such actor; do not apply these clauses to the Shaman or generic companions. - [ ] Review the remaining passive and proc talents for event-model coverage. -- [ ] Confirm whether Convection's source-listed Earthquake reference has a corresponding Shaman ability row; one is absent from the local catalog. -- [ ] Verify the absent Fireball and Frostbolt entries against the 3.3.5 Shaman source and class attribution before adding or mapping them. -- [ ] Add a PvP damage path for the source-described 2%-per-stack damage reduction, if PvP targets are in scope. -- [ ] Add companion Maelstrom Weapon procs, stack consumption, and hand-specific autoattacks/Stormstrike. Companion combat currently uses one generic weapon swing and has no Maelstrom stack path. +- [x] Close Convection's Earthquake catalog question. Generated Shaman Convection (`talent-564`) mentions Earthquake, but local 3.3.5a `Spell.dbc` has no matching `SkillLineAbility.dbc` assignment for Earthquake and the generated class catalog has no learnable Earthquake row. The talent tooltip reference alone does not establish a Shaman ability; do not synthesize a catalog entry or mana-cost mapping. +- [x] Close the Fireball/Frostbolt attribution question. Local 3.3.5a `SkillLineAbility.dbc` assigns Fireball ranks to Mage Fire (SkillLine 8, class mask 128) and Frostbolt ranks to Mage Frost (SkillLine 6, class mask 128); neither has a Shaman assignment on SkillLines 373/374/375 (class mask 64). Their appearance in generated Maelstrom Weapon (`talent-2057`) rank text is not class-attribution evidence, so no Shaman rows or gameplay mappings are added. The class-skill-line mapping is defined in [the ability generator](../scripts/generate-wow335-abilities.mjs#L16-L23); the generated Convection node is [here](../src/game/wow335Talents.generated.ts#L70074). +- [x] Add the generated Maelstrom Weapon PvP damage rider: 2% less damage per consumed stack (10% at five stacks) for eligible damage spells against `characterDefender`; exclude Lesser Healing Wave healing and NPCs. Player and companion casts preserve the consumed stack count through cast completion and channel pulses. +- [x] Implement WoW Shaman Flurry (`talent-602`) for players and generated companions. Local generated rank descriptions supply 4/6/10% melee haste and three charges; their child aura rows resolve locally to a 15-second duration, so WotLKDB is only corroboration. The rank-two expanded tooltip says 6% while its raw child `basePoints` says 7%; runtime follows the generated tooltip. A landed direct melee critical applies the actor's rank, and each next melee autoattack attempt consumes one shared charge across both hands. Charge refresh on re-proc, equal-time hand order, and proc-phase flags are documented implementation boundaries. See [the source/runtime note](WOW_SHAMAN_FLURRY.md). ### Paladin +- [x] Illumination (`talent-1461`) uses local generated 33/66/100% critical Flash of Light/Holy Light/Holy Shock proc chances and a 50% refund of the unmodified DBC base Mana cost. Player and companion paths snapshot that rank's base cost at cast start and restore through the normal Mana cap. WotLKDB's stock 20%/30% row conflicts; generated local data remains project authority. A separate Light's Hammer cooldown rider is unsupported because no matching local catalog row exists. Payment rank selection semantics were not changed; a level change mid-cast could still alter charged rank independently of the refund snapshot. +- [x] Vengeance (`talent-1402`) applies one stack after positive landed Paladin critical damage from a weapon swing, spell, or ability. Generated ranks define 1/2/3% per stack, five stacks, and 15 seconds; damage bonus applies to Holy damage or exact Crusader Strike/Divine Storm rows. Player and companion share the resolved-hit runtime path. Generated tooltip values intentionally supersede conflicting child Spell.dbc values (3 stacks/30 seconds, Physical+Holy). -- [ ] Resolve Vindication's capstone attack-power gain amount and operation; the generated tooltip does not specify either. -- [ ] Reconcile Aura Mastery's 10-second spell row with the 6-second talent tooltip and verify amplification scope for aura effects not represented by the current modifier model. +- [ ] Resolve Vindication's capstone AP gain. Rechecked generated rank `talent-1633`/209452 and current Area-52 patch-D and client-current patch-T `Spell.dbc` rows: effect 0 is a proc-trigger aura (42) linked to AP-reduction spell 67; effects 1/2 are self-targeted aura 4 (`DUMMY`), with base 1 and +1.55/+0.90 per level, but neither specifies an AP operation or child spell. The rank text says only that AP increases after qualifying Holy damage, without a quantity. SLS row 209451 separately names flat-AP child 200067 and a Holy-damage increase; 200067's AP aura is not referenced by rank 3. Stock 3.3.5a Spell.dbc copies contain 67/9452/26016 but omit all three custom IDs. WotLKDB direct URLs for 209452, 209451, and 200067 were inaccessible on recheck, and indexed searches found no matching WotLKDB rows. Keep the gain unwired: the DUMMY coefficients and separate SLS child do not establish 209452's AP formula or operation. +- [x] Aura Mastery follows the current talent tooltip and [WotLKDB 3.3.5a spell 31821](https://wotlkdb.com/?spell=31821): 6 seconds, not the conflicting older generated class row's 10 seconds. Its tooltip/behavior includes 50% self-only duration reduction for represented confuse/fear/sleep controls, silence/interrupt immunity for affected allies, and doubled modeled modifiers from the same Paladin's aura; Retribution Aura's generated rank damage is Holy and doubled while Aura Mastery is active. Party incoming-hit retaliation is wired, including the DBC's +0.033 spell-power coefficient for player and companion Paladins. Concentration Aura pushback reduction is now integrated on player and generated-companion incoming cast/channel paths: its exact aura plus Paladin source supplies 35% base, and that Paladin's Improved Concentration Aura ranks add +7/14/20 percentage points. This scales the existing 500ms cast and 25% channel penalties after the cast's pushback-resist check; two-hit limits and spell-specific resistance remain intact. Aura Mastery does not amplify this separate modifier. Stock WotLKDB ranks (+5/10/15) are not used. ### Mage +- [x] Frost Warding Ward proc (`talent-70`) supports the local Mage Fire Ward and Frost Ward rows for player and companion incoming matching-school spell damage: generated ranks set 25/50% proc chance, 50% damage reduction, and Mana refund equal to damage reduced. The simulator applies reduction before ordinary Ward absorption as an explicit ordering inference because generated tooltip text does not specify it; stock full-absorb behavior is not imported. Arcane Ward has no local Mage row; Shadow Ward is Warlock, so neither is synthesized. +- [x] Frost Warding armor rider (`talent-70`) scales only the positive armor/resistance modifiers on the exact local Mage Frost Armor or Ice Armor cast-generated aura by the generated 25/50% talent rank. Player and companion auras carry the modifier for their own duration and exclusive armor replacement; no aura means no bonus, and generic talent parsing remains guarded. +- [x] Netherwind Presence (`talent-1846`) uses the generated local 1/2/3% spell-haste-per-stack ranks, three-stack cap, and 10-second refresh. Accepted casts of the generated Mage trigger spells grant one stack per cast; cast-commit timing is an explicit inference because generated proc-phase flags are absent. At max rank, Slow at three stacks grants 30% movement speed for three seconds and preserves the haste stacks. Player and companion cast timing plus player/companion movement paths are wired; Arcane Orb is absent from the Mage catalog, and Moonfire/Starfire/Starsurge are not Mage entries, so those tooltip triggers remain unavailable. No WotLKDB fallback was used because stock 44400 describes a different permanent 2% talent. Focused validation passed 7 tests across two files; see [the feature note](WOW_MAGE_NETHERWIND_PRESENCE.md). -- [ ] Resolve Focus Magic's recipient critical-chance conflict: class spell row 54646 says +3%, while the generated talent-node tooltip says +1%. Runtime currently follows the class spell row. -- [ ] Verify Mage catalog references to Frozen Orb, Arcane Orb, Moonfire, Starfire, and Starsurge against the 3.3.5 source and class attribution before adding or remapping any entries. -- [ ] Add player-facing direction state before implementing Blink's 20-yard forward movement. +- [x] Focus Magic follows generated talent node 2211: its recipient aura and tooltip use +1% spell critical chance, while the separate Mage proc remains +3% for 10 seconds. The older `patch-enUS.MPQ` class spell row 54646's +3% recipient value is superseded by the current generated Area-52 talent data. +- [x] Improved Fire Blast (talent-27) reduces Fire Blast's cooldown by 1/2 seconds and increases its damage against monsters by 5/10% for players and generated companions; explicit rank modifiers prevent mixed-unit tooltip parsing from inventing values. +- [x] Shatter (talent-67) adds the generated +17/34/50 percentage points of critical chance to nonperiodic Mage spell hits against frozen targets, including Fingers of Frost, for players and generated companions. +- [x] Verified generated Mage talent-tooltip references against local `patch-enUS.MPQ` 3.3.5a Spell.dbc and SkillLineAbility.dbc: Moonfire and Starfire ranks map to Druid (skill line 574, class mask 1024); Arcane Orb rows 34172/34190 have no player skill-line or talent mapping; Frozen Orb and Starsurge have no named rows in this local Spell.dbc. WotLKDB's Frozen Orb row 72082 has no Mage class/trainer attribution, so tooltip mentions alone do not justify adding/remapping these entries. ### Warlock -- [ ] Resolve the capstone's +30% critical-chance rider after a physical hit while casting: rank gating and charge/consumption behavior are unspecified. -- [ ] Find source-backed proc probabilities and event details for Breathing Control and the remaining Priest-pair passives. The hidden child 499869 and End of Thought's tick interval are also absent locally. -- [ ] Reconcile the conflicting current CoA identities and values for Mind Transference, Deep Breathing Control, Divine Assistance, and related triggers against the local RuneWaker version before changing behavior. +- [x] Wire player Aftermath ranks 18119/18120 to proc on landed Conflagrate for 50%/100%, applying the generated talent tooltip's 50% slow for 4 seconds. Per the project source preference, the generated custom tooltip takes precedence over stock child 18118's WotLKDB 70%/5-second payload. +- [x] Add Aftermath to generated companion Warlocks: landed direct primary-target Conflagrate uses generated talent-982 ranks, a deterministic companion-seeded 50%/100% proc, and the same generated-tooltip 50% slow for four seconds as the player path. Companion Conflagrate now derives its burst from that Warlock's active Immolate/Shadowflame and consumes the DoT only after the hit lands. Party regression covers ranks 0 and 2, exact burst amount, and DoT consumption. +- [ ] Resolve Soul Leech (talent-1678)'s +30% critical-chance rider after a physical hit while casting. Unlinked custom patch-D rows 830297–830299 hint at a one-charge current-cast buff and cast-finish cleanup, but no rank spell links to them; neither the trigger, rank gate, nor consumption behavior is established. Keep the rider unwired until a matching source connects those rows. +- [x] Adopt current CoA Mind Transference (Warlock/Warrior 498642): spend 75 Rage, grant 6 Psi, and use a 1-second cooldown. The [current pair page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-1), [10.2.1 patch](https://chroniclesofarcadia.com/patch/10-2-1-1000) (fixed 50 Rage → 6 Psi), and [11.1.2 patch](https://chroniclesofarcadia.com/patch/11-1-2-1000) (75 Rage, 1-second cooldown) establish the current conversion. This replaces the local RuneWaker tooltip's consume-all-Rage, 35-Rage-per-Psi rule. Local component 621320 also grants +40% physical attack for 30 seconds; current CoA does not confirm that rider, so it is intentionally omitted. Player and companion conversions have focused regression coverage. +- [ ] Integrate current CoA Psychic Warrior (Warlock/Warrior 499868): area-damage spells summon a 187.5% main-hand DPS Ethereal Hammer; single-target damage spells summon a 1,050% main-hand DPS Ethereal Sword, both dealing Physical Dark damage. Patch [12.1.4.1500](https://chroniclesofarcadia.com/patch/12-1-4-1500) raised the area coefficient to 250%, then [12.1.5.1000](https://chroniclesofarcadia.com/patch/12-1-5-1000) reduced it to the current 187.5%; the [current pair page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-1) confirms the current values. The catalog now uses the current name/tooltip and an isolated helper resolves the coefficients, but combat integration remains open until CoA's Physical Dark defense behavior and the added-hit event/roll semantics are sourced or explicitly decided; see the [source/runtime note](ROM_WARLOCK_WARRIOR_PSYCHIC_WARRIOR.md). The attribute-gated extra main-hand weapon damage for Slash/Consistent Heart Strike has no stated amount and remains open. Do not map local hidden child 499869 to current Enraged 499871. +- [x] Adopt current CoA Enraged 499871 from the [Warlock/Warrior page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-1): Warrior General level 60, instant, 40-second cooldown, restores 100 Rage, 35 Focus, and 1 Psi. Add it as a separate Warlock/Warrior learned row, preserving RuneWaker Warrior General Enraged 490492 and leaving hidden local child 499869 unresolved. The shared resource-effect path handles all three pools for player and companion; regressions cover level-60 learnability, exact pair gating, resource caps, and cooldown. +- [ ] Update Breathing Control (Warlock/Warrior 498634) to the current CoA behavior: casts of Psychic Arrows, Warp Charge, Weakening Weave Curse, Slash, Soul Trauma, Puzzlement, Heart Collection Strike, or Surge of Malice can trigger Enraged automatically, replacing RuneWaker's cooldown-reset behavior. The [10.7.1 patch](https://chroniclesofarcadia.com/en/patch/10-7-1-2000) documents the behavior change, and [11.1.2](https://chroniclesofarcadia.com/patch/11-1-2-1000) documents the expanded trigger list. The proc probability and precise event timing are not published; leave the proc unwired until those are sourced. +- [ ] Keep Deep Breathing Control (Warlock/Warrior 499870)'s 15% HP rider unwired until its trigger is explicit. The current CoA row says “Your Breathing Control recovers more focus and an extra 15.0% HP,” and [11.1.2.3000](https://chroniclesofarcadia.com/patch/11-1-2-3000) raises the rider from 10% to 15%, but neither source says whether HP recovery occurs on manually cast Enraged 499871 or only when Breathing Control 498634 automatically triggers Enraged. The current CoA Breathing Control row leaves proc probability/timing unspecified, and local 498634/499870 rows have no components. Do not attach the heal to manual 499871 without a source-defined event link; the extra Focus amount also remains unknown. +- [x] Replace local Divine Assistance (Warlock/Priest 498668)'s Inspiration-stack/Defense Net reset behavior with the current passive +16% Magical Damage and Healing. The [10.2.1 patch](https://chroniclesofarcadia.com/patch/10-2-1-1000) establishes the stat effect and [12.1.0](https://chroniclesofarcadia.com/patch/12-1-0-5000) makes it passive; the [current pair page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-5) confirms the current payload. Player and companion effects are covered. +- [x] Update Warlock/Priest Healing Fortune (498633): a landed Psychic Arrows hit grants +12% heal power and +12% Wisdom for 20 seconds, and Warp Charge heals a friendly target instead of dealing damage. Psychic Rising Tide (498643) makes Rising Tide instant with a 5-second cooldown, restores 1 Psi, and triggers Healing Fortune on a critical hit. The [current pair page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-5) selects these current effects over RuneWaker's instant/free Urgent Heal proc descriptions. The simulator cannot route an ally-targeted Rising Tide cast to that ally's hostile target because party members have no hostile-target selection state; the current passive's other sourced effects are wired. +- [x] Replace RuneWaker's stale Warlock/Priest Soul Enlightenment (498649) payload with current CoA's +5.7% damage dealt and +17.1% received healing for 30 seconds, costing 2 Psi, in a 7.5-unit party aura radius (CoA range 100/radius 75 interpreted through the established 10:1 conversion). Exact-pair catalog and player/companion cast integrations are covered. The simulator has only a party roster, and its existing area targeting requires line of sight. CoA's Willpower Construct Caster-only restriction is retained in the tooltip but not enforced because the cast validator has no corresponding state gate. See [the source/rationale note](ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT.md). +- [x] Add Mind Shield's (Warlock/Priest 498648) explicit +1 Psi on Urgent Heal from the [current pair page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-5). Its Defense Net duration reduction is retained. Keep Ring of Comfort's cooldown-reset rider open because the proc probability is unspecified, and leave the enhanced-defense amount unmodeled because CoA does not quantify it. +- [x] Integrate current CoA Warlock/Priest Spreading Pain (499856) in the generated catalog/tooltip and player/companion cast effects. The [current CoA pair page](https://chroniclesofarcadia.com/en/wiki/skills/list/9-5) specifies the three linked debuffs, +18% Magical Attack Power, +25% Magical Critical Bonus, and activation of Healing Fortune. Patch [10.6.1](https://chroniclesofarcadia.com/en/patch/10-6-1-1000) narrows that activation to Healing Fortune's +12% healing for 20 seconds, excluding its Wisdom and Warp Charge clauses. The three RuneWaker children 497959/497960/497964 remain intact. The tagged +25% Magical Critical Bonus aura is consumed by the central critical resolver for player and companion magical spell crits, scaling only the bonus portion (2.0 becomes 2.25); crit chance and ordinary hits stay unchanged. CoA lists 10% MP plus 15 Focus and range 150, while the local row supplies only 15 Focus and range 22.5. RoM Warlock has no Mana pool and no general CoA range conversion is established; keep the unrepresentable base-MP difference and local range documented rather than inventing a cost/range override. +- [x] Complete Warlock/Mage Soul Brand (498705) player and party event hooks. Current CoA replaces RuneWaker's three-skill trigger and 9% Dark/Flame-only debuff with a +2% per stack (four-stack cap, 20-second refresh) damage-taken aura from any landed Fire damage, including periodic hits, plus 1 Psi per trigger. Player and generated-companion direct/periodic event paths apply the target aura and grant Psi to the triggering source. The simulator maps the five RoM elemental categories to Fire, Frost, Nature, Holy, and Shadow; Physical and Arcane are unaffected. +- [x] Implement current CoA Warlock/Mage Soul Brand Sting (498710): 2 Psi, 1× derived Intelligence added to each 3737.5 Dark/Fire packet, cast only under an active locally tagged Willpower Blade aura, and reset Flaming Heart Strike on cast. The CoA state entry is ID 1494096 and the local RuneWaker aura source is ID 497955; the gate uses the observed local state name and does not equate those IDs. Preserve local range 22.5 because CoA's 150 has no verified unit conversion. See [the source/rationale note](ROM_WARLOCK_MAGE_SOUL_BRAND_STING.md). +- [ ] Find source-backed proc probabilities and event details for Breathing Control, Mind Shield's Ring of Comfort reset, and remaining Priest-pair passives. The old hidden child 499869 and End of Thought's tick interval remain unresolved; do not infer current Enraged 499871 is the same child. ### Druid -- [ ] Verify the local tooltip references to Flourish and Lesser Healing Wave against the 3.3.5 Druid catalog and class attribution before adding either ability. +- [x] Companion Rejuvenation snapshots the owner's Improved Rejuvenation rank bonus (+7/14/20%) when the HoT is applied, matching the player healing path. +- [x] Nature's Reach (talent-764) adds the generated +2/4/6 yards to cast-time/channel damaging spells for players and generated companions; instant damage and healing spells receive no range bonus. +- [x] Master Shapeshifter (talent-1915) applies the generated rank 2/4% form-specific bonus to Bear physical damage, Cat melee critical chance, Moonkin Arcane/Nature damage, and Tree healing across player and companion direct/periodic paths. +- [x] Predatory Instincts (talent-1795; rank spells 33859/33866/33867) applies Aura 163's 5/10/15% increase to the critical bonus portion and Aura 229's 4/7/10% reduction to damage from authored area attacks, with both clauses gated by Cat Form. Generated rank text and local DBC effects give the values; [WotLKDB rank 2](https://wotlkdb.com/?spell=33866) independently confirms Cat Form plus Aura 163/229. Player and generated-companion outgoing/incoming paths are covered. The general `damagePlayer(amount, school)` adapter has no attack-delivery metadata, so this AoE-specific rider is applied only when the enemy attack definition identifies `delivery: "area"`; no competing AoE-specific reduction is currently modeled, and the source's non-stacking clause is therefore not independently exercised. +- [x] Catalog attribution check: Lesser Healing Wave is present only as a Shaman spell in the stock 3.3.5 data; Flourish is in the separate custom Ascension class-11 catalog, not the stock Druid catalog. Neither should be added to the stock Druid catalog from a tooltip reference alone. ### Warrior -- [ ] Resolve Unbridled Wrath's missing proc probability, rank-2 child 812964, and rank-1 amount conflict: the generated tooltip says 2/4 Rage, while WotLKDB child 12964 gives 1 Rage. -- [ ] Continue the runtime pass over Warrior passives and procs not covered by the existing focused mechanics tests. +- [x] Damage Shield reflects 10/20% of resolved block value after a landed direct melee hit for players and generated companions. +- [x] Resolve Unbridled Wrath's project data choice: use generated node `talent-159`'s custom 2/4-Rage tooltip values, with the upstream [WotLK Simulator](https://github.com/wowsims/wotlk/blob/master/sim/warrior/talents.go)'s 3 procs-per-minute-per-rank melee-white-hit model to fill the missing effective proc rate. The generated child links still conflict (12964/812964), but the project's generated tooltip takes precedence; an isolated calculation helper is in place. +- [x] Unbridled Wrath grants the generated 2/4 Rage on eligible landed, damaging Warrior main-hand melee autoattacks, using the source-backed 3 procs-per-minute-per-rank rate and each Warrior's un-hasted weapon speed. Player and generated-companion hits are covered; Warrior off-hand autoattacks are not modeled. +- [x] Improved Victory Rush uses generated 33/66/100% parry proc ranks, a 10-second ready window, 12-second internal cooldown, +20/40/60 percentage points of Victory Rush critical chance, and +33/66/100% threat during the parry window. The base Victory Rush ability is also enabled for 20 seconds after an XP-yielding kill. Player and generated companion casts are gated on readiness and consume the landed-hit window. +- [x] Critical Block (`talent-1893`) applies its generated 8/16/25% extra reduction to successful blocked hits for player and generated-companion Warriors. The reduction is excluded against player attackers and when Touched by the Light (`talent-2195`) is learned; the conflicting stock double-block chance is not applied. +- [x] Improved Defensive Stance applies its generated stance mitigation and avoidance-triggered Enrage proc for player and generated-companion Warriors. ## RuneWaker ### Warrior -- [ ] Find the matching local Cross Thorn Blow (494018) row and child 499956 before adding it as a Briar Technique trigger. -- [ ] Reconcile Warrior/Knight Resist (493251)'s Blocking Stance reference: RuneWaker's active stance is 491480, while the referenced 493287 row does not match; the current CoA entry also omits the Rage proc chance and amount. -- [ ] Confirm version and identity for Recovery of Life (494377), Exhaustion (493248), Speed Slash (499827), and Excellent Combat Training (499806). Current CoA payloads conflict with local RuneWaker mappings to missing rows 499828, 499825, and 499826. +- [x] Add current CoA's missing level-50 Warrior/Knight Blocking Stance passive (493287) as a distinct catalog marker. The [current CoA pair page](https://chroniclesofarcadia.com/wiki/skills/list/1-6?locale=en) lists it separately from Resist (493251) and local active Blocking Stance (491480). Its tooltip records the sourced stance-gated static modifiers; the marker carries no generic stat aura so the bonuses do not activate when 491480 is off. Its physical-hit proc grants 3 Rage with a 10-second retrigger lockout, but the chance is not stated. +- [x] Integrate current CoA's Warrior/Knight stance modifiers: learned Blocking Stance 493287 plus active local stance 491480 gives +8% parry, −18.9% received damage, and +75.4% Aggro; learned Resist 493251 gives +80% Aggro and 20% reduced received Physical Damage. Player and generated-companion incoming hits and threat use the sourced factors. The two Aggro bonuses remain separate and their combined result is neutral/unmodeled until CoA stacking is established; the Rage proc chances are unspecified, so they remain unmodeled. CoA lists a 10-second retrigger lockout for each proc. +- [x] Finish current CoA Warrior/Rogue Exhaustion (493248). The [current CoA Warrior/Rogue page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-3) confirms the same name, ID, and pair as the local passive; it reduces Whirlwind's Rage cost by 20 and cooldown by 10 seconds, and a landed Probing Attack has a 30% chance to restore 25 Energy and 50 Rage. Player and generated-companion landed-hit hooks use that proc; focused coverage checks player casts and the capped companion resource helper. The separate CoA Probing Attack 493283 uses a 664.3% main-hand DPS coefficient, or 1116.9% with a caster-owned Bleed or locally represented two-handed hammer (`mace` in weapon metadata). The unquantified hammer cooldown rider remains unapplied. The local primary-Warrior Probing Attack 491133 remains distinct and does not trigger Exhaustion. The earlier ID-move claim was incorrect: the current CoA page still identifies Exhaustion as 493248 and Morale Slash as 1491760. +- [x] Apply the supported Warrior/Druid Recovery of Life (494377) → current CoA Rage of Calmness changes. The [CoA Warrior/Druid page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-8) confirms the same passive ID/name lineage and says Whirlwind costs less Rage and has a shorter cooldown. Local RuneWaker 494377 supplies −10 Rage and −10 seconds for Whirlwind, while component 506368 gives the post-hit general Rage rider a 20-second window. CoA's current page references Whirlwind 494939, while the RuneWaker catalog exposes 490133; `romWarriorDruidRageOfCalmness.ts` gates the local values to learned 494377 on Warrior/Druid and local Whirlwind 490133. Player and companion cost/cooldown paths and the catalog label are updated. Focused helper and player/party integration coverage passes 8 tests across two files. +- [ ] Implement Rage of Calmness's post-hit general Rage-cost reduction only when its numeric amount is sourced. The 20-second duration is known from local component 506368, but neither that component nor current CoA specifies the reduction amount; the rider remains explicitly unwired. +- [x] Warrior/Warlock Speed Slash (499827): runtime applies the current CoA −10 Rage cost to Slash, and its generated tooltip now says Slash damage increases without inventing the unspecified amount. The [current CoA pair page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-9) does not support RuneWaker's missing-child cooldown reset. +- [x] Warrior/Warlock Excellent Combat Training (499806): runtime applies current CoA's +20% Physical Damage from the [current CoA pair page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-9), and its generated tooltip now states that effect without unsupported cooldown resets. ### Scout -- [ ] Quantify Enhanced Throat Attack's extra range from a matching source. -- [ ] Add Natural Poison Powder acquisition to the Scout/Rogue loadout model. +- [x] Scout/Knight Enhanced Armor Perfection (492346) uses local component 501823 to extend Enhanced Armor (490152) from its 300-second base to 600 seconds for player and party casts. +- [x] Scout/Priest Sniper (492344) reduces Snipe (490450)'s cast time by one second for player and generated companion Scouts. +- [x] Scout/Priest Screen Attack (499555) now follows current CoA's active +17.4% party damage buff for 20 seconds and 60-second cooldown, replacing the local passive marker. CoA lists +55 skill training (not character level) and radius 150; the simulator has no training rank and interprets radius as 15 project units. Current skill-page duration wins over patch 11.1.1's earlier 30 seconds; DoT coverage follows the patch. Player and generated-companion casts scale direct and periodic damage, use existing party radius/LOS/living-recipient rules, and expire at the modeled 20-second boundary. See [the source/runtime note](ROM_SCOUT_PRIEST_SCREEN_ATTACK.md). +- [x] Scout/Priest Drums of War (493010) follows CoA's +20% critical damage after landed Shot (CoA Shot 493011 is mapped by name/role to local RuneWaker Shot 490423). It lasts 15 seconds and then waits another 15 seconds before it can proc again, interpreted as 30 seconds from proc to ready. The buff applies to party members within the modeled range 50; it raises the critical bonus portion (2.0→2.2), leaves chance/noncrit damage unchanged, and stacks additively with critical-damage bonuses such as Spreading Pain. Player/companion proc and hit-resolution tests are documented in [the source/runtime note](ROM_SCOUT_PRIEST_DRUMS_OF_WAR.md). +- [x] Priest/Scout Curing Shot (492636) now follows current CoA: instant, 6-second cooldown, 125.6 immediate healing, then 167.5 every 3 seconds for 18 seconds, radius 100 (10 project units), no target cap, and caster-only +10% Elemental Damage for 18 seconds. CoA says all raid members; the simulator reaches all eligible modeled party members. CoA defines Elemental Damage by subclass; Water is inferred from the Priest/Scout kit and maps to the project's `frost` school, so other schools are unchanged. The local 120 MP cost is preserved because CoA publishes 242 MP only at +105 without a cost curve. Player/companion coverage and source assumptions are in [the feature note](ROM_PRIEST_SCOUT_CURING_SHOT.md). +- [ ] Quantify Scout/Warrior Enhanced Throat Attack (491489)'s extra range. Hash-matched RuneWaker data has no components or modifier linking it to Throat Attack (490428); the passive's own range 5 is its cast-distance field, not a range bonus. The current [CoA patch notes](https://chroniclesofarcadia.com/patch/11-1-1-4000) rework the same-named skill into Soldier's Determination, so that later behavior does not fill the RuneWaker amount. Do not apply the cast-distance field as an additive modifier. +- [x] Model RuneWaker item 200563, Poison Powder, as an unlimited carried reagent for Scout/Rogue. Poisonous Spit does not require the separate Rogue Poison Bottle aura. - [ ] Add pet-specific stats and event hooks before implementing pet critical, dodge, and damage passives. - [ ] Review the remaining Scout paired-class passives for source-backed runtime coverage. ### Rogue -- [ ] Add off-hand swing events before implementing Off Hand Mastery (490143); its local component 620335 contains damage and accuracy modifiers. -- [ ] Resolve Enchanted Throw child 491185's payload. The current runtime reuses Throw's local damage calculation because the child row is absent. +- [x] Align Rogue/Scout Coerce (493019) to current CoA's [+20.2% Low Blow damage](https://chroniclesofarcadia.com/en/wiki/skills/list/3-2). CoA says the ability also lowers Energy cost but omits the amount, so retain only the compatible local −5 Energy reduction; remove RuneWaker's conflicting below-30%-health temporary +2% Physical Damage proc. Player and generated-companion Low Blow paths are covered. +- [x] Follow current CoA Rogue-primary behavior for Poisonous Hands (490329) and Energized Hands (490347): mutually exclusive 900-second buffs; a target debuff that stacks to ten but applies a fixed 8% damage-dealt reduction total; one 1% self attack-speed stack per successful target application; and Energized Hands' +100% Energy recovery, +50% maximum Energy, +20% Energy costs, and −0.1-second skill cooldowns. CoA leaves Poisonous Hands' chance qualitative, so the populated RuneWaker 50% remains a documented fallback. Poison Bottle consumption and the faster-main-hand cast-time formula are not modeled because CoA provides no runtime inventory model or formula. The cooldown rider is applied once as a flat 100 ms at cooldown commit. Player and companion mechanics pass 49 focused tests; see [the behavior rationale](ROM_ROGUE_POISONOUS_HANDS.md). +- [x] Replace Rogue/Mage RuneWaker Enchanted Throw with current CoA Chaos Dagger (491178): the learned passive adds a Fire packet equal to 169.4% of the attacking hand's weapon DPS on each landed main-hand or off-hand normal attack for players and generated companions. The matching CoA skill page and [12.1.0.4000 patch](https://chroniclesofarcadia.com/patch/12-1-0-4000) establish the current passive identity and damage; RuneWaker's 25-Mana activatable projectile buff, Throw substitution, and hidden physical child 491185 do not describe the current skill and are removed for this pair. The current page still lists 25 MP but does not say whether it is paid per normal attack after the passive conversion; runtime does not invent that recurring debit. The slight temporary Physical Attack Power rider has no sourced amount or duration and remains unwired. See [the source and runtime note](ROM_ROGUE_MAGE_CHAOS_DAGGER.md). - [ ] Add projectile-ammunition state if ammunition costs or consumption should affect Rogue ranged abilities. ### Priest -- [ ] Find Infused Light Chain (498610)'s on-hit chance, Rage amount, and damage increase. Its local passive has no source components; current CoA reuses the ID for a conflicting later Rage Control passive. -- [ ] Quantify Protection Rune Seal's healing-strength rider from a matching source. -- [ ] Resolve the local/source identity conflicts for Priest/Champion 498612 and Priest 490274–490276 before importing any later CoA behavior. +- [x] Priest/Warrior Condensed Rage (493038) follows current CoA as a passive +22% Physical Damage effect. The [CoA skill entry](https://chroniclesofarcadia.com/en/wiki/skills/list/5-1) confirms the same name, ID, and pair; patch 11.1.1 changed its damage type from Water/Light to Physical, and patch 11.1.1.5000 removed the buff requirement. RuneWaker's incoming-hit heal state and missing children 493056/495293 are superseded. The player and companion physical-damage paths use the learned passive without an obsolete trigger/stance gate. +- [x] Priest/Champion 498610 follows current CoA's Rage Control passive: the [current CoA Priest/Champion list](https://chroniclesofarcadia.com/en/wiki/skills/list/5-10) keeps the same ID and pair but renames/reworks RuneWaker's Infused Light Chain into a passive that grants 20 Rage for each completed second of spell channeling. Player and companion channels grant whole seconds only; ordinary casts and partial seconds do not count. Interrupted channels preserve only their completed seconds. The local Chain of Light damage, cooldown, and on-hit riders are removed. +- [ ] Keep Protection Rune Seal's local Regenerate healing-strength rider unresolved unless a matching source quantifies it. The local generated 498613 passive has no components or numeric heal modifier; current CoA 498613 says only that Regenerate has a “slight chance” to reset Heart Rune Energy and does not document an increased-healing rider or proc percentage. Do not infer a heal bonus from “empowers,” and do not reinterpret the separately modeled local 8% cooldown-reset chance as a healing modifier. +- [x] Integrate current CoA Priest/Champion Beacon of Regeneration (498620): a 30-second mark on one friendly party member, once per direct healing cast after recipients are aggregated. The [CoA row](https://chroniclesofarcadia.com/en/wiki/skills/list/5-10) publishes 770 HP at skill +105, which the simulator deliberately applies to every unlocked rank because no skill progression model exists. Player and companion casts use generic source healing-done and target healing-taken modifiers consistently; unbuffed transfer is 770 and the +5% Faith aura resolves it to 809 on either path. The local level-50 row costs 29 MP plus 1% and lists range 20 (decimeters), while CoA +105 lists 88 MP plus 1% and range 200; there is no source-backed cost curve to reconcile the flat-MP difference. Local child 621227 (`dotBase=35`, `fixedValue=0.2`, `skillLevelArg=30`) does not map to the current trigger/amount. HoT ticks and channel pulses remain excluded because CoA does not settle their eligibility and the structured event lacks a periodic marker. +- [x] Finish the CoA-backed Priest reworks mapped from local Ice Fog ranks: patch 10.2.1 explicitly maps Ice Fog 1/2/3 to Holy Blessing, Vow of Silence, and Holy Void, and the [current Priest skill list](https://chroniclesofarcadia.com/wiki/skills/list/5-1) confirms the same IDs and levels. Bone Chill is a separate skill, 491165. + - [x] Holy Blessing (490274) follows the [current CoA Priest-primary entry](https://chroniclesofarcadia.com/en/wiki/skills/list/5-7): permanent Wisdom `(current Wisdom + 115) × 1.105` and +100.9% Light damage. The tagged caster aura maps Light to Holy; player spell damage resolves its school-scoped aura, and generated-companion direct damage uses the same scope when it takes the deterministic party path. The dedicated stat stage resolves existing Wisdom modifiers first and adds only the incremental Wisdom-to-spell-power conversion to coefficient-based spell amounts; generic spell-power aura modifiers stay on their usual path. Current CoA does not specify how this formula stacks with other Wisdom buffs, so existing Wisdom modifiers use the simulator's current stat resolver before this passive is applied. `applyAuraStats` can expose the changed Wisdom and derived spell power, but cast coefficients read equipment scaling directly; the per-skill delta bridges that boundary without double-counting generic spell-power fields. Player and generated-companion combat tests cover actual spell amounts and Holy versus Nature damage. The player Frost control includes RuneWaker's existing “Prayer: water-damage” +5% Frost aura in its expected value; the Holy and Nature controls isolate Holy Blessing's school scope. + - [x] Vow of Silence (490275) interrupts and silences for 8.4 seconds on NPC targets and 4.2 seconds on player targets. Player and generated-companion casts use the shorter player-target duration. + - [x] Holy Void (490276) follows the current [CoA Priest-primary entry](https://chroniclesofarcadia.com/wiki/skills/list/5-1): instant 1655 Light damage plus Voidal Infection for 20 seconds, reducing physical and magical defense by 18.8%. The cast override maps the catalog's physical-defense alias to armor and keeps the magical-defense debuff; player and generated-companion casts against NPCs both deal Holy/Light damage and apply the target aura. NPC armor and modeled magical resistances are reduced by the debuff. The generic aura path supports character targets, but this focused test covers NPC targets only. NPCs have no Light/Holy resistance field, so magical-defense does not mitigate Holy Void's Light hit; this remains an explicit simulator limit. Three focused runtime regressions pass. +- [x] Finish Priest/Champion Heart Rune Energy (498612)'s current CoA behavior. The [current CoA Priest/Champion entry](https://chroniclesofarcadia.com/en/wiki/skills/list/5-10) and patch [11.1.5.3000](https://chroniclesofarcadia.com/tr/patch/11-1-5-3000) confirm the same name, ID, and pair, but a deliberate payload rework: replace local healing and +2% Mind with 975.1% CPS Light damage (runtime coefficient 9.751, Light/Holy school), 15 Rage cost, 150 range, 80 radius, instant cast, 12-second cooldown, and −15 seconds to Blessing of Humility's cooldown on use. Patch [11.1.5.4002](https://chroniclesofarcadia.com/patch/11-1-5-4000) confirms the AoE is centered around the caster with 80 range. Player and generated-companion regressions confirm damage to targets at or inside 80, none just outside, six eligible targets without a catalogued cap, Rage cost, cooldown, and Blessing cooldown reduction. CoA publishes no target-count cap, so none is added; the simulator resolves targets among its modeled visible/engaged mobs. The existing Protection Rune Seal test still verifies its separate Regenerate tick reset against ID 498612. +- [x] Rework Priest/Mage Enlightenment (492933) to current CoA. The [current CoA Priest/Mage page](https://chroniclesofarcadia.com/fr/wiki/skills/list/5-4) confirms the same name, ID, and pair, and says it passively increases Wisdom by 12%. This replaces RuneWaker's completed-Heal (490261) trigger, +1% Wisdom for 8 seconds, and 20-second internal cooldown. The catalog tooltip now reads “Passive: Increases Wisdom by 12%,” and the effect is a permanent caster aura with a standard Wisdom percent modifier of 0.12. Player passive synchronization activates it when the build is initialized or updated; generated companions apply learned self-target passives before their first RuneWaker cast. Two helper tests and two player/companion integration tests pass. No special formula or runtime limitation is known for this modeled stat modifier. +- [x] Integrate current CoA Priest/Scout Saint's Blessing (493039): the current skill page gives +28% damage only against live targets below 30% max HP, separately from its low-health Heal rider. Player and generated-companion direct and periodic damage packets check the live target threshold at each packet and apply +28% once. The older 11.1.5.2000 patch says +21%; the current +28% row takes precedence. The separate Heal rider is documented but still unresolved: CoA lists Heal 493048 with +597/+21% at skill level 105, while the local generated catalog has no 493048 row or current lower-rank curve. See [the source/runtime note](ROM_PRIEST_SCOUT_SAINTS_BLESSING.md). - [ ] Review the remaining conditional Priest passives for complete source-backed triggers and effects. ### Knight -- [ ] Resolve God's Sword's “critical hit rate increased by 40%” as additive percentage points or a relative increase before integrating it into Holy Strike damage rolls. -- [ ] Find Deadly Whirlwind's trigger or child attribution for its 10-second healing-reduction rider. -- [ ] Find Holy Light's Fury's additional damage value; the current CoA page describes a conflicting later healing version. -- [ ] Resolve Light-vulnerability's resistance direction, which conflicts between the tooltip and extracted component. +- [x] Remove legacy Holy Seal periodic damage from 490148, 490149, 490150, and 490151 while preserving their direct attacks and seal build/spend behavior. Current CoA Knight/Warrior entries and patch 10.6.1 establish that Holy Seal no longer deals periodic damage; the runtime filters only those legacy DoT outputs. +- [x] Align Knight-primary Holy Power Explosion (490172) to current CoA's passive +198% Aggro. The [current CoA Knight/Warrior page](https://chroniclesofarcadia.com/wiki/skills/list/6-1?locale=en) identifies the passive; patch [12.1.3](https://chroniclesofarcadia.com/patch/12-1-3-1000) confirms the value. The old active mana/healing payload is removed. Knight, Blocking Stance, and Resist threat factors are applied individually when their source gates are met; overlapping Aggro factors remain uncombined pending a source-defined stacking rule. +- [x] Replace the stale Knight/Rogue Leopard Instinct (495402) absorb with CoA's current passive stacks: each received hit adds one stack, up to 10, granting +3 percentage points Dodge and a separately recorded +3% Magic Resistance Rate per stack; a dodge removes one stack. Player and companion incoming-hit/dodge paths update the stack aura. Patch [11.1.5.3000](https://chroniclesofarcadia.com/tr/patch/11-1-5-3000) replaced the absorb, and patch [12.1.2](https://chroniclesofarcadia.com/fr/patch/12-1-2-1000) made it passive. Magic Resistance Rate remains unapplied because the simulator has no consumer; no absorb or timer is substituted. +- [x] Fearless (490088) preserves its local +3% Strength and +3% Stamina effects and grants 20-second Fear immunity; the misleading Fear-control tooltip marker is filtered out. +- [x] Integrate current CoA Knight/Rogue God's Sword (491621): while the level-15 passive is learned, offensive physical abilities add 350% of offhand weapon DPS as Light damage and generate high Aggro. The current [CoA skill entry](https://chroniclesofarcadia.com/wiki/skills/list/6-3?locale=ru) confirms the same ID/name/pair; patch [10.6.1](https://chroniclesofarcadia.com/en/patch/10-6-1-1000) begins the offhand-DPS rework, [11.1.5](https://chroniclesofarcadia.com/tr/patch/11-1-5-3000) changes it to 350% Light, and [12.1.0](https://chroniclesofarcadia.com/patch/12-1-0-5000) makes it passive. This supersedes RuneWaker's +40% Holy Strike crit rider. Player and generated-companion landed direct-hit resolvers now check the Knight/Rogue pairing, learned passive, a qualifying physical ability (including source descriptions marked “Physical Light Damage”), and positive offhand DPS, then record a separate Light/Holy damage packet at 3.5× offhand DPS. Validation: 4 helper tests and 3 player/companion runtime integration tests passed. CoA does not publish an Aggro multiplier or specify how multi-hit, channel, and AoE casts generate extra damage; no Aggro multiplier or additional cadence is inferred, and coverage follows only the direct damage event granularity the runtime exposes. +- [x] Align Deadly Whirlwind (491639) to current CoA: successful Whirlwind hits apply Deadly Wound, with current Whirlwind text specifying 30% reduced received healing for 10 seconds (5 seconds on player targets). CoA still says the passive reduces Whirlwind Rage cost and cooldown but gives no amounts, so retain the matching local RuneWaker −10 Rage/−20-second values; do not import a damage-type or visual rider. +- [x] Bridge the local Knight/Priest 491635 row to current CoA's Compassion of Holy Light behavior. The selected English [CoA skill list](https://chroniclesofarcadia.com/wiki/skills/list/6-5?locale=en) reports Knight/Shaman, while localized/index results disagree on the displayed pair; this simulator has no playable Shaman class/pair. The code keeps the local pairing and labels the exact-ID cross-pair bridge in the tooltip; it does not claim the pair identities match. The [11.1.5 patch](https://chroniclesofarcadia.com/patch/11-1-5-3000) supplies the 120 + 0.2 × STA landed-hit heal, Holy Illumination trigger, and 5-to-4-second cooldown reduction; player and companion Whirlwind Shield hits are covered. Holy Illumination uses the current 15% damage-reduction/10-second payload. The simulator has no shield-defense stat, so the patch's 5× shield-defense damage rider is not modeled. +- [x] Align Divine Punishment (491608) to current CoA: Punishment gains 28.5% damage and applies +2% damage taken per Holy Seal stack for 10 seconds. This replaces RuneWaker's +1% Light-only vulnerability. The current modifier is general damage taken, not Light-only, and is based on the pre-spend Holy Seal count. - [ ] Identify unresolved periodic or triggered spell references before implementing their effects. ### Warden -- [ ] Resolve Damage Transfer (493399): component 503942 references missing child 493416 and gives a 10-second duration with 30% modifiers, while tooltip component 503643 gives 15 seconds; current CoA does not provide a matching child payload. -- [ ] Resolve Revival (499542)'s missing trigger state 499544; local component 623078 has no numeric payload, and current CoA reuses the ID for a different skill. -- [ ] Find Weak Point Strike's extra-hit chance; local components 620294/620295 contain the base and bonus hit formulas but no proc chance. -- [ ] Add pet defense stats before implementing Tough Oak's pet-defense rider, and continue reviewing remaining reactive passives. +- [x] Damage Transfer (493399) now handles player and generated-party Warden incoming hits. The hash-matched RuneWaker executable modifier 503942 applies a 30% transfer for 10 seconds when the owner's supported summon (102297/102324/102325) is alive and within inclusive 3D range 300; the party path applies the split once, consumes pet absorbs, syncs pet health/aura state, and records one pet damage event without chaining. Tooltip component 503643's 15-second value is not executable; do not copy later CoA behavior. +- [ ] Keep local Warden Revival (499542) unresolved: trigger state 499544 and component 623078 lack a numeric healing payload. Current CoA uses ID 499542 for Rogue/Warden Low Blow, a different name and class role, so do not map that behavior onto Warden Revival. [CoA Rogue/Warden list](https://chroniclesofarcadia.com/en/wiki/skills/list/3-7) +- [ ] Keep the local Weak Point Strike (494043) bonus hit disabled until its proc chance is sourced; components 620294/620295 contain the two damage formulas but no chance. Current CoA uses ID 494043 for Rogue/Warden Blood Hound, a different conditional hit. [CoA Rogue/Warden list](https://chroniclesofarcadia.com/en/wiki/skills/list/3-7) +- [ ] Add pet defense stats before implementing Tough Oak's defense rider. Current CoA specifies +60% pet Physical Defense for the same Warden/Mage passive, while the RuneWaker component describes +5% physical-defense-percent; no pet Physical Defense baseline or mitigation formula exists in the simulator. Keep the rider unresolved rather than substituting armor or a WoW pet-defense formula. Current CoA pet skill IDs also differ from the local cooldown IDs; see [the source and runtime plan](ROM_WARDEN_MAGE_TOUGH_OAK.md). ### Mage -- [ ] Verify Eruption's proc chance and damage calculation against a matching RuneWaker source. Party casts now follow the player runtime, but the existing 10% chance and damage-doubling interpretation remain unverified; later CoA values do not resolve the local version or formula. -- [ ] Find whether rank 2 Catalysis should have a mana tick and quantify Flame Follower's critical-damage amount; neither value appears in the local source payload. +- [x] Apply current CoA's 30% base proc chance to Eruption 490221. The current [CoA Mage page](https://chroniclesofarcadia.com/wiki/skills/list/4?locale=en) identifies the passive and Fireball/Flame triggers; patch [10.2.1](https://chroniclesofarcadia.com/patch/10-2-1-1000) raises the base chance from 10% to 30%. No later base-chance change was found. Patch 12.1.0.5000 implies Elemental Catalysis also increases the chance but gives no value, and 10.2.1.1250 raises damage to “200%” without defining the baseline. The base chance is updated and tested; the EC bonus and damage interpretation remain unresolved. Existing damage formula is unchanged and is not source-verified. +- [x] Align Fire Ward (490248) with the current [CoA Mage page](https://chroniclesofarcadia.com/wiki/skills/list/4?locale=en): apply −11.5% received damage to every modeled magical school for the caster and party within radius 100 (10 runtime units); preserve local 120 MP, range 150 (15 runtime units), instant cast, and 10-minute duration because CoA omits duration. The hash-matched RuneWaker component 500366 grants +10 Fire resistance, which remains the runtime value; CoA lists +230 only at skill level 105, but there is no source-backed scaling curve or skill-level state to derive other ranks. The isolated catalog/aura regression passed (1 test), checking all six magical schools and excluding physical mitigation. Player and generated-companion party-scope/radius integration tests pass (2/2): each applies Fire Ward to the caster and eligible nearby party members, while excluding the distant party member. +- [x] Rank 2 Elemental Catalysis (497971) has no Mana tick: its RuneWaker tooltip omits Mana regeneration and component 620176 has `dotTime=0` and `dotBase=0`; rank 1's Mana tick stays rank-specific. +- [x] Current CoA Mage/Druid Green Guardian (494331) replaces the conflicting local passive/Protection-expiry HoTs for that exact pair. Players and generated companions gain one stack per full observed stationary second, up to 20, for +1% movement speed per stack. Companions auto-cast the learned zero-cost self skill on their first available combat action when the aura is absent; that is a simulator policy. A full stationary second after a sampled move is an explicit timing approximation. Stack loss and the MP refund remain unwired because the current CoA page gives no loss trigger or percentage basis. See [the source/runtime note](ROM_DRUID_MAGE_GREEN_GUARDIAN.md). +- [ ] Keep the local Mage/Warden Flame Follower (494051) passive unresolved: its critical-rate amount and Fireball trigger phase are unspecified, while current CoA has reworked Flame Follower under 490244 and reused 494051 for Purgatory Fire. Do not map the current active summon onto the old local passive by ID or name alone; see [the source review](ROM_MAGE_WARDEN_FLAME_FOLLOWER_SOURCE_REVIEW.md). ### Druid -- [ ] Add simulator support for Charm's faction conversion and Rebirth's debt reduction. Hostile player targets are unsupported, so Necrotic Wound's player-only healing reduction also needs a supported target path. -- [ ] Find matching-version proc probabilities for Revival Slash, Quick Light Protection, Boiling Rock, Inspiration, Inspiration Display, Avalanche, Extended Recovery, and Spring Flower Eulogy. Current CoA Inspiration and Recovery descriptions conflict with RuneWaker triggers. +- [x] Druid/Warrior Cross of Thorns Attacks (499956) is emitted as a separate active elite skill from its local level-60 learn row (key item 546833, prerequisite 499955). It selects the source-backed two-hit Nature Power branch, and Briar Technique listens to 499956; 494018 remains a separate ability. +- [x] Record current CoA Spirit Guidance (local Charm 493536) rules in an isolated helper with 7 focused tests: players cannot be targeted; NPCs become friendly at nonnegative caster reputation and remain hostile below zero. CoA lists 16.2 seconds at +55 skill but gives no rank-duration formula, so do not reuse RuneWaker's local 3-second component as a universal CoA duration. Runtime faction/reputation state is still missing. +- [x] Record current CoA Rebirth rules in the same helper: Rebirth 493537 reduces death debt by 30% and optionally accepts an Amulet of Light or Golden Amulet for an unspecified extra reduction; Advanced Rebirth 493559 reduces it by 45% with required Amulet of Light (203606); Supreme Rebirth 493560 reduces it by 75% with required Golden Amulet (203605). Runtime death-debt units, rounding, inventory, and item consumption are not modeled, so this is source documentation/helper coverage rather than a claim of runtime implementation. +- [x] Current CoA Druid/Rogue Necrotic Wound (494321) and Corrosive Poison (494024) replace the conflicting RuneWaker effects for that exact pair: 25 Energy/12-second DoT poison; Wound requires poison plus one Nature's Power, spends 4% Mana once at channel start, hits three times for 329.7% Dark damage across 1.5 seconds, and spreads a fresh poison to targets within radius 8, with no Wound cooldown or old healing-reduction/root riders. The 150/80 CoA range/radius values map to 15/8 project units. The three 500ms hit timestamps and full poison refresh are documented simulator choices; CoA does not specify pulse timestamps or whether spread copies remaining duration. Player and companion spread regressions pass. The separate global 50% AoE multiplier remains unsupported. See [the feature note](ROM_DRUID_ROGUE_NECROTIC_WOUND.md). +- [x] Current CoA Sinister Request (494023) instantly refills each supported existing party resource pool to its maximum within radius 150 (15 project units), with the 15-second cooldown from patch 12.1.6.2004 and one-second successful-cast reductions from Poisonous Widow Embrace/Necrotic Wound. Player and companion paths respect positions/line of sight, living recipients, caps, and absent pools; companion AI selects it for a depleted nearby ally even when its caster is full. Focused catalog/runtime/AI validation passed 29 tests across four files. Source: [current Druid/Rogue skill page](https://chroniclesofarcadia.com/wiki/skills/list/8-3?locale=en) and [patch history](https://chroniclesofarcadia.com/patch/12-1-6-2000). +- [ ] Add simulator support for Spirit Guidance's faction conversion and Rebirth's debt reduction after the combat model can represent caster reputation/NPC faction and death-debt/item-consumption state. Current CoA Druid/Rogue Necrotic Wound replaces the stale RuneWaker healing-reduction payload; see [the CoA behavior note](ROM_DRUID_ROGUE_NECROTIC_WOUND.md). +- [x] Current CoA Druid/Mage Inspiration (494322): a learned exact-pair passive now grants one stack per positive Nature's Power spend event (independent of points spent), capped at ten stacks for ten seconds. Current CoA says +2% Physical Attack Speed and Casting Speed per stack; runtime applies these through the shared melee/ranged/spell-haste consumers to the player and generated companions, including their modeled attack intervals, cast durations, and GCDs. The CoA page's Range 50 maps by the established 10:1 conversion to an interpreted five-unit caster-centered party radius; the living caster and party allies within inclusive 3D distance are recipients. One shared aura refreshes all stacks on each new spend because CoA does not specify per-stack expiry. Helper, catalog, and player/companion integration tests cover trigger, cap/refresh, radius filtering, and subsequent cast haste. Fireball's qualitative travel-speed rider and Nature's Power gain remain unwired: current CoA ID 499943 is likely local Fireball 490204's counterpart, but no source formally maps the IDs, gives a travel formula, or disambiguates the separate one-point grant timing. See [the source/runtime note](ROM_DRUID_MAGE_INSPIRATION.md). +- [ ] Find matching-version proc probabilities for Revival Slash, Quick Light Protection, Boiling Rock, Inspiration Display, Avalanche, Extended Recovery, and Spring Flower Eulogy. Current CoA Recovery still conflicts with the RuneWaker trigger; do not infer unknown proc chances. ### Warlock +- [x] Replace Warlock/Rogue Soul Raid 498678 with current CoA Shadow Slice when the passive is learned. Patch [10.4.0.4001](https://chroniclesofarcadia.com/patch/10-4-0-4000) reworks Soul Raid to modify Shadow Step 490344 into a 1-second stun, 4,400 Dark hit, +30% Dark damage, and +10% movement speed for 30 seconds; [10.4.1](https://chroniclesofarcadia.com/en/patch/10-4-1-1000) sets Psi recovery to 3. The catalog/tooltip and player/companion cast mechanics are integrated. The simulator cannot model the shadow's behind-target positioning, and CoA gives no lower-rank damage curve, so 4,400 remains a flat amount. The local +10%/+10% six-second component is not layered onto the learned CoA rework. - [ ] Find proc probabilities and complete event details for Breathing Control and the remaining Priest-pair passives. Hidden child 499869 and End of Thought's tick interval are absent locally. - [ ] Reconcile current CoA conflicts for Mind Transference, Deep Breathing Control, Divine Assistance, and related triggers against the RuneWaker IDs and values before changing behavior. @@ -119,4 +205,5 @@ Updated 2026-09-30. This document lists unresolved ability and talent mechanics - [ ] Verify whether Shield Form has a player-learnable source skill in the RuneWaker version; none is present in the current catalog. - [ ] Find source-backed proc chances and payloads for Forge rank 2, Chain Drive, Dark Energy Strike, and the other incomplete Champion procs. -- [ ] Confirm the RuneWaker identity for Rune Overload before using the current CoA Champion/Rogue page, which reuses the ID with later values and behavior. +- [x] Confirm Rune Overload's RuneWaker identity before comparing it with current CoA: the local generated catalog maps 498572 to Rune Overload and 498571 to Remodeled Body, while the [current CoA Champion/Rogue list](https://chroniclesofarcadia.com/en/wiki/skills/list/10-3) maps 498571 to Rune Overload and 498572 to Runecraft - Haste. The current page and patch history describe a later skill revision; preserve the local RuneWaker names, costs, and values rather than crossing the ID collision. +- [ ] Wire local Rune Overload (498572)'s one-second on-time child tick into player and companion runtime. Catalog work now resolves hidden MagicCollect 498574 from component 621243 as a 0.6 physical-damage coefficient and removes the unsupported 10-yard radius heuristic; the isolated catalog/resolver tests pass (16 tests across the hidden-child and Champion runtime files). RuneWaker component 621241 supplies the one-second `onTimeMagicId` link, but runtime has no autonomous consumer for it; the periodic proc path only receives existing DoT/HoT ticks. The local tooltip says the child hits nearby targets, but the source has no numeric radius or target cap, so target selection remains unresolved and must not be guessed. diff --git a/docs/ROM_DRUID_MAGE_GREEN_GUARDIAN.md b/docs/ROM_DRUID_MAGE_GREEN_GUARDIAN.md new file mode 100644 index 00000000..c56cef22 --- /dev/null +++ b/docs/ROM_DRUID_MAGE_GREEN_GUARDIAN.md @@ -0,0 +1,34 @@ +# RoM Mage/Druid: Current CoA Green Guardian + +## Source choice and identity + +This note covers only Mage-primary/Druid-secondary (`rom-mage` / `rom-druid`) skill `494331`. The current [CoA Mage/Druid skills page](https://chroniclesofarcadia.com/en/wiki/skills/list/4-8) identifies Green Guardian as a level-25 instant self skill. The exact pair and skill ID match, so this current CoA entry replaces the conflicting generated RuneWaker interpretation for that pair. + +The generated `rom-mage-rom-druid-elite-30` row uses the same ID and name as a level-30 passive. Its RuneWaker components describe healing after Mother Earth's Protection ends. The local old hook in `combatStore.ts` only schedules those HoTs when it finds the passive Green Guardian row and its tagged Protection aura. The current Mage/Druid catalog row is now active, its translated effect is replaced with the stack aura, and the passive lookup therefore does not fire. This removes the old expiry HoT only for this exact pair; the RuneWaker passive and HoTs are retained for any other row using that source ID. + +## Implemented behavior + +CoA states that each second standing still grants one stack, capped at 20, and each stack adds one percentage point of movement speed. Movement pauses stack generation but does not say that it removes stacks. The runtime implements those explicit values and leaves MP restoration disabled: the page mentions a restore on stack loss, but does not identify the loss trigger or whether its 10% basis is maximum or missing MP. + +The small timing rule needed by the simulator is explicit: after a sampled position change, the actor must accumulate one full stationary second before another stack can be gained. This is a one-full-stationary-second gate, not a claim about the source's unspecified “brief” pause duration. It does not decay or remove stacks. + +## Runtime integration + +- `src/game/romAbilityCatalog.ts` updates the existing exact-pair row in place: level 25, active instant self skill, no cost or cooldown, current CoA tooltip, and the existing generated ID. The reverse Druid/Mage pair gate remains separate. +- `src/game/romDruidOverrides.ts` replaces only the Mage/Druid 494331 effect with the current self aura. Other Druid rows retain their existing RuneWaker effects. +- `src/game/combatStore.ts` starts the caster aura at zero stacks, samples player and companion positions each combat tick, advances standing time, adds stacks to 20, and drops timing state after the aura is gone. The existing Mother Earth's Protection expiry branch is bypassed for this pair because 494331 is no longer a passive and has no legacy Green Guardian tag. +- `src/game/partyRuntime.ts` selects learned 494331 for an exact-pair companion on its first available combat action when the aura is absent, then uses the ordinary ability commit and effect execution path. CoA describes the skill as active but does not specify companion AI; auto-use in combat is a simulator policy, not a sourced mechanic. +- `src/scene/PlayerRig.tsx` applies the stack movement multiplier to the player. `src/scene/PartyPopulation.tsx` applies it to a Mage/Druid companion. Both scene hooks check the exact pair. +- `src/game/romMageDruidGreenGuardianRuntime.ts` contains the pair gate, stack cap, one-second transition, speed multiplier, aura definition, and timing helper. + +The aura is indefinite and starts with zero stacks. The timer begins on the first movement sample after application; the simulator does not guess elapsed standing time before it can observe a position. Player accrual/movement coverage is in `src/game/romMageDruidGreenGuardian.integration.test.ts`; companion AI cast selection and aura application are covered in `src/game/romMageDruidGreenGuardian.party.integration.test.ts`. Helper and catalog regressions are in `src/game/romMageDruidGreenGuardianRuntime.test.ts` and `src/game/romDruidMageCoaCatalog.test.ts`. + +## Still unknown + +- The exact duration and refresh behavior of the movement pause. +- Whether any event removes stacks, and if so how many and at what interval. +- The MP percentage basis and whether each lost stack has a separate restore. +- Whether standing time counts during casts or other actions. The runtime observes position only. +- Any level-scaling formula beyond the stated per-stack values and 20-stack cap. + +Historical [11.1.1.2000-2009](https://chroniclesofarcadia.com/patch/11-1-1-2000) and [11.1.6.1000](https://chroniclesofarcadia.com/patch/11-1-6-1000) patch notes describe Subterraneous Blade thresholds, not Green Guardian's pause or stack-loss rules. They do not fill these gaps. diff --git a/docs/ROM_DRUID_MAGE_INSPIRATION.md b/docs/ROM_DRUID_MAGE_INSPIRATION.md new file mode 100644 index 00000000..f38e699a --- /dev/null +++ b/docs/ROM_DRUID_MAGE_INSPIRATION.md @@ -0,0 +1,32 @@ +# RoM Druid/Mage: Current CoA Inspiration + +## Source choice and identity + +This profile is limited to the Druid-primary/Mage-secondary pair and passive ID 494322. The current [CoA Druid/Mage page](https://chroniclesofarcadia.com/en/wiki/skills/list/8-4) lists `Inspiration` under Druid/Mage at level 30 with the same ID and name as the local RuneWaker passive, so this is a matching skill identity rather than an ID-only cross-pair guess. The current CoA mechanic replaces the conflicting local RuneWaker trigger. + +The generated RuneWaker row has no components and says a Fireball hit has a chance to make the next spell cast in under one second. Current CoA instead says spending Nature's Power inspires nearby raid members. [Patch 11.1.5.3000](https://chroniclesofarcadia.com/patch/11-1-5-3000) specifies the reworked event and payload: each Nature's Power spend grants an Inspiration stack that gives 2% physical attack speed and 2% cast speed, stacks up to ten, and lasts ten seconds. At ten stacks the modeled bonus is +20% to each stat. + +## Runtime behavior and simulator choices + +- The pure helper in `src/game/romDruidMageInspirationRuntime.ts` represents one stack for each positive Nature's Power spend event, regardless of amount, with a 0–10 cap and +2 percentage points per stack. The player and generated-companion combat paths now invoke it after a successful positive Nature's Power cost or an actual caster-target Nature's Power drain. A partial/empty drain grants no stack; spending multiple points in one event still grants one stack. +- The passive is deterministic on a qualifying spend under the current CoA text. The older RuneWaker Fireball proc chance is not carried forward in the current tooltip or helper. +- The current CoA page lists `Range: 50` and says “raid members around.” The simulator cannot represent a raid, so runtime covers the player and modeled party members only. Existing CoA range conversion maps source units 10:1 to simulator units (for example, 150 to 15); applying that same convention makes this a 5-unit party radius. The page does not say whether the listed range is centered on the passive owner, so a caster-centered radius is an explicit simulator interpretation. The modeled check uses inclusive 3D distance, includes the living caster, and excludes dead or unplaced allies. +- CoA states a 10-second duration but not whether each stack has an independent timer or the entire stack aura refreshes together. Runtime uses the existing refreshable stack-aura model: each qualifying spend adds one stack and refreshes the shared aura's 10-second duration. This preserves the sourced cap and duration without inventing per-stack expiry timestamps. +- Each stack contributes +2% physical attack speed and +2% spell haste, up to +20%. The simulator separates melee and ranged haste, so the physical clause writes to both haste stats; this lets Hunter ranged swings and other physical autoattacks use the same CoA bonus. Spell haste reaches cast durations and GCDs. The Mage player's older generic aura reader skips this tagged Inspiration aura because the new shared haste path already includes it; this avoids applying spell haste twice to a Mage recipient. Existing unrelated haste sources continue to combine through their current haste paths. +- CoA also says this passive speeds up Fireball and restores one Nature's Power. The official-source audit for those separate clauses is below; neither clause is wired in runtime. + +### Inspiration's separate Fireball clauses: official-source audit + +- The [current CoA Druid/Mage skill page](https://chroniclesofarcadia.com/en/wiki/skills/list/8-4) lists Fireball under `Mage General`, level 30, ID `499943`, as an instant 6-second-cooldown spell. Its tooltip describes `3010 + 0.3 x Wisdom` Fire damage and one Nature's Power restored. The same page describes Inspiration as making Fireball travel “a lot quicker” and recovering one Nature's Power. +- The local [generated RuneWaker catalog](../src/game/romPlayerCatalog.generated.json) has `rom-mage-general-0`, general Mage Fireball ID `490204`, unlocked at level 4; its generated description references fixed damage scaled from INT. Both rows are Mage General Fireballs with the same name. The [11.1.5.4000 patch notes](https://chroniclesofarcadia.com/patch/11-1-5-4000) say Druid/Mage Fireball's fixed damage changed from Intelligence to Wisdom, which strongly supports `499943` being the current CoA counterpart of the local Fireball. However, the official sources reviewed do not explicitly state that IDs `499943` and `490204` are aliases or that one replaces the other. Conclusion: likely same intended action, but not formally established by an ID mapping; preserve the ID discrepancy in any implementation note. +- The official [10.4.1.1003 patch notes](https://chroniclesofarcadia.com/patch/10-4-1-1000) say Inspiration was changed to make Fireball travel faster “additionally.” This confirms a qualitative travel-speed rider existed, but gives no percentage, formula, or exact Fireball row ID. The current page still gives only the qualitative phrase “a lot quicker.” The official [11.1.5.4000 patch notes](https://chroniclesofarcadia.com/patch/11-1-5-4000) later changed Fireball's fixed-damage scaling from Intelligence to Wisdom in the Druid/Mage section, but likewise do not identify its row ID or quantify projectile speed. +- The official [11.1.5.3000 patch notes](https://chroniclesofarcadia.com/patch/11-1-5-3000) say Druid/Mage Fireball was changed to grant one Nature's Power additionally. The Fireball row's own tooltip also states that it restores one point, while Inspiration's tooltip separately says it recovers one point. The sources reviewed do not clarify whether Inspiration adds a second point or describes the Fireball grant, nor whether the point is granted on use, projectile launch, hit, or successful damage. The separate Inspiration change in the 10.4.1.1003 notes says it had a one-second delay; that does not establish the resource grant timing. +- Conclusion: CoA supports the qualitative travel-speed rider and a one-point Nature's Power grant associated with Druid/Mage Fireball. The current row, local row, and patch-history stat change make `499943` a likely counterpart to local `490204`, but do not formally map those IDs. Sources give no numeric speed effect, no event timing for the point, and no resolution of whether Inspiration's wording is an additional point. Do not infer these details. + +## Catalog and runtime integration + +The catalog overrides the existing generated passive row only when it is `rom-druid` / `rom-mage` ID 494322. It preserves that row's ID and learn level, clears the conflicting translated legacy effect payload, and uses the current CoA description on both the passive and its rank. No new ability row was added. Catalog regressions verify this exact-pair gating, existing-row identity, empty legacy effects/costs, and current tooltip text. + +Player casts in `src/game/combatStore.ts` and generated-companion casts in `src/game/partyRuntime.ts` check for the learned exact-pair passive and apply one stack to living party actors in the interpreted radius. They listen to both committed direct Nature's Power costs and successful caster-target resource drains, since RuneWaker Druid skills commonly spend the resource through an effect instead of a cast-cost field. `src/game/romDruidMageInspirationRuntime.ts` owns the shared ten-stack aura and recipient geometry. The existing player and party haste consumers now read its melee- and spell-haste modifiers. + +Focused validation: six helper tests cover exact-pair gating, one stack per spend event, cap, refresh, melee/ranged/spell stat payloads, and radius; three catalog tests cover current CoA identity and tooltip; three player/companion integration tests cover actual Nature's Power spends, nearby-recipient filtering, and cast-speed application without applying the bonus twice to a Mage recipient. Autoattack timing uses the existing shared melee/ranged haste stat paths; no separate weapon model was introduced for this passive. diff --git a/docs/ROM_DRUID_ROGUE_NECROTIC_WOUND.md b/docs/ROM_DRUID_ROGUE_NECROTIC_WOUND.md new file mode 100644 index 00000000..ee3ef26c --- /dev/null +++ b/docs/ROM_DRUID_ROGUE_NECROTIC_WOUND.md @@ -0,0 +1,27 @@ +# RoM Druid/Rogue: Current CoA Mechanics + +## Scope and source choice + +The profile applies only to the `rom-druid` / `rom-rogue` pair and CoA skill IDs 494321 (Necrotic Wound), 494024 (Corrosive Poison), and 494023 (Sinister Request). RuneWaker assigns different effects to these local IDs, so this profile replaces the conflicting RuneWaker effects instead of combining them. The [current English CoA Druid/Rogue skills page](https://chroniclesofarcadia.com/wiki/skills/list/8-3?locale=en) supplies current names and tooltip values; patch notes resolve values the current page leaves stale or vague. This is a RoM feature, so no WotLKDB data is used. + +## Necrotic Wound and Corrosive Poison + +- CoA requires Corrosive Poison on the selected target and one Nature's Power. Wound costs 4% MP, channels for 1.5 seconds, hits three times for 329.7% Dark damage per hit, spreads Corrosive Poison, and has no cooldown. +- [Patch 10.4.0.4000](https://chroniclesofarcadia.com/patch/10-4-0-4000) removed Wound's cooldown. [Patch 11.1.2.1000](https://chroniclesofarcadia.com/patch/11-1-2-1000) set three hits; [11.1.5.2000](https://chroniclesofarcadia.com/patch/11-1-5-2000) set the 1.5-second channel, 4% MP cost, and cooldown rider; [11.1.5.3000](https://chroniclesofarcadia.com/patch/11-1-5-3000) and [11.1.6.2000](https://chroniclesofarcadia.com/patch/11-1-6-2000) reduced its damage to the current 329.7% and made Nature's Power consumption once per cast. +- CoA's published range/radius values are 150/80. The project maps these source distances by dividing by ten, yielding range 15 and target-centered radius 8. The channel uses three evenly spaced pulses at 500 ms intervals; CoA specifies hit count and total duration but not individual pulse timestamps. The scheduler spaces pulses across the actual cast duration and retains Penance's immediate first pulse. The focused channel suite passes all six tests, including accelerated Penance. +- A successful cast hits enemies within radius 8 of the selected target and applies a fresh 12-second Corrosive Poison to each hit target. CoA specifies that poison spreads but not whether it copies remaining duration; refreshing the full duration is the simulator's explicit approximation. No target cap or per-extra-target damage falloff is added because [patch 12.1.0.5000](https://chroniclesofarcadia.com/patch/12-1-0-5000) removed Wound's prior 8% falloff. The simulator does not apply CoA's separate global 50% area-damage multiplier, so this profile does not invent a Wound-specific substitute. +- Corrosive Poison costs 25 Energy, has a one-second cooldown, and deals 11,342 Dark damage each second for 12 seconds at +105. The [English page](https://chroniclesofarcadia.com/wiki/skills/list/8-3?locale=en) and English patch history say 25 Energy; the [Japanese-localized page](https://chroniclesofarcadia.com/wiki/skills/list/8-3?locale=jp) says 25 MP. The English value is used and the locale discrepancy is kept visible. [Patch 12.1.0.5500](https://chroniclesofarcadia.com/patch/12-1-0-5000) supplies the 11,342 damage value. +- Each successful Wound cast reduces Sinister Request's remaining cooldown by one second. This rider comes from [patch 11.1.5.2000](https://chroniclesofarcadia.com/patch/11-1-5-2000); the helper cannot move readiness earlier than the current time. The channel's three synthetic hit events defer this rider, so it applies once when the channel completes instead of once per pulse. +- The Wound channel pays its 4% Mana and Nature's Power costs at channel start. Completion now checks only `costsToSpend`, which is empty for an already-paid channel; this prevents it from rechecking and rejecting the prepaid Nature's Power after it reaches zero. The player regression verifies payment once, three hits, spread to the primary and nearby targets, and no old root/healing-reduction effect. + +## Sinister Request + +- The current CoA tooltip restores MP, Rage, Focus, Energy, Psi, and Nature's Power for party members within radius 150. [Patch 12.1.6.2004](https://chroniclesofarcadia.com/patch/12-1-6-2000) lowers its stale page cooldown from 20 to 15 seconds. The CoA page and [patch 11.1.5.2000](https://chroniclesofarcadia.com/patch/11-1-5-2000) also establish the one-second cooldown reductions from successful Poisonous Widow Embrace and Necrotic Wound casts. +- Runtime uses a party circle with radius 15 after the project's source-distance conversion. Its existing selector also requires a known position and line of sight; line of sight is a simulator constraint, not an extra CoA tooltip rule. +- Runtime fills only resource pools the recipient already has, caps each value at that pool's maximum, and records the refill against the caster and recipient. It does not synthesize missing pools. The player and companion paths are covered; companion AI selects the skill for a nearby living ally with a depleted supported pool even when the caster is full. A fully restored party or absent resource pool does not trigger that AI choice. + +## Files and verification + +- `romDruidRogueCurrentCoa.ts` holds the pair gate, values, tooltips, resource effects, and cooldown rider. `romAbilityCatalog.ts`, `romDruidOverrides.ts`, and `romCombatMechanics.ts` replace stale effects and enforce the poison prerequisite. +- `combatChannelAmounts.ts`, `combatStore.ts`, and `partyRuntime.ts` handle channel timing, player/companion poison spread, cooldown reduction, and resource restoration. `partyAbilityAi.ts` and `combatRotation.ts` provide the depleted-ally selector. +- Focused coverage: `romDruidRuntime.test.ts` (15 tests), `romDruidRogueCurrentCoa.test.ts`, `romDruidRogueSinisterRequest.test.ts`, `romDruidRogueSinisterRequest.integration.test.ts`, `partyAbilityAi.test.ts`, and `combatChannelAmounts.test.ts` (6 tests). The Sinister Request/catalog/AI run passed 29 tests across four files. diff --git a/docs/ROM_MAGE_WARDEN_FLAME_FOLLOWER_SOURCE_REVIEW.md b/docs/ROM_MAGE_WARDEN_FLAME_FOLLOWER_SOURCE_REVIEW.md new file mode 100644 index 00000000..fa50bbfd --- /dev/null +++ b/docs/ROM_MAGE_WARDEN_FLAME_FOLLOWER_SOURCE_REVIEW.md @@ -0,0 +1,37 @@ +# Flame Follower (local RuneWaker 494051) source review + +Status: unresolved; no runtime mechanic was added from this review. + +## What the local catalog contains + +The generated RuneWaker row is the Mage-primary / Warden-secondary elite passive at level 25, source skill ID `494051`, named **Flame Follower**. Its tooltip says it reduces Fireball's cooldown by 1 second and increases Fireball critical rate. Its source component list is empty, so the generated data supplies no critical-rate value, proc or application details, rank curve, or targeting rules. The local general Fireball row is ID `490204`. + +## Current Chronicles of Arcadia identity + +The current [CoA Mage/Warden skills page](https://chroniclesofarcadia.com/en/wiki/skills/list/4-7) assigns **Flame Follower** ID `490244`, Mage/Warden level 25. It is an active spell: 10% MP, range 1, instant, 60-second cooldown, and summons a Flame Incarnation for 30 seconds. The summon cannot attack or be attacked. While active, Fireball gains Earth damage, increased critical-hit chance, and reduced cooldown; using Fireball also reduces Flame Follower's cooldown. + +The same current page uses ID `494051` for **Purgatory Fire**, a Mage-primary level-26 active spell, not Flame Follower. It also lists the Mage/Warden-modified Fireball as ID `490248`; the local RuneWaker catalog uses `490248` for the general Fire Ward row and `490204` for Fireball. These identity conflicts mean current CoA IDs cannot be copied onto the old RuneWaker rows by numeric ID alone. + +## Revision history relevant to the conflict + +- [CoA patch 11.1.1.5000](https://chroniclesofarcadia.com/patch/11-1-1-5000) says Flame Follower was changed so Fireball additionally inflicts Earth damage. It provides no critical-chance amount. +- [CoA patch 12.1.0.4000](https://chroniclesofarcadia.com/patch/12-1-0-4000) reworked Flame Follower into the 30-second Flame Incarnation summon and describes Fireball reducing its active cooldown by 4 seconds. That patch gives the initial 3-second cast, 60-second cooldown, and 10% MP cost. +- [CoA patch 12.1.0.5000](https://chroniclesofarcadia.com/patch/12-1-0-5000) made it usable while moving, shortened cast time from 3 to 2 seconds, and raised Fireball's cooldown reduction from 4 to 5 seconds. +- [CoA patch 12.1.0.6000](https://chroniclesofarcadia.com/patch/12-1-0-6000) changed the spell to trigger global cooldown instead of having a cast time. The current skill page now reports it as instant. + +This is a later active-summon revision, not evidence for the missing number or trigger semantics of the older local passive. In particular, the current page's phrase “increased critical hit chance” still has no numeric amount. + +## Source-backed fields and unresolved fields + +| Question | Evidence | Result | +|---|---|---| +| Current name, ID, and pair | Current CoA skill list | Flame Follower is `490244`, Mage/Warden active level 25. Local `494051` is a different, old passive row. | +| Old passive's critical amount | Local RuneWaker tooltip only says “increasing ... critical rate”; current CoA page says “increased critical hit chance” without a value | Unknown. Do not substitute critical damage/effectiveness or a guessed critical chance. | +| Eligible Fireball triggers | Old local tooltip names Fireball; current reworked page and patch history say casting/using Fireball reduces the summon skill's cooldown | Old passive's trigger phase (cast, landed hit, or another event) is unknown. The current Fireball row is ID `490248`, while local general Fireball is `490204`; do not bridge by name alone. | +| Rank behavior | Local row is a single passive elite level-25 row with no components. Current CoA active entry is level 25; its separate Fireball is rankable to 105 | No old passive rank curve or amount is source-backed. Current active skill rank data does not establish old passive ranks. | +| Duration/cooldown | Current CoA active skill and patch history | The **new active summon** lasts 30 seconds with a 60-second cooldown; the old passive's duration and cooldown are not applicable/known. | +| Target conditions | Current active description: summoned pet cannot attack or be attacked; skill summons it on self | No old passive target condition beyond naming Fireball. No crit condition (for example, target type, hit requirement, or crit roll timing) is specified. | + +## Implementation decision + +Keep the local old passive unresolved and do not add a helper or runtime effect. A correct CoA-era replacement would require a deliberate migration of the Mage/Warden class-pair catalog to the active `490244` identity, plus reconciling the current CoA Fireball `490248` against local Fireball `490204` and deciding how to represent an untargetable summon. This review does not silently make those cross-version identity changes. If the older passive must be reproduced instead, an authoritative historical CoA tooltip or implementation detail giving its critical chance and trigger timing is still needed. diff --git a/docs/ROM_PRIEST_HOLY_CANDLE.md b/docs/ROM_PRIEST_HOLY_CANDLE.md new file mode 100644 index 00000000..54da7f13 --- /dev/null +++ b/docs/ROM_PRIEST_HOLY_CANDLE.md @@ -0,0 +1,31 @@ +# Current CoA Priest Holy Candle (490304) + +## Source and precedence + +- The [current CoA Priest skill list](https://chroniclesofarcadia.com/wiki/skills/list/5-1?locale=en) identifies Holy Candle as Priest-primary skill 490304 and gives a +27% healing-effectiveness bonus. Its displayed 5% HP trigger is stale. +- The same CoA row lists a 5% MP cost, range 1, and 30-second cooldown. The local row has no cost override, range 0.1, and a 180-second cooldown; the exact same-ID/name/class entry supports using CoA's metadata. +- The newer [CoA patch 12.1.6.2000 notes](https://chroniclesofarcadia.com/patch/12-1-6-2000) explicitly increase Holy Candle's self-damage from 5% to 12%, so the patch value takes precedence over the older page value. +- A [CoA developer reply on the Priest feedback thread](https://forum.chroniclesofarcadia.com/thread/4572-priest-class-feedback/?postID=30657) clarifies that Holy Candle can hit the caster only once per second. +- The skill page lists a 5% MP activation cost. This is distinct from the 12% HP self-damage trigger. The generated RuneWaker row has no cost, so the catalog supplies an ordinary 5% Mana cost, which resolves against maximum Mana; CoA does not specify a base-Mana cost. + +## RuneWaker conflict and model + +Generated local skill 490304 uses component 500549. It currently has range 0.1, a 180-second cooldown, no Mana cost, a 60-second duration, a type-149 +5% healing-done modifier, and a -6% HP periodic effect every second. The CoA behavior uses range 1, a 30-second cooldown, and a 5% Mana activation cost; replaces the +5% modifier with +27%; retains the local 60-second duration because CoA does not publish one; and removes the free-running periodic drain. The 5% Mana activation cost is separate from the HP trigger. + +The patch says 12% self-damage but does not state whether the percentage uses current or maximum HP. The simulator interprets it as 12% of maximum HP, matching the local percentage-based component's existing maximum-health calculation pattern. This basis remains an implementation interpretation rather than an explicit CoA value. + +The chosen trigger boundary is one charge for each accepted healing-spell cast that resolves a heal, independent of the number of recipients. Direct and AoE heal casts charge once before recipient fan-out, even when the recipients are already full. A HoT charges once when its valid application cast resolves; periodic healing ticks do not charge again. A channel charges on its first qualifying healing pulse, and a per-cast flag prevents later pulses from charging again even when they are more than one second apart. The official one-second throttle is exact and stored per owner: multiple heal spells from the same owner share a window, while the player and each companion have independent windows. Failed, invalid, or interrupted casts do not charge. + +For the channel regression, the test uses WoW Divine Hymn only as a fixture for the shared channel scheduler while the simulated owner is a RoM Priest-primary character. This verifies the persistent per-cast guard; it does not claim Holy Candle or Divine Hymn has a CoA Priest-primary channel mapping. A test-only RoM Holy Candle HoT fixture covers application-versus-tick behavior because the generated Priest-primary catalog currently has no healing HoT row. The source leaves these timing boundaries unspecified, so they remain explicit simulator choices. + +## Current implementation and limits + +- `src/game/romPriestHolyCandleRuntime.ts` owns the current values, Priest-primary effect transform, aura marker, and pure throttle/self-damage helpers. +- `src/game/romAbilityCatalog.ts` gives only Priest-primary 490304 the 5% Mana cost, range 1, and 30-second cooldown plus a tagged 60-second +27% aura, replacing the generated periodic dot. +- `src/game/romPriestTooltips.ts` exposes the current values and separates cast cost from HP trigger cost. +- `src/game/romPriestHolyCandle.test.ts` covers catalog values, exact class scope, modifier replacement, periodic-dot removal, active-aura detection, and throttle math. +- `src/game/combatStore.ts` applies the player self-damage in the cast-resolution transaction and handles channel-pulse charging. +- `src/game/partyRuntime.ts` applies the same trigger for generated Priest-primary companions on direct/HoT heals and channel pulses; `src/game/partyStore.ts` retains the channel's charged flag across party-runtime advances. +- `src/game/romPriestHolyCandle.integration.test.ts` covers direct over-heal, one charge for multi-recipient Group Heal, inactive/invalid/interrupted casts, per-owner one-second throttling across spell IDs, companion heals, HoT application versus later ticks, and channel pulses more than one second apart. + +The runtime hook applies raw self-damage up to the owner's remaining health and records it as a Holy damage event. The 12% basis remains maximum HP by simulator interpretation. The one-second timestamp map is per combat owner; the channel guard is per cast and persists on companion casts across scheduler updates. Integration coverage verifies the player and generated-companion paths described above. diff --git a/docs/ROM_PRIEST_SCOUT_CURING_SHOT.md b/docs/ROM_PRIEST_SCOUT_CURING_SHOT.md new file mode 100644 index 00000000..6fe748f1 --- /dev/null +++ b/docs/ROM_PRIEST_SCOUT_CURING_SHOT.md @@ -0,0 +1,54 @@ +# Priest/Scout Curing Shot (492636) + +## Current CoA behavior + +The current [Chronicles of Arcadia Priest/Scout skill page](https://chroniclesofarcadia.com/en/wiki/skills/list/5-2) identifies Curing Shot as ID **492636**, Priest primary / Scout secondary, level 35. Its current +105 entry is instant, has a 6-second cooldown, range 150, and radius 100. It heals all raid members in reach for 125.6, then heals 167.5 every 3 seconds for 18 seconds. The caster receives 10% Elemental Damage for 18 seconds. + +The official patch history establishes the current version of the effect: + +- [Patch 10.6.1](https://chroniclesofarcadia.com/en/patch/10-6-1-1000) changed the HoT interval from 2 to 3 seconds and duration from 20 to 18 seconds. +- [Patch 11.1.5](https://chroniclesofarcadia.com/tr/patch/11-1-5-3000) made Curing Shot instant and added Good Will, then described as +10% magical damage for 18 seconds. +- [Patch 12.1.6](https://chroniclesofarcadia.com/patch/12-1-6-1000) changed the bonus from magical to Elemental Damage. That patch and the current English class page are the authority for the present wording; the Japanese page still shows the older magical-damage text. + +## Implementation + +`src/game/romPriestScoutCuringShot.ts` overrides only the generated RuneWaker row with the exact Priest-primary / Scout-secondary identity and skill ID. `src/game/romAbilityCatalog.ts` applies the override to the generated catalog. + +- The CoA range 150 and radius 100 are converted at 10:1 to 15 and 10 project units, respectively. +- The instant heal and six-tick HoT use the published +105 values. The HoT ticks every 3 seconds for 18 seconds. +- CoA says all raid members in reach and publishes no target cap. The simulator applies it to every eligible modeled party member; the player and companion healing paths are both covered. It cannot currently represent a full raid roster. +- Good Will is a caster-only 18-second aura with a 10% damage-dealt modifier. +- The local level-35 row's 120 MP cost is preserved. CoA's page gives 242 MP at skill level +105, but no cost progression is available to derive an honest level-35 replacement. + +## Elemental-school mapping + +CoA says Elemental Damage is defined by subclass (for example, the [Mage skill page](https://chroniclesofarcadia.com/en/wiki/skills/list/4-1)). It does not name Good Will's exact school on the Priest/Scout page. That class's page is water-themed: it includes One with the Water and the Water-damage skills Rising Tide and Ice Blades, while Frost Halo increases Elemental Damage. The implementation therefore makes the explicit, class-specific inference that Priest/Scout Elemental Damage means Water damage and maps Water to the simulator's `frost` school. The project already uses `frost` as its Water analogue. + +This mapping is intentionally limited to `frost`; it does not boost `fire`, `nature`, or `arcane`. It also leaves `holy`, `shadow`, and `physical` unchanged. The current source identifies the category and subclass theme, but does not explicitly state “Good Will increases Water damage”; that remains an inference rather than a quoted CoA rule. + +## Differences from the RuneWaker snapshot + +| Field | Local RuneWaker row | Current CoA behavior in the simulator | +|---|---:|---:| +| Cast time | 2 seconds | Instant | +| Cooldown | 12 seconds | 6 seconds | +| Healing radius / target count | Radius 20; maximum 5 | Radius 100, converted to 10 units; no added cap | +| HoT cadence / duration | Every 2 seconds for 20 seconds | Every 3 seconds for 18 seconds | +| Published heal values | Local effect from component 502905; child 502914 carries the older periodic payload | 125.6 upfront, then 167.5 per tick at +105 | +| Good Will | No matching current payload in the local components | Caster gets +10% Elemental Damage for 18 seconds; simulator applies this to the inferred Water/frost school | +| Mana cost | 120 MP on the local level-35 row | Preserved at 120 MP because no cost curve is sourced | + +The local direct component is 502905 (`damagePower=20`). Child 502914 has a 20-second effect, a 2-second periodic interval, and `dotBase=10`. Those local values describe the older snapshot and are superseded by the current CoA behavior above. + +## Runtime and verification + +Player casts heal all eligible modeled party recipients and schedule six periodic effects. Companion casts use the same party healing and periodic paths. The aura stays on the caster and the damage resolver consumes its typed `kind: "damage"` modifier. The player's self-HoT applies through `healPlayerInWork` and is not recorded as a `combatEvents` healing entry in this runtime path; the integration test verifies the player's health rises on each tick. Companion-party ticks are recorded as healing events, so their coverage is asserted by recipient ID. Runtime healing amounts can be changed by existing simulator healing bonuses and critical effects, so catalog tests assert the exact source base values while integration tests assert recipients and scheduling. + +Focused coverage is in: + +- `src/game/romPriestScoutCuringShot.test.ts` for source identity, helper values, the frost-only aura modifier, and local cost preservation. +- `src/game/romPriestScoutCuringShot.catalog.test.ts` for the actual generated RuneWaker row and catalog override. +- `src/game/romPriestScoutCuringShot.integration.test.ts` for player and companion direct/periodic heals, uncapped modeled party coverage, caster-only aura ownership, the player's six self-HoT health increases, frost damage increase, and unchanged fire/nature/arcane/holy/shadow/physical damage. +- `src/game/romCombatRuntime.test.ts` for the general cast and HoT path with the CoA radius and no five-target cap. + +The CoA page provides values at skill level +105, but Healer Man has no Priest/Scout skill-training progression. The simulator uses those published values for this unlocked row and does not invent an intermediate training curve. CoA says “every 3 seconds for 18 seconds”; six ticks are implemented from that interval and duration interpretation. diff --git a/docs/ROM_PRIEST_SCOUT_SAINTS_BLESSING.md b/docs/ROM_PRIEST_SCOUT_SAINTS_BLESSING.md new file mode 100644 index 00000000..c50bc3ae --- /dev/null +++ b/docs/ROM_PRIEST_SCOUT_SAINTS_BLESSING.md @@ -0,0 +1,49 @@ +# Priest/Scout Saint's Blessing (493039) + +## Source choice and identity + +The current [Chronicles of Arcadia Priest/Scout skill page](https://chroniclesofarcadia.com/en/wiki/skills/list/5-2) identifies Saint's Blessing as skill **493039**, Priest primary / Scout secondary, and says it increases damage by **28%** against targets below 30% of maximum HP. The same entry separately says a Heal cast on a friendly target below 30% HP receives an additional healing effect, listed at +105 as 597 flat healing plus 21%. + +The local generated RuneWaker row matches the exact class pair and skill ID, so it identifies the skill being reviewed. Its two components (503283 and 620406) describe the older Heal-triggered rider: +30 flat healing and +1% healing power for 10 seconds at the local component values. The current CoA page takes precedence for the new damage rider and the current maximum-rank healing values; the local data remains evidence for the legacy payload and this repository's available rank representation. The current CoA page does not publish a lower-rank healing curve, so this note does not invent one. + +There is a version conflict for the damage rider: [patch 11.1.5.2000](https://chroniclesofarcadia.com/patch/11-1-5-2000) originally says +21% below 30% HP, while the current skill page says +28%. The runtime uses the current page's +28%. It does not carry over an old buff duration or cooldown: the current page describes the damage bonus as a target-health condition and lists no timed aura for it. + +## Runtime mechanic + +`src/game/romPriestScoutSaintsBlessingDamage.ts` returns a 1.28 damage multiplier only when all of these are true: + +- The build is exactly Priest primary / Scout secondary. +- Passive 493039 is learned. +- The living target's current HP is strictly below 30% of maximum HP when the damage packet resolves. + +The runtime returns 1 otherwise, including at exactly 30%, for dead targets, and for invalid health ratios. There is no proc chance, duration, or cooldown in the current source. It checks the target's live health for each damage packet, so later hits and periodic ticks respond to health lost since the previous packet. The source says “damage” without limiting it to a school or direct-hit type, so the runtime does not restrict the rider by school or direct-versus-periodic delivery. + +## Runtime paths and assumptions + +`src/game/romPriestScoutSaintsBlessingDamage.ts` contains the pure 1.28 multiplier check. `src/game/combatStore.ts` applies it to the rolled damage path in `resolveAndDamageMobInWork` before hit resolution and mitigation. That path covers player and party direct damage, auto-attacks, and timed damage effects: the `tick()` loop routes each DoT packet through the same resolver. The resolver then calls `damageMobInWork` with a marker that prevents scaling the already-modified primary packet twice. Extra damage packets attached to a hit are evaluated once in `damageMobInWork`. + +Unrolled damage events also pass through `damageMobInWork`; this includes generated-companion direct damage and timed area explosions. For a party source, the helper uses that member's primary/secondary classes, level, and talent ranks, then confirms passive 493039 is learned for that exact build. The check uses target HP immediately before the packet is applied. A multi-target ability evaluates each target separately, and successive packets can cross the threshold during combat. + +This follows the simulator's available event model: percentage health is `mob.health / mob.maxHealth`, and the bonus is applied before target mitigation for ordinary damage. A secondary packet belonging to the same hit gets the same pre-hit target-health snapshot and is scaled once as its own damage packet. There is no separate generated-companion passive toggle; learned status comes from the generated class-pair catalog and that member's level/talent ranks. + +Focused coverage is in `src/game/romPriestScoutSaintsBlessingDamage.test.ts` and `src/game/romPriestScoutSaintsBlessingDamage.integration.test.ts`. It covers player and generated-companion rolled damage just below, exactly at, and just above 30%; unrolled companion damage; exclusion for another secondary class; and player/companion Bone Chill ticks where the first tick takes the target from above 30% to below it. The class's existing damage modifiers are retained in the player tests, which compare the below-threshold packet to that same source's exact-30% baseline. + +## Separate Heal rider source review + +The [current CoA Priest/Scout skill page](https://chroniclesofarcadia.com/en/wiki/skills/list/5-2) lists the pair's Heal as **493048**, available at level 45, with a 2-second cast and 2925 base healing at +105. Saint's Blessing 493039 says that casting Heal on a friendly target below 30% HP additionally enhances the healing effect by **597 + 21%** at +105. This wording identifies the skill and friendly low-health condition, but it does not name a separate trigger chance, cooldown, buff duration, or stacking rule. + +The [official 11.1.5.2000 patch notes](https://chroniclesofarcadia.com/patch/11-1-5-2000) say Saint's Blessing was changed to *additionally* increase damage by 21% below 30% HP; their later post-patch notes increase that damage rider to 28%. Those entries document the damage addition and later damage increase, not a revision to the Heal rider. The current skill page is the strongest available source for today's Heal values. I found no official patch entry in the reviewed history that supplies a lower-rank Heal-rider curve or adds a duration/stacking rule. + +The local generated catalog has **no Priest/Scout Heal 493048 row**. It has only Priest-primary Heal **490261** (`rom-priest-primary-2`, unlock level 6), with a generic “Restores (DMG0) points of target's HP” tooltip and a translated heal coefficient of 0.9. Saint's Blessing's local source components **503283** and **620406** instead encode +30 flat healing and +1% healing power, each for 10 seconds. `src/game/romPriestKnightOverrides.ts` turns those local components into a 10-second caster aura before the cast effects of Heal 490261, gated on learned passive 493039 and friendly target health below 30%. That is an implementation of the local snapshot, not evidence that the current 493048 row still uses a 10-second aura or that its current +597/+21% values should be stretched over that duration. + +A [2021 CoA forum exchange](https://forum.chroniclesofarcadia.com/user-post-list/2156-xeae/?pageNo=2) provides secondary corroboration of the spell identity: it reports that Urgent Heal 491147 did not trigger Saint's Blessing, while Heal 499977 did. The same thread quotes an older +104 tooltip of 591.6 + 20.8%. This is useful historical evidence that the passive was intended to react to the named Heal rather than any healing spell, but it is not an official current mechanic specification. The historical 499977 ID also differs from today's 493048. + +### What the sources establish + +- **Heal identity:** current CoA specifies the Priest/Scout Heal row 493048; the historical forum report distinguishes Heal from Urgent Heal 491147. Do not treat every heal, including HoTs, as this trigger. +- **Target condition:** a friendly target must be below 30% HP. Current text does not explicitly say “of maximum HP” in the Heal clause (it does say that explicitly in the damage clause), and it does not settle whether the check is at cast start or cast completion for the 2-second cast. The local runtime passes the selected target's HP ratio through the cast-effect resolution path; because a cast first returns from its cast-start branch, this samples health when the effect resolves. That is the simulator's current timing assumption, not a timing rule stated by CoA. +- **Cast success:** “When you cast a Heal” and the community report that Heal “works” support a Heal-cast trigger. The sources do not define whether interrupted casts, invalidated targets, zero-effective overheal, or another nonstandard cast outcome count. They do not support substituting a generic successful-healing event. +- **Rank values:** +105 is documented as +597 and +21%; the old +104 forum quote reports +591.6 and +20.8%. These historical/current rank samples do not establish the current lower-rank progression curve, so do not extrapolate one. +- **Duration and stacking:** the current skill page gives no duration, cooldown, stack limit, refresh, or carryover text for the Heal rider. Treat the 10-second local aura as a version-specific local payload until a current source or current 493048 component data confirms it. Whether the bonus modifies only that Heal's heal packet or creates a temporary effect is not fully specified by the current tooltip. + +This source review leaves the Heal rider unresolved. The next implementation needs current 493048 generated/source data or a more explicit current CoA mechanic source before choosing between the local 10-second aura and an immediate per-cast bonus. Do not copy +597/+21% to lower levels or attach local +30/+1% values to 493048 without resolving that source conflict. diff --git a/docs/ROM_ROGUE_MAGE_CHAOS_DAGGER.md b/docs/ROM_ROGUE_MAGE_CHAOS_DAGGER.md new file mode 100644 index 00000000..0419ba42 --- /dev/null +++ b/docs/ROM_ROGUE_MAGE_CHAOS_DAGGER.md @@ -0,0 +1,38 @@ +# RoM Rogue/Mage Chaos Dagger (491178) + +## Current CoA behavior + +The current [Chronicles of Arcadia Rogue/Mage skill list](https://chroniclesofarcadia.com/en/wiki/skills/list/3-4) lists Chaos Dagger (491178) at Rogue/Mage level 15 as a passive. Its +105 tooltip says every normal attack adds Fire damage equal to 169.4% of the attacking hand's weapon DPS. It also says each auto attack slightly increases Physical Attack Power for a short time, without giving that increase's amount or duration. + +The [CoA 12.1.0.4000 patch notes](https://chroniclesofarcadia.com/patch/12-1-0-4000) explicitly changed Chaos Dagger to a passive. The [CoA 10.4.1.1000 patch notes](https://chroniclesofarcadia.com/patch/10-4-1-1000) separately fixed a wrong off-hand Chaos Dagger coefficient and a projectile requirement. Together with the current tooltip's “attacking hand” wording, this supports applying the coefficient to whichever hand made the normal attack. + +## Why this replaces the local RuneWaker payload + +The local generated row with the same ID is the older active Enchanted Throw. It costs 25 Mana to activate a self aura, describes projectile consumption, and links an on-hit trigger to hidden child 491185. That row is incompatible with the current CoA skill: the current source calls 491178 a passive and specifies per-hand Fire damage. We therefore do not cast the old aura, consume projectiles, call Throw (490309), or invoke child 491185 for this mechanic. The current CoA page and passive conversion patch are the behavior source for this exact ID; the local row is retained only as evidence of the superseded RuneWaker version. + +## Mana cost ambiguity + +The current CoA page still displays “Uses: 25 MP” above the word “Passive,” but the current effect text does not say when Mana is spent. The passive conversion patch does not explain the cost. In the older generated RuneWaker row, 25 MP is clearly the activation cost for Enchanted Throw; that does not establish that current Chaos Dagger drains 25 MP on each attack. Other current passive rows also retain “Uses” metadata, so the page field alone does not settle whether this is a per-trigger cost or leftover skill metadata. + +The runtime currently applies no Mana debit to Chaos Dagger autos and does not expose a castable activation. This is an unresolved cost boundary, not a claim that CoA Chaos Dagger is confirmed to have zero cost. The in-game tooltip calls out the conflicting 25 MP field and says the runtime does not charge it pending clarification. The catalog test has an explicit 491178 cost exception for this same reason. + +## Implementation + +- `src/game/romRogueChaosDagger.ts` contains the current spell ID, 169.4% coefficient, passive marker, tooltip text, and an isolated calculator that requires the Rogue/Mage pair, a learned passive, a landed auto attack, and positive weapon DPS. +- `src/game/romAbilityCatalog.ts` replaces the local name and description for the exact Rogue/Mage 491178 row and makes it passive. The generated passive marker is used for learned-state behavior such as Day of Rain. +- `src/game/romScoutRogueOverrides.ts` keeps the learned Chaos Dagger marker for Rogue/Mage. The old Enchanted Throw tag export remains as a deprecated alias for existing consumers. +- `src/game/combatStore.ts` adds a secondary Fire packet during the shared combat-result resolution for a landed Rogue/Mage melee auto attack. It reads main-hand or off-hand DPS from the same actor's equipped weapon. Player and generated-companion autos use this resolver, so no separate companion damage path is needed. +- The Fire packet shares the normal attack's landed result and is passed through Fire resistance, Fire damage-taken modifiers, absorbs, health, and death handling. It does not roll a second hit or a separate critical strike. The base weapon attack remains its own physical packet. + +## Limits and assumptions + +- The CoA page reports the 169.4% value at skill level +105. Healer Man does not currently model Rogue skill ranks from 1 to 105, so the implementation applies this published coefficient at every character level after the passive unlocks at level 15. +- The slight temporary Physical Attack Power increase is intentionally omitted because CoA gives neither its amount nor duration. +- Only the landed melee auto attacks represented by the current player and companion weapon loops are covered. The helper rejects misses, non-auto attacks, other class pairings, unlearned Chaos Dagger, and a missing/invalid hand weapon DPS. + +## Focused coverage + +- `src/game/romRogueChaosDagger.test.ts`: catalog override, unlock level, class pairing, both hand coefficients, and helper gating. +- `src/game/romRogueMechanics.test.ts`: player main-hand and off-hand packet values, Fire immunity, no passive Mana debit, below-unlock behavior, wrong secondary class, misses, and the learned marker used by Day of Rain. +- `src/game/partyRuntime.test.ts`: generated Rogue/Mage companion main-hand and off-hand Fire packets through the same mitigation path. +- `src/game/romPlayerCatalog.test.ts`: expected-cost exception for the still-ambiguous 25 MP field. diff --git a/docs/ROM_ROGUE_POISONOUS_HANDS.md b/docs/ROM_ROGUE_POISONOUS_HANDS.md new file mode 100644 index 00000000..0de7b48e --- /dev/null +++ b/docs/ROM_ROGUE_POISONOUS_HANDS.md @@ -0,0 +1,34 @@ +# RoM Rogue Hands: Poisonous Hands and Energized Hands + +## Source choice and scope + +This feature replaces the stale RuneWaker behavior only for the generated `rom-rogue` primary rows 490329 and 490347. Other class-pair rows and generated source data are unchanged. The current [CoA Rogue skill page](https://chroniclesofarcadia.com/en/wiki/skills/list/3-1) is the behavior source; CoA patch notes resolve changes that the page does not explain. The `rom-rogue` local resource profile is used for simulator base values. No WoW/WotLK data is relevant to these RoM skills. + +The current CoA page lists 490329 Poisonous Hands and 490347 Energized Hands as Rogue-primary-only skills, each lasting 900 seconds and mutually exclusive. The page gives each a 1-second cast, but the later [12.1.5.1004 post-patch note](https://chroniclesofarcadia.com/patch/12-1-5-1000) says execution time decreases with faster main-hand attack speed. The simulator currently uses the page's 1-second value as a base/local fallback. + +## Poisonous Hands (490329; child 490357) + +- CoA says regular attacks have a chance to apply a 900-second target debuff that reduces the target's damage by 8%. The [12.1.0.4000 patch](https://chroniclesofarcadia.com/patch/12-1-0-4000) says it stacks up to ten times, the damage reduction is fixed regardless of stack count, and applying a target stack also grants attack speed for the current target. The [12.1.0.5000 patch](https://chroniclesofarcadia.com/patch/12-1-0-5000) confirms that switching targets resets the effect. +- The local generated component 500715 supplies the 50% normal-attack proc chance and triggers child 490357. The current CoA page says only “a chance” and the patch notes do not quantify it, so 50% is preserved as an explicit local fallback rather than represented as a CoA-confirmed value. +- Each successful application adds one target stack, up to ten. The target receives one fixed 8% damage-dealt reduction from the aura; it does not gain another 8% per stack. Each newly applied target stack grants one 1% self attack-speed stack, also capped at ten. Reaching the target cap does not advance the self ramp. A landed normal attack against a different target removes the prior target's self-ramp aura before tracking the new target. The target debuff remains on its original target until its own expiry. +- The skill uses one Poison Bottle per CoA's tooltip. The simulator has no Poison Bottle inventory or consumable-cost model, so it currently displays that requirement but does not consume or validate an item. + +## Energized Hands (490347) + +- The current page gives a 900-second self effect: Energy recovery +100%, skill cooldowns reduced by 0.1 seconds, maximum Energy +50%, and Energy costs +20%. The [12.1.0.4000 patch](https://chroniclesofarcadia.com/patch/12-1-0-4000) confirms the recovery and cost values; [12.1.0.5000](https://chroniclesofarcadia.com/patch/12-1-0-5000) adds the cooldown and maximum-Energy riders. +- Runtime applies the aura to players and generated Rogue companions. With the generated Rogue baseline of 100 maximum Energy and 10 Energy per second, an active aura yields 150 maximum Energy and 20 Energy per second before other modifiers; Energy costs gain 20% through the shared resource-cost path. Maximum Energy returns to the prior value on removal while current Energy is preserved/clamped by the resource model. +- The simulator implements the cooldown rider as subtracting 100 ms from each committed skill cooldown while the aura is active. CoA states “reduces skill cooldowns by 0.1s” but does not specify timing or interaction with other cooldown modifiers; the implementation uses a flat reduction once per committed cast. +- Switching between the two hands effects is exclusive for the Rogue rows. Companion automation holds its selected effect through its duration because generated companions do not have a hands-effect configuration control; player-selected casts replace the other effect. + +## Limits still open + +- CoA gives no numerical Poisonous Hands proc probability. The runtime uses the generated local 50% value pending an authoritative CoA rate. +- Poison Bottle possession and consumption are not modeled. +- CoA confirms faster main-hand speed lowers both casts' execution times but does not publish a formula. Runtime uses the current page's 1-second base cast; dynamic attack-speed scaling remains unsupported. +- CoA names the 0.1-second cooldown rider but does not explain aggregation or timing. Runtime applies one flat 100 ms subtraction when each skill cooldown is committed. + +## Files and verification + +`romRoguePoisonRuntime.ts` handles the proc, separate target debuff, ten-stack cap, attack-speed ramp, and target-switch reset. `romRogueEnergizedHandsRuntime.ts` describes the synthetic current-CoA Energized aura and tracks its Energy maximum. `romAbilityCatalog.ts` overrides the exact Rogue rows and tooltips; `combatStore.ts` and `partyRuntime.ts` integrate player/companion attacks, resources, aura exclusivity, and cooldowns. Generated RuneWaker catalog data remains unchanged. + +Focused verification passed: `romCombatMechanics.test.ts` (21), `romRoguePoisonRuntime.test.ts` (17), `romCreatureFamilies.test.ts` (3), `romRogueCurrentCoaHands.integration.test.ts` (3), and `romRoguePoison.integration.test.ts` (5), for 49 tests total. diff --git a/docs/ROM_SCOUT_PRIEST_DRUMS_OF_WAR.md b/docs/ROM_SCOUT_PRIEST_DRUMS_OF_WAR.md new file mode 100644 index 00000000..17fe5c7a --- /dev/null +++ b/docs/ROM_SCOUT_PRIEST_DRUMS_OF_WAR.md @@ -0,0 +1,35 @@ +# Scout/Priest: Drums of War + +## Source hierarchy + +- [Current CoA Scout/Priest skills page](https://chroniclesofarcadia.com/en/wiki/skills/list/2-5) identifies Drums of War as Scout/Priest skill `493010`, level 45, passive, range 50, triggered by dealing damage with Shot, and affecting nearby raid members. It lists the current CoA Shot as `493011`. +- CoA [patch 11.1.1](https://chroniclesofarcadia.com/patch/11-1-1-5000) is the most specific effect-value source found: Drums now grants 20% critical damage only, replacing the former 5% critical damage plus raw critical-hit rating. +- The earlier CoA [patch 10.2.1](https://chroniclesofarcadia.com/es/patch-10-2-1-1000-masked-festival-class-balance/) raised effect duration to 15 seconds and added the previous 5% critical-damage effect. Patch 11.1.1 changes the effect value and does not state a new duration. +- The current skill-list Shot tooltip still exposes +10% Physical Critical Bonus and +10% Magical Critical Bonus, which conflicts with the more specific 11.1.1 patch note. The patch note governs the modeled effect value; the skill list supplies the passive identity, trigger, and range. +- RuneWaker's generated local row remains the simulator's ability source. It matches passive ID `493010` and the Scout/Priest pair but retains its older payload: component `503258` applies flat +20 physical and magical critical-strike ratings for 8 seconds; component `503310` carries 15 seconds of re-trigger timing. The local Shot row is ID `490423`, not CoA's `493011`. + +## Modeled CoA behavior and explicit assumptions + +- Keep the exact Scout-primary/Priest-secondary gate and passive ID `493010`. +- Map CoA Shot `493011` by name and role to the local RuneWaker Scout General Shot `490423`. The catalog has no separate CoA `493011` cast row. +- Trigger on a landed ranged Shot. CoA says the Shot must inflict damage; the local combat event gives us the landed result. +- Grant +20% critical damage for 15 seconds. CoA patch 10.2.1 supplies the latest located duration; patch 11.1.1 changes only the value. +- Interpret the current Shot tooltip's post-effect restriction literally: wait 15 seconds after the aura expires before another proc. Since the existing ready-at runtime stores a timestamp from proc time, its equivalent total delay is 30 seconds (15-second aura plus 15-second lockout). +- Represent “critical damage” as a 20% increase to the damage bonus portion of a critical multiplier. At the default 2.0 multiplier, Drums gives 2.2. Multiple critical-damage bonuses are summed before scaling that bonus portion; e.g. a separate +25% bonus plus Drums gives 2.45 at a 2.0 base. +- Keep the sourced range 50. CoA says raid-wide; the simulator currently models the player and configured party, not a full raid, so recipient scope remains party. + +## Simulator mapping + +`romScoutPriestOverrides.ts` owns the current constants, tagged aura, exact-pair proc selector, critical-multiplier helper, and tooltip override. `romAbilityCatalog.ts` applies the tooltip override to only the local RuneWaker Scout/Priest passive row. + +The aura's `critical-damage` stat is descriptive metadata; its utility tag is consumed directly in `combatStore.ts` by the shared outgoing-damage resolver used for players and companions. On a critical hit, the resolver adds Drums' 20% to other critical-damage bonuses on the critical bonus portion of the multiplier. It does not change critical chance or ordinary hits. The existing +25% Spreading Pain bonus is preserved and stacks additively: at a 2.0 base multiplier, both effects produce 2.45. Aura application is controlled by the exact Scout/Priest proc gate; any living configured party recipient carrying the aura benefits, matching the simulator's party scope. + +## Validation and remaining scope + +`romScoutPriestOverrides.test.ts` covers source values, duration/lockout timing, exact pair and local Shot mapping, learned-passive and landed-ranged gates, multiplier behavior, additive stacking, and catalog override scope. `romScoutPriestDrumsOfWar.integration.test.ts` covers player and generated-companion critical damage, unchanged critical chance and ordinary hits, configured party coverage/range, aura expiry, and the 15-second post-expiry lockout (30 seconds from proc to next readiness). The focused validation command is: + +```sh +npx vitest run src/game/romScoutPriestOverrides.test.ts src/game/romScoutPriestDrumsOfWar.integration.test.ts src/game/romWarlockPriestSpreadingPain.test.ts src/game/romWarlockMageCoaRuntime.integration.test.ts +``` + +At implementation handoff, this focused run passed all 17 tests across four files. The CoA patch says “critical damage” without spelling out every attack category. The shared hook applies the buff to critical hits across represented physical and magical attacks, while leaving critical chance untouched. No full raid actor model exists to cover non-party raid members. diff --git a/docs/ROM_SCOUT_PRIEST_SCREEN_ATTACK.md b/docs/ROM_SCOUT_PRIEST_SCREEN_ATTACK.md new file mode 100644 index 00000000..d0f795ea --- /dev/null +++ b/docs/ROM_SCOUT_PRIEST_SCREEN_ATTACK.md @@ -0,0 +1,26 @@ +# Scout/Priest Screen Attack (499555) + +## Selected CoA behavior + +The current Chronicles of Arcadia Scout/Priest skill list keeps Screen Attack under ID 499555 and lists it as an instant active skill with a 60-second cooldown and a 17.4% raid damage increase for 20 seconds. The row is Screen Attack **+55** for Scout/Priest level 70: +55 is the skill training level, separate from the character level requirement. Its radius is 150. The 11.1.1 patch notes identify the rework from passive to active, say the effect also applies to damage-over-time effects, and give a 30-second duration, 60-second cooldown, and 17.4% damage increase. + +The current skill entry is selected for the runtime values: +17.4% damage, 20 seconds, and 60 seconds. This resolves the direct duration conflict in favor of the current CoA skill entry over the earlier rework patch note. The patch note remains the evidence for periodic-damage coverage because the current entry does not repeat that clause. The simulator does not track per-skill training levels, so the current +55 value is represented as a fixed +17.4% at every character level rather than being scaled by skill training. + +## RuneWaker conflict and implementation boundary + +The local generated RuneWaker row for 499555 is a passive marker that says Aggro Lead (499578) increases damage. CoA reworked Screen Attack into a standalone active buff. The override is gated on all of: RuneWaker source, primary Scout, secondary Priest, and spell ID 499555. It does not change other pairings or Scout-primary skills. + +The simulator represents CoA's raid recipients with the current party roster; it does not model a separate raid roster here. The listed radius 150 is interpreted as 15 project units using the 10:1 range conversion already used for other CoA mechanics. Generic party aura targeting includes the caster, then maps eligible living party-roster actors to runtime actors and filters allies by an inclusive 3D radius and line of sight. Allies without usable positions cannot pass the radius check. The current CoA entry lists no resource cost, so the catalog uses no cost. It lists an instant cast; the catalog preserves the general 1.5-second simulator GCD. + +The aura is a generic +17.4% damage-dealt modifier. The player and companion cast-completion paths apply generic party auras, and the shared damage resolver consumes damage-dealt auras for both direct damage and periodic ticks while retaining the originating actor. This means the ability uses those generic routes without a Screen Attack-specific damage hook. + +Player and generated-companion integration tests cover activation, eligible recipients, fixed direct damage and periodic tick scaling, the exact 20-second expiration boundary, and the 60-second cooldown boundary. Recipient coverage verifies caster inclusion, living party-roster membership, an inclusive 3D radius edge, line of sight, and exclusion of dead, out-of-range, occluded, or unpositioned allies. The damage fixtures isolate the shared modifier resolver from Scout-specific shot effects. Those tests exposed that the shared dealt-damage resolver included expired source auras; it now uses the already-filtered active aura list, so Screen Attack stops increasing damage exactly at expiration. + +## Sources + +- [Current CoA Scout/Priest skill list](https://chroniclesofarcadia.com/en/wiki/skills/list/2-5) +- [CoA patch 11.1.1.5000–5005](https://chroniclesofarcadia.com/patch/11-1-1-5000) + +## Verification + +- `npx vitest run src/game/romScoutPriestScreenAttack.integration.test.ts src/game/romScoutPriestScreenAttack.test.ts` — 2 files, 5 tests passed. diff --git a/docs/ROM_WARDEN_MAGE_TOUGH_OAK.md b/docs/ROM_WARDEN_MAGE_TOUGH_OAK.md new file mode 100644 index 00000000..3f9d28e2 --- /dev/null +++ b/docs/ROM_WARDEN_MAGE_TOUGH_OAK.md @@ -0,0 +1,43 @@ +# Warden/Mage Tough Oak: pet defense source and runtime plan + +## Status + +The pet-defense rider remains unwired. The existing local cooldown rider is implemented for RuneWaker's Warden abilities. This review adds no combat, catalog, or scene code. + +## Current CoA source + +The current [CoA Warden/Mage skill list](https://chroniclesofarcadia.com/wiki/skills/list/7-4) identifies Tough Oak as skill ID `494207`, a Warden/Mage level-20 passive, maximum rank 55. Its current text says: “Increases your pet's Physical Defense by 60% and reduces Cooldown from Punch and Sepal Stab by 1 second.” The page lists Warden/Mage pet Punch as `494209` and pet Sepal Stab as `498199`, both level 20 with four-second cooldowns. + +I searched the official patch-note results for Tough Oak's defense value and did not find a patch note that supplies a different amount or a mitigation formula. The current skill page is therefore the source for the current `+60%` claim. Patch history does not establish what stat value this percentage multiplies or how that value reduces damage. + +## RuneWaker row and source-precedence decision + +The local generated row is the same named `494207` Warden-primary/Mage-secondary level-20 passive. Its RuneWaker tooltip describes a pet `DEF` increase using component `504600`; that component is permanent (`effectTime: -1`) and has ability modifier type `135`, value `5`. + +The project records type `135` as `physical-defense-percent` in [`romAbilitySemantics.ts`](../src/game/romAbilitySemantics.ts) and translates it to the generic `armor` stat in [`romAbilityCatalog.ts`](../src/game/romAbilityCatalog.ts). That is the local RuneWaker decoding choice; it does not establish that CoA's current +60% pet Physical Defense is 60% armor, that RuneWaker's +5% equals the CoA value, or that the two versions share a damage-mitigation formula. For the current class-pair behavior, prefer current CoA's +60% statement, but keep the numerical defense rider inactive until pet defense has a real stat and mitigation rule. Do not replace it with +5% armor. + +The local tooltip names Punch `493382` and Sepal Stab `493385`. Those local generated rows are Warden primary rows. The current CoA page instead exposes pet-skill IDs `494209` and `498199`. The existing Tough Oak cooldown code in [`romWardenOverrides.ts`](../src/game/romWardenOverrides.ts) reduces cooldown by one second when local IDs `493382`/`493385` are cast by a Warden with the passive marker. It does not establish that CoA's different pet-skill IDs execute in the simulator; verify their actor and cooldown ownership before expanding that rider. + +## Current pet combat model + +- [`CombatSummon`](../src/game/combatStore.ts) carries summon identity, owner, health, position, attack damage, abilities/resources, and optional Hunter-specific state. It has no armor, physical-defense value, or general defensive-stat profile. +- [`CombatActorState`](../src/game/combatActors.ts) has health and absorbs but no defense statistics. `combatActorFromSummon` copies those common values and does not derive a pet defense profile. +- [`damageAfterEquipmentMitigation`](../src/game/wotlkStats.ts) accepts character `ItemStats` and applies the simulator's WotLK armor/resistance model. That is not a sourced CoA pet Physical Defense formula and is not currently applied to summons. +- Warden pets are generic `CombatSummon` instances. In the code paths inspected, pet health loss from an enemy hit is represented by Warden Damage Transfer: the owner hit is mitigated using the owner's defenses, the transfer share is computed, then pet absorbs are consumed and remaining damage is subtracted from pet health. The transfer path does not run a second pet defense calculation. Ordinary enemy hit transactions address player/party recipients; there is no general mob-to-Warden-pet incoming-hit transaction in this model. +- The Hunter pet defense helper and source note are prep only; they do not yet give the simulator a generic live pet defense or incoming-hit model. Even after Hunter integration, WoW owner-armor inheritance is a separate rule and must not be reused as CoA Warden defense. + +## Concrete follow-up plan + +1. In the Hunter pet defense integration, establish a reusable per-summon defense profile and a shared incoming-pet-damage boundary. Keep Hunter armor/resistance inheritance explicitly WoW-specific. +2. Before applying Tough Oak, find or deliberately define a CoA pet baseline Physical Defense value and a CoA Physical Defense-to-damage-reduction formula. Current sources specify a percentage increase only; they do not give either value. Do not substitute owner armor, `ItemStats.armor`, the local +5% component, or a WoW armor formula. +3. Add a distinct CoA pet `physicalDefense` stat/profile and apply the learned Warden/Mage Tough Oak `1.6` multiplier to eligible active Warden pets. Verify which summon types the word “pet” includes; the current page does not limit it to Oak Walker, Spirit of the Oak, or Nature Crystal. +4. Route known pet-directed incoming damage through that profile in an explicit pet-recipient resolver. At minimum review player and generated-companion Warden Damage Transfer paths. Confirm whether a transferred share receives the pet's Physical Defense, and where it sits relative to owner mitigation and pet absorbs; the current skill text does not specify this ordering. Add a direct mob-to-pet hit path only if the combat design introduces one. +5. Keep cooldown mapping separate. Preserve local `493382`/`493385` until current CoA's `494209`/`498199` are represented as executable pet actors/skills; then test the one-second reduction against the correct pet-owned cooldowns instead of extending a name-only match. +6. Add focused tests for passive scope (Warden/Mage only), active-pet filtering, +60% defense application, physical versus magical incoming damage, transfer/absorb ordering, and unchanged cooldowns for other class pairs. Update this note with any remaining mapping/formula assumptions before marking the backlog item complete. + +## Open source gaps + +- The current CoA page does not define the underlying pet Physical Defense stat, its baseline/scaling, or the formula mapping it to mitigated damage. +- It does not state whether the multiplier affects all Warden pets or only a named pet family/summon. +- It does not explain how pet Physical Defense interacts with Damage Transfer or pet absorbs. +- The current CoA pet skill IDs differ from the local RuneWaker cooldown child IDs. Name equality alone is not enough to bridge them. diff --git a/docs/ROM_WARLOCK_MAGE_SOUL_BRAND.md b/docs/ROM_WARLOCK_MAGE_SOUL_BRAND.md new file mode 100644 index 00000000..0b45403f --- /dev/null +++ b/docs/ROM_WARLOCK_MAGE_SOUL_BRAND.md @@ -0,0 +1,21 @@ +# Warlock/Mage Soul Brand (498705) + +## Source and decision + +- [Current Chronicles of Arcadia special skills](https://chroniclesofarcadia.com/wiki/skills/list/9-4) identifies Soul Brand as the Warlock/Mage elite skill and describes its current behavior: any Fire damage inflicted applies Soul Brand, increasing damage taken from elemental magic by 2% per stack, up to four stacks, for 20 seconds, and restoring Psi. +- [CoA patch 10.7.1.6000](https://chroniclesofarcadia.com/patch/10-7-1-6000) confirms the broader Fire-damage trigger. Its historical 3% value is not used because the current skill entry says 2%. +- [CoA patch 11.1.1.3000](https://chroniclesofarcadia.com/patch/11-1-1-3000) specifies that each trigger restores 1 Psi. + +RuneWaker's generated entry for the same 498705 name and Warlock/Mage pairing triggers only from skills 497964, 497960, or 498545, buffs only Dark/Flame damage taken, and uses a 9% value. The current CoA entry matches the exact skill identity and pairing, so its newer explicit behavior is the chosen target. The generated RuneWaker payload is retained as source evidence; these differences are intentional. + +## Modeled behavior + +`src/game/romWarlockMageSoulBrand.ts` describes a landed Fire damage event as eligible, including periodic Fire damage. It returns a target debuff with a 20-second duration, additive stacks capped at four, and +2% damage taken per stack for the simulator's five modeled elemental schools: Fire, Frost, Nature, Holy, and Shadow. These stand in for RoM Fire, Water, Earth/Wind, Light, and Dark. At four stacks, the aura engine therefore resolves +8% damage taken from each of those five schools. Physical and Arcane damage remain unaffected. Each eligible helper result also includes +1 Psi. + +`romWarlockMageSoulBrandAuraSemantics.test.ts` verifies the aura payload's stack cap, refresh time, expiry boundary, affected schools, and unaffected Physical/Arcane schools. `romWarlockMageCoaRuntime.integration.test.ts` covers player direct and periodic Fire damage, generated-companion deterministic direct Fire damage, and companion periodic Fire damage. + +## Runtime integration boundary + +`combatStore.ts` now invokes the helper after a positive landed Fire result in the shared damage resolver. That covers player hits and centralized player/companion periodic ticks, refreshes the target's capped aura through the aura engine, and grants 1 Psi to the exact Warlock/Mage source. `partyRuntime.ts` adds the equivalent post-landed hook for generated companions whose direct damage uses the deterministic no-roll path; hits already sent through the shared resolver are not processed twice. Regression coverage verifies player and companion direct/periodic events, excludes a non-Fire hit, and confirms that Psi goes to the triggering owner. + +The simulator has no Arcane elemental school distinct from the five mapped RoM elemental types; CoA's listed elemental categories are represented by the five available mappings above. This note does not infer a range, cost, chance, or alternate stack rule. diff --git a/docs/ROM_WARLOCK_MAGE_SOUL_BRAND_STING.md b/docs/ROM_WARLOCK_MAGE_SOUL_BRAND_STING.md new file mode 100644 index 00000000..c410043e --- /dev/null +++ b/docs/ROM_WARLOCK_MAGE_SOUL_BRAND_STING.md @@ -0,0 +1,23 @@ +# Warlock/Mage Soul Brand Sting (498710) + +## Source priority + +- [Current Chronicles of Arcadia Warlock/Mage skill list](https://chroniclesofarcadia.com/wiki/skills/list/9-4) identifies Soul Brand Sting as Warlock/Mage skill 498710. It specifies a 2 Psi cost, range 150, 1-second cast, use only in Willpower Blade, 3737.5 + 1 × Intelligence Dark damage and Fire damage, and a Flaming Heart Strike cooldown reset. +- The same CoA list describes Willpower Sharpening 1494096 as entering Willpower Blade for 30 seconds upon reaching full Psi. RuneWaker's generated 497955 is named Willpower Blade and describes a related state, but the IDs and names differ; no explicit patch bridge linking them was found. +- [CoA patch 11.1.1.4000](https://chroniclesofarcadia.com/patch/11-1-1-4000) records the damage update to 3737 + 1 × Intelligence and Psi cost increase from 1 to 2. The current skill-list amount 3737.5 is used as the current value; the patch is historical confirmation of the mechanic and cost. +- [CoA patch 12.1.0.5000](https://chroniclesofarcadia.com/patch/12-1-0-5000) explicitly changes the Flaming Heart Strike reset to occur on cast instead of on hit. This patch clarifies current trigger timing. + +The project backlog and audit do not currently list 498710. RuneWaker's generated row matches the exact skill ID, name, and Warlock/Mage pairing, but its local payload has no resource cost, a 22.5 range, and component damage derived from local DBC fields. Its tooltip describes Dark and Flame damage and resetting Flaming Heart Strike but omits the Willpower Blade requirement and CoA's quantified amount. The current CoA skill row is preferred for this exact identity/pair; the generated RuneWaker values remain source evidence and are not silently treated as equivalent. + +## Implemented behavior + +`src/game/romWarlockMageSoulBrandSting.ts` makes the CoA pair identity and values explicit. `romAbilityCatalog.ts` applies the source's 2-Psi cost to both the parent ability and rank only for Warlock/Mage 498710, and the tooltip states the full sourced damage and state requirement. The local RuneWaker range 22.5 is preserved because no verified conversion relates it to CoA's 150. + +Each sourced damage packet uses base 3737.5 and `intellectCoefficient: 1`; the shared damage scaler adds the attacking player's or generated companion's derived Intelligence. Dark maps to the simulator's Shadow school and Fire remains Fire. The class-specific cast gate requires an active aura tagged for the locally observable “Willpower Blade” state. It does not equate the different skill IDs: current CoA's Willpower Sharpening is 1494096, while the local RuneWaker aura source is 497955. On cast, the runtime resets Flaming Heart Strike, matching patch 12.1.0.5000. Focused tests cover exact pair/skill gating, player and companion state rejection/readiness, the derived Intelligence contribution, 2-Psi cost, tooltip, packets, cooldown reset, and nonmatching-class controls. + +## Remaining simulator and catalog limits + +- CoA's range 150 has no verified unit conversion to RuneWaker's local 22.5, so the local range is retained. The CoA base-MP component is not on this skill; its 2-Psi cost is supported and applied. +- The state-name gate uses the active local generated aura because it exposes the “Willpower Blade” state; this is a simulator bridge to the sourced condition, not an assertion that local 497955 and current CoA 1494096 share an ID or implementation. +- Damage resolves one combined 3737.5 + 1×Int amount in each of the two available damage-school packets. The simulator has no composite Dark-plus-Fire packet type, so both packets remain distinct as the current CoA entry describes. +- Passive Soul Brand 498705 is documented separately in [its feature note](ROM_WARLOCK_MAGE_SOUL_BRAND.md); this skill's cast does not trigger that passive unless its actual damage packet is Fire and the passive is learned. diff --git a/docs/ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT.md b/docs/ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT.md new file mode 100644 index 00000000..a6fe82b3 --- /dev/null +++ b/docs/ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT.md @@ -0,0 +1,35 @@ +# Warlock/Priest Soul Enlightenment (498649) + +## Recommendation + +Implemented as a source-backed CoA correction. CoA publishes the skill under the same ID, name, class pair, and elite level as the RuneWaker row, with explicit cost, range, area, duration, and buff values. The existing simulator already translates this row into a party aura, so the stale payload was replaced through the RoM catalog/Warlock override layer without adding another combat-event mechanic. + +Full CoA parity has one architecture gap: the source restricts use to the `Willpower Construct Caster` state, while the simulator currently tags Willpower Blade but has no corresponding Construct-state eligibility check. The catalog tooltip preserves the source requirement, but casts are not gated on that state. Do not treat the restriction as enforced until that state is represented in the cast-validation path. + +## Current Chronicles of Arcadia behavior + +The [current Warlock/Priest skill list](https://chroniclesofarcadia.com/en/wiki/skills/list/9-5) gives Soul Enlightenment as skill 498649, Warlock/Priest level 40, with a maximum skill level of 105. At +105 it costs 2 Psi, has range 100 and radius 75, is instant, and grants the caster and friendly raid members Soul Enlightenment for 30 seconds. The aura increases damage dealt by 5.7% and received healing by 17.1%. The page says the skill can only be used while the caster is in the Willpower Construct Caster state. + +The [10.2.1.1000–1261 patch notes](https://chroniclesofarcadia.com/patch/10-2-1-1000) record the received-healing value as 17% at skill level 104. That is consistent with the current page's 17.1% at +105; use the current +105 row for the simulator's published value. + +## Local RuneWaker row and mismatch + +The generated local row [rom-warlock-rom-priest-elite-40](../src/game/romPlayerCatalog.generated.json) has the same source ID 498649, name, pair, and level. Its source component 621328 instead supplies +10% maximum HP and +6% healing received for 10 seconds. Those local component values do not match current CoA and are replaced only for this exact Warlock-primary/Priest-secondary skill. + +The local range is 10 project units, consistent with CoA range 100 under the simulator's established 10:1 range conversion. The local row has no cost and no radius. The current CoA cost is explicit (2 Psi); current CoA radius 75 converts to 7.5 project units. The generic damage-dealt and healing-taken modifiers, plus the existing party-aura radius filters, support the CoA payload without a new combat hook. Player casts use the ability's circle targeting radius; companion casts use the aura effect's radius. Both paths include the caster and only apply to living party members inside the radius. + +## Implemented behavior and explicit simulator choices + +- For source ID 498649 on the exact Warlock/Priest pair, replace the local +10% maximum-HP/+6% received-healing/10-second aura with +5.7% damage dealt, +17.1% received healing, and a 30-second duration. Maximum HP is no longer modified. +- Include the caster and living modeled party members. CoA says “friendly raid members”; the simulator only represents its current party roster, not a separate raid roster. +- Apply the +105 values to the one local elite unlock row. The project has no per-skill training-level state with which to derive lower values. +- Use a 7.5-unit caster-centered radius from CoA's 75 range and the established 10:1 conversion. The simulator's existing area-aura path also requires line of sight; CoA does not state a line-of-sight rule, so this remains the simulator's normal targeting policy. +- Preserve the ordinary aura recast behavior. CoA gives no stacking or refresh rule beyond the 30-second effect duration. +- Keep the 2-Psi cost because CoA states it explicitly and the simulator supports Psi. Do not reuse the empty local cost list. +- Keep the `Willpower Construct Caster` restriction documented but unenforced until the Construct state can be checked in the ability cast-validation path. A future state-gating change must also verify that entering/leaving Construct updates the tag consistently for player and companion Warlocks. + +## Validation + +`npx vitest run src/game/romWarlockPriestSoulEnlightenment.catalog.test.ts src/game/romWarlockPriestSoulEnlightenment.integration.test.ts` passes 4 tests. The catalog suite checks exact pair/ID scoping, +105 description and cost, aura values, obsolete maximum-HP effect removal, and radius metadata. Player integration pays 2 Psi, confirms the caster and an ally exactly 7.5 units away receive the 30-second aura, excludes an ally at 7.51 units, and resolves 1,000 damage/healing to 1,057/1,171. Companion integration verifies the existing party-cast path applies that same area aura and modifiers without shared combat-runtime edits. These tests do not assert or imply enforcement of the Willpower Construct state requirement. + +Regression run: `romWarlockRuntime.test.ts` passes 16 tests. `romAbilityCatalogSemantics.test.ts` has one unrelated fixed-size assertion failure in the current shared worktree: it expects 1,864 catalog rows and sees 1,869, matching five additional entries being added elsewhere in the active catalog work. The Soul Enlightenment correction does not add or remove a catalog row. diff --git a/docs/ROM_WARLOCK_PRIEST_SPREADING_PAIN.md b/docs/ROM_WARLOCK_PRIEST_SPREADING_PAIN.md new file mode 100644 index 00000000..adee7f74 --- /dev/null +++ b/docs/ROM_WARLOCK_PRIEST_SPREADING_PAIN.md @@ -0,0 +1,20 @@ +# Warlock/Priest Spreading Pain (499856) + +## Source and local conflict + +- The [current CoA Warlock/Priest skill list](https://chroniclesofarcadia.com/en/wiki/skills/list/9-5) lists Spreading Pain as the same ID, name, and class pairing as the local RuneWaker skill. It specifies three linked debuffs, +18% Magical Attack Power, +25% Magical Critical Bonus, and activation of Healing Fortune. +- [CoA patch 10.6.1](https://chroniclesofarcadia.com/en/patch/10-6-1-1000) narrows the Healing Fortune rider to +12% healing for 20 seconds. Its Wisdom gain and Warp Charge behavior are separate Healing Fortune clauses and are not granted by Spreading Pain. + +RuneWaker's linked child casts 497959/497960/497964 remain. The current CoA additions are applied to this exact Warlock/Priest skill; other class pairs and skills are untouched. CoA also lists 10% MP plus 15 Focus and range 150, while the local row has 15 Focus and range 22.5. The simulator has no Mana resource for RoM Warlock and has no verified CoA range conversion, so the local Focus cost/range remain and the unsupported 10% base-MP cost is called out rather than approximated. + +## Implemented behavior + +The class-specific helper retains the generated child effects and adds three caster buffs: +18% magical attack and +25% Magical Critical Bonus for 30 seconds, plus +12% healing for 20 seconds. The central critical resolver consumes the tagged bonus only for magical spell criticals from the exact Warlock/Priest build. It scales the critical-bonus portion `(multiplier − 1)` by 1.25; for a baseline 2.0 critical multiplier, the result is 2.25. It does not add critical chance or modify ordinary hits. The same rule applies to player and generated-companion magical spell damage. + +Focused coverage verifies both actor paths: buff application, baseline-to-enhanced critical multiplier, physical/non-magical exclusions, and no bonus outside the active exact-pair aura. The companion hit path is resolved through the shared combat critical calculation. + +## Runtime/source boundary + +`romWarlockPriestSpreadingPain.ts` defines the source-tagged effects and multiplier rule. `romAbilityCatalog.ts` keeps the CoA behavior exact-pair scoped; `combatStore.ts` consumes the active aura at hit resolution; `partyRuntime.ts` supplies generated-companion spell crits with the same central calculation while preserving party runtime's normal hit-avoidance behavior. + +The catalog/runtime does not invent a mapping for CoA range 150 or the 10% base-MP cost. These remain source/catalog discrepancies, not implemented values. RuneWaker's child mappings stay intact because the current CoA source retains the named debuff effects alongside its additional caster buffs. diff --git a/docs/ROM_WARLOCK_WARRIOR_PSYCHIC_WARRIOR.md b/docs/ROM_WARLOCK_WARRIOR_PSYCHIC_WARRIOR.md new file mode 100644 index 00000000..66f6798c --- /dev/null +++ b/docs/ROM_WARLOCK_WARRIOR_PSYCHIC_WARRIOR.md @@ -0,0 +1,52 @@ +# RoM Warlock/Warrior Psychic Warrior (499868) + +Source review verified 2026-10-02 against the current Chronicles of Arcadia skill list and the relevant 12.1.4/12.1.5 patch history. + +## Source hierarchy and current behavior + +The current [CoA Warlock/Warrior skill list](https://chroniclesofarcadia.com/en/wiki/skills/list/9-1) is the authority for the present identity and tooltip: Psychic Warrior is passive `499868`, Warlock-primary/Warrior-secondary, learned at level 70, levelable to 105. Its text says magical spells manifest ethereal weapons that deal **Physical Dark** damage: + +- Area Damage skills add an Ethereal Hammer for **187.5% main-hand weapon DPS**. +- Single Target Damage skills add an Ethereal Sword for **1,050% main-hand weapon DPS**. +- Slash and Consistent Heart Strike have a separate conditional main-hand-DPS rider when Strength or Dexterity exceeds both Intelligence and Wisdom. CoA publishes no coefficient for this rider, so it is excluded. + +Patch history resolves the Hammer value. [Patch 12.1.4.1500](https://chroniclesofarcadia.com/patch/12-1-4-1500) introduced the Warlock/Warrior physical-dark hybrid rework and initially gave the Hammer 250% main-hand DPS and Sword 1,050%. [Patch 12.1.5.1000](https://chroniclesofarcadia.com/patch/12-1-5-1000) explicitly reduced the Hammer to 187.5% and made Psychic Warrior levelable to 105. The current skill page and later patch value supersede the initial 250%. + +## Exact trigger gate + +The modeled passive is enabled only when the caster is **Warlock primary / Warrior secondary** and has learned passive ID `499868`. The triggering ability must be a damaging RuneWaker Warlock ability representing a magical spell; a passive marker, non-damaging action, or a different primary/secondary pair does not qualify. This gate is applied in the isolated resolver, separate from the spell's own `AbilityDefinition` pair fields because many qualifying Warlock spells are Warlock-general actions. + +`romWarlockPsychicWarriorRuntime.ts` now accepts explicit caster build context and checks both class slots, the learned passive, and a caller-supplied `isMagicalSpell` gate before selecting a coefficient. The future caller must derive that flag from the resolved action/event classification; this helper does not guess from ability names. It preserves the local ability-source gate and rejects passive or non-damaging definitions. Its area-vs-single classification uses `targetingRulesForAbility`; that is a local classification input, not a CoA definition of event cadence. + +## Physical Dark representation and unresolved mitigation + +The simulator's ordinary combat result accepts one `DamageSchool`. CoA's Physical Dark label has two source tags; the isolated `CombatDamageProfile` retains them together as `schools: ["physical", "shadow"]`, using the project's `shadow` school for Dark. `combatDamageProfileMatchesSchool` is only a tag-membership helper. It does not apply armor, resistance, penetration, damage modifiers, absorbs, or ordering. + +**Mitigation remains unresolved and unwired.** CoA describes the damage as Physical Dark but does not say whether both Physical armor/block and Dark resistance/penetration apply, how modifiers of the two tags stack, or their order. Do not collapse the packet to physical or shadow, apply both defenses in sequence, or otherwise pick a defense formula without a source or explicit product decision. The current catalog/helper layer does not calculate this packet, and no shared player/companion combat consumer is implemented here. + +## Local mapping, exclusions, and source gaps + +The generated RuneWaker catalog contains the pair's local ID `499868`. The catalog override already presents current CoA's Psychic Warrior name and tooltip, with no generic damage effect attached; the isolated resolver returns the current coefficients and composite profile. It does not yet alter combat results. The hidden local child `499869` is not mapped to current CoA Enraged `499871`; those are kept distinct. + +The sources provide the class pair, passive gate, general magical-spell trigger, area/single-target mode, weapon hand, and two coefficients. They do **not** settle: + +- Whether an ethereal weapon is one event per cast, per target, per damage packet, or per channel tick, especially for AoE, channels, multi-hit casts, or periodic damage. +- Whether the rider has its own hit, critical, block, dodge, and resistance rolls, or inherits any result from its triggering spell. +- How the Physical and Dark tags interact with defenses and damage modifiers. +- The conditional Slash/Consistent Heart Strike bonus amount. + +Do not infer the missing Slash/Consistent Heart Strike amount, substitute a single damage school, or generate two full-value packets to represent the two tags. + +## Integration proposal + +When the shared player and companion damage paths are available, integrate from the originating Warlock damage event after identifying the exact caster pair, learned passive, eligible magical spell, target mode, and main-hand weapon DPS. Resolve one additional packet at 1.875× DPS for area spells or 10.5× DPS for single-target spells, retaining both profile tags. Reuse the existing target and source actor so player and generated-companion paths behave consistently. + +Before enabling damage, the owner must decide or source the packet cadence/result inheritance and the hybrid mitigation formula. The proposed helper deliberately returns a descriptor, not a combat amount; this prevents the current ratios from accidentally acquiring an unsupported mitigation, crit, or multi-hit interpretation. Focused future integration tests should cover both exact-pair gates, missing passive, area/single-target ratios, player/companion source stats, and whichever explicit hybrid mitigation and trigger-event policy is approved. Keep direct tests of this helper separate from central combat integration coverage. + +## Focused helper validation + +`romWarlockPsychicWarriorRuntime.test.ts` verifies catalog identity and current tooltip values, 187.5% vs 1,050% selection, both retained damage tags without a mitigation formula, and exact Warlock/Warrior plus learned-passive gates. Run: + +```sh +npx vitest run src/game/romWarlockPsychicWarriorRuntime.test.ts +``` diff --git a/docs/WOW_DEATH_KNIGHT_BLOOD_GORGED.md b/docs/WOW_DEATH_KNIGHT_BLOOD_GORGED.md new file mode 100644 index 00000000..db99153f --- /dev/null +++ b/docs/WOW_DEATH_KNIGHT_BLOOD_GORGED.md @@ -0,0 +1,52 @@ +# WoW Death Knight Blood Gorged + +## Source precedence and confirmed values + +The local generated talent node `talent-2034` is the primary source. It has five ranks, using spell IDs `61154`–`61158`, and each rank links two child spells. The generated rank tooltip says: “When you are above 75% health, you deal N% more damage. In addition, your attacks ignore up to N% of your opponent's armor at all times.” The values for N are 2%, 4%, 6%, 8%, and 10% at ranks 1–5. + +The child links are `50096`, `50108`–`50111` for the damage bonus and `61274`–`61278` for armor penetration. Both local `Spell.dbc` copies checked (the patch-D DBC used by the talent-generation command and the original patch-A DBC) agree on these payloads: + +- Damage children use aura type `79`, school mask `127`, and base values 2/4/6/8/10. Their descriptions retain the “above 75% health” gate. +- Armor children use aura type `280` and base values 2/4/6/8/10. The generated tooltip says this part applies “at all times.” +- Both child auras use Death Knight spell family `15` and the effect family mask `[0x01400001, 0, 0]`. + +The numeric payloads come from local generated rows and client DBC data; WotLKDB was not needed. The local historical AzerothCore reference labels aura type `79` as percent damage done and aura type `280` as percent armor penetration. Those names corroborate the local numeric effects; they do not replace the project DBC values. + +## Trigger and family-mask behavior + +Blood Gorged is a passive rank effect, not a random proc. The generated ranks have no proc cooldown, charges, or duration. The simulator helper reads the rank values and child IDs from the generated talent row. It treats “above 75%” as a strict comparison at outgoing-hit resolution: exactly 75% health receives no damage bonus. The armor penetration component is independent of current health. + +The client DBC class mask is narrower than the prose tooltip. In local Death Knight spell family 15 data, its first word intersects Plague Strike (`0x1`), Blood Strike (`0x400000`), and Heart Strike (`0x1000000`). A spell must match family 15 and have at least one bit intersect the mask. The helper preserves this gate for both child effects; it does not turn the tooltip into an unconditional bonus for every Death Knight ability. Aura type 280 only affects the physical armor calculation, while the aura’s class mask remains the same. + +The historical AzerothCore reference has a fork-specific `SpellInfoCorrections.cpp` override for armor child spells `61274`–`61278`. Its comment says it adds Death Strike and Rune Strike to the armor-penetration class mask. The local patch-A and patch-D DBCs do not contain those added bits, so this preparation follows the local client DBC mask and does not import the fork override. The discrepancy is recorded here because it changes which attacks receive armor penetration. + +## Runtime integration boundary and limits + +Player and generated-companion hits now share Blood Gorged handling in `combatStore.ts`. `resolveAndDamageMobInWork` looks up the selected raw `dbcSpellId`, obtains the source actor's talent rank and current health, then applies the damage bonus once to the outgoing amount only when health is strictly above 75%. `resolvePlayerDamageResult` adds the unconditional armor-penetration percentage to the attacker's existing armor-penetration stat; the normal physical armor calculation then consumes it. The damage rider never changes the armor input or applies itself again after the roll. + +Player casts already use the rolled-hit resolver. `partyRuntime.ts` now selects it for a non-periodic direct damage effect only when a companion Death Knight has Blood Gorged ranks and the actual selected spell ID matches the local family mask. It passes that rank's `dbcSpellId` in the roll context; this matters because a party action ID alone does not preserve the chosen spell rank. The three eligible actions are physical strikes, so this routed event uses the melee attack table. Other companion actions and auto-attacks remain on their existing path. Periodic events do not receive Blood Gorged, and unlisted IDs or known nonmatching IDs such as Death Strike remain ineligible. This keeps the raw `damageMobInWork` route from receiving a second application. + +The generated tooltip and DBC establish the percentage values and mask, not fractional-damage rounding; the simulator keeps the existing damage rounding in its normal hit resolver. The DBC mask itself does not enumerate names; the exact eligible local rows are listed above. No Death Strike or Rune Strike correction from a non-stock fork is added. + +## Local DBC family mapping and catalog cross-check + +The generated ability JSON contains 77 Death Knight raw spell-rank rows, but omits `SpellFamilyName` and `SpellFamilyFlags`. The ID-keyed map in `src/game/wow335DeathKnightBloodGorgedSpellFamily.ts` supplies those fields from the same local patch-D `Spell.dbc` used by the talent generator. It keeps all 77 generated raw rows for source auditing; the selectable generated ability catalog filters out the two rank-0 Death Coil variants `47632` and `47633`, leaving 75 rank IDs that can reach the runtime cast/action definitions. No name-based inference is used. Spell IDs outside this known generated set (for example Rune Strike `56815`) return `null` and do not match. + +The local mask `[0x01400001, 0, 0]` matches eight generated rows. All are actual selectable direct-hit actions: + +| Modeled action | Raw DBC spell IDs matching the mask | ID selected at level 80 | +| --- | --- | --- | +| Plague Strike | `45462`, `49917`, `49918`, `49919`, `49920`, `49921` | `49921` (rank 6) | +| Blood Strike | `45902` | `45902` (rank 1) | +| Heart Strike | `55050` | `55050` (rank 1; requires learned `talent-1957`) | + +The mapping tests cross-check each generated source row against the explicit ID table, confirm the 75 selectable catalog ranks, and pass the level-80 player selection and the party AI's `learnedAbilityForBuild` selection for these attacks through the same mask lookup. In particular, Plague Strike resolves to rank-6 spell ID `49921` in both selections; the companion Heart Strike selection requires `talent-1957` rank 1. Among the generated raw rows, the other 69 IDs do not intersect the mask: `42650`, `43265`, `45463`, `45477`, `45524`, `45529`, `46584`, `47476`, `47528`, `47541`, `47568`, `47632`, `47633`, `48263`, `48265`, `48266`, `48707`, `48721`, `48743`, `48778`, `48792`, `48982`, `49005`, `49016`, `49020`, `49028`, `49039`, `49143`, `49146`, `49158`, `49184`, `49189`, `49203`, `49206`, `49222`, `49576`, `49796`, `49892`, `49893`, `49894`, `49895`, `49896`, `49903`, `49904`, `49909`, `49923`, `49924`, `49936`, `49937`, `49938`, `49939`, `49940`, `49941`, `49998`, `49999`, `50149`, `50150`, `50842`, `51052`, `51267`, `51271`, `55090`, `55233`, `61154`, `61155`, `61156`, `61157`, `61158`, `63560`. The two Death Coil IDs in this source-level exclusion list are the rank-0 variants noted above, not selectable runtime ranks. + +## Files and validation + +- Local talent node and ranks: `src/game/wow335Talents.generated.ts` (`talent-2034`). +- Isolated profile and eligibility helper: `src/game/wow335DeathKnightBloodGorgedRuntime.ts`. +- Focused helper test: `src/game/wow335DeathKnightBloodGorgedRuntime.test.ts`. +- Local Spell.dbc family map and rank-selection test: `src/game/wow335DeathKnightBloodGorgedSpellFamily.ts`, `src/game/wow335DeathKnightBloodGorgedSpellFamily.test.ts`. +- Player/companion integration tests: `src/game/wow335DeathKnightBloodGorged.integration.test.ts`. +- Focused tests: `npx vitest run src/game/wow335DeathKnightBloodGorgedRuntime.test.ts src/game/wow335DeathKnightBloodGorgedSpellFamily.test.ts src/game/wow335DeathKnightBloodGorged.integration.test.ts`. diff --git a/docs/WOW_DEATH_KNIGHT_MERCILESS_COMBAT.md b/docs/WOW_DEATH_KNIGHT_MERCILESS_COMBAT.md new file mode 100644 index 00000000..1281eb2e --- /dev/null +++ b/docs/WOW_DEATH_KNIGHT_MERCILESS_COMBAT.md @@ -0,0 +1,19 @@ +# WoW Death Knight Merciless Combat + +## Source and value choices + +The local generated talent catalog identifies Merciless Combat as `talent-1993` and provides the exact eligible spells and target-health condition: Icy Touch, Howling Blast, Obliterate, and Frost Strike deal 6% more damage at rank 1 or 12% more at rank 2 when the target is below 35% health. Its generated rank spells are 49024 and 49538. Their local generated effects share aura type 112 and `miscValue: 7277`, with `basePoints` 6 and 12 respectively. + +The helper reads those rank amounts from `src/game/wow335Talents.generated.ts`, produced by `scripts/generate-wow335-talents.mjs`. The generated rank tooltip supplies the spell list and strict “less than 35%” boundary. No WotLKDB fallback was needed because the local generated rank data includes every modeled value. + +The generic talent-modifier parser does not recognize this conditional “do an additional X% damage when striking targets” form, and a global scalar would apply outside the health gate. The isolated helper therefore takes rank, ability name, and the target's health fraction for each hit; it returns no bonus at exactly 35%, for other abilities, or at invalid health input. The returned bonus is intended to modify the resolved hit before target mitigation. + +## Runtime integration and limits + +The player direct-damage path in `src/game/combatStore.ts` and generated-companion direct-damage path in `src/game/partyRuntime.ts` now apply the helper to each target hit. Both paths require the Death Knight class and a Death Knight ability, read the owner's `talent-1993` rank, and sample that target's current health fraction immediately before damage resolution. Multi-target strikes evaluate each target independently. + +The helper only recognizes the four abilities named by the local rank tooltip. Integration coverage verifies rank 1 and rank 2 below 35%, no bonus at exactly 35%, and no bonus on Plague Strike. Icy Touch applies Frost Fever as well as direct damage; its periodic tick remains unchanged by this direct-hit talent, covered by a player runtime regression. Generated-companion direct hits are tested through companion cast completion for both ranks and the exact threshold. + +The generic talent-modifier parser does not recognize this conditional “do an additional X% damage when striking targets” form, and a global scalar would apply outside the health gate. Runtime handling therefore stays in the per-target direct-damage paths; no player or companion periodic path is modified. The simulator uses the current health fraction before each hit because the tooltip gives no separate sampling phase. All modeled values come from generated local talent data; no WotLKDB fallback or inferred values were used. + +Focused validation: `node_modules/.bin/vitest run src/game/wow335DeathKnightMercilessCombatRuntime.test.ts src/game/wow335DeathKnightMercilessCombat.integration.test.ts`. diff --git a/docs/WOW_DEATH_KNIGHT_SPELL_DEFLECTION.md b/docs/WOW_DEATH_KNIGHT_SPELL_DEFLECTION.md new file mode 100644 index 00000000..24b6377e --- /dev/null +++ b/docs/WOW_DEATH_KNIGHT_SPELL_DEFLECTION.md @@ -0,0 +1,31 @@ +# WoW Death Knight Spell Deflection + +## Source and chosen behavior + +Spell Deflection is the next Death Knight mechanic selected for implementation. The generated local talent node is `talent-2018`, with ranks 1–3 at spell IDs `49145`, `49495`, and `49497`. The generated rank descriptions state that the proc chance equals the Death Knight's Parry chance and that it applies to direct-damage spells. Their DBC-backed effect rows contain `effectType: 6`, `auraType: 69`, and `miscValue: 126`; the rank values are 15%, 30%, and 45%. + +Aura type 69 is `SPELL_AURA_SCHOOL_ABSORB` in the 3.3.5 aura definitions, so the generated effect is a school absorb, not a generic damage-taken modifier. School mask 126 covers the non-physical schools. The helper therefore treats the effect as a one-hit partial absorb of the rank percentage after the proc roll succeeds. The generated rank rows have no recovery time or charges. The tooltip and DBC rows do not specify how fractional damage is rounded; this simulator floors the absorbed amount to whole damage points. That rounding rule is a simulator choice, not a claim about stock 3.3.5a server rounding. + +The proc chance is read from the defender's current derived Parry chance at hit time. It is not a saved or fixed talent profile chance: the local description says “equal to your Parry chance,” and the 3.3.5 AzerothCore handler uses the target's current `GetUnitParryChance()` as corroborating implementation evidence. The handler also checks direct spell damage and absorbs the rank percentage of that hit. No WotLKDB fallback was needed for the implementation values or eligibility description. + +## Trigger, timing, and exclusions + +`combatStore.ts` applies the effect on both player and generated-companion incoming enemy spell hits. The hook runs after normal hit resolution, resistance and aura-based incoming reductions, and before Mage Frost Warding, Soul Link transfer, named shields, and health loss. It rolls once for each resolved hit, using the defender's current derived Parry chance. On success, it absorbs 15%, 30%, or 45% of the remaining hit at the learned rank. The absorbed amount is included in the incoming combat event's `absorbed` field, and the reduced damage is passed to later mitigation and absorb stages. + +Only a landed enemy attack represented as a direct spell hit with a non-physical school is eligible. Physical attacks and periodic damage ticks are excluded. A zero-damage result, miss, or invalid roll cannot proc. The DBC school mask is retained in the profile and checked by the helper, so a physical-only school cannot accidentally use the absorb. School masks are derived from the incoming combat school's 3.3.5 bit (`physical` 1; `holy` 2; `fire` 4; `nature` 8; `frost` 16; `shadow` 32; `arcane` 64). + +The generated local enemy attack model represents spell attacks as discrete hit events and currently has no periodic incoming damage-tick event for this hook to consume. If periodic enemy spells are added later, their event type must remain distinct from direct hits. The generic `damagePlayer(amount, school)` adapter also lacks delivery/direct-hit context, so it does not invoke this talent. The AzerothCore handler suppresses the proc while the defender is casting a non-melee spell or controlled; that extra condition is not included because it is a fork-specific script gate and has not been verified against stock TrinityCore 3.3.5 behavior. It remains a source difference to revisit if stock-server behavior is later established. + +## Simulator limits and implementation status + +Generated spell rows provide the school absorb amount and school mask but do not encode the dynamic “chance equals Parry” calculation as a numeric proc chance; the helper uses the tooltip's dynamic rule and live combat stats. Incoming enemy hits do not currently carry a dedicated spell direct-vs-periodic subtype, so the runtime adapter treats the model's discrete non-physical spell hit event as direct. A future periodic damage event must be marked separately before integration. + +Focused helper coverage verifies the generated rank amounts, school mask, live-Parry proc chance at 0%, threshold, and 100% edges, direct-hit and physical-school exclusions, and the simulator's whole-point partial-absorb rounding. Player and generated-companion integration coverage compares baseline damage with rank 3 and verifies the logged absorb amount. + +## Local references + +- Generated talent node and rank rows: `src/game/wow335Talents.generated.ts` (`talent-2018`). +- Isolated profile, proc, and absorb helper: `src/game/wow335DeathKnightSpellDeflectionRuntime.ts`. +- Focused helper and combat regressions: `src/game/wow335DeathKnightSpellDeflectionRuntime.test.ts`, `src/game/wow335DeathKnightSpellDeflection.integration.test.ts`. +- 3.3.5 aura type 69 definition in the local AzerothCore reference checkout: `wow-pvt-server-backups-2/azerothcore-wotlk/src/server/game/Spells/Auras/SpellAuraDefines.h`. +- AzerothCore's corroborating Spell Deflection absorb handler: `wow-pvt-server-backups-2/azerothcore-wotlk/src/server/scripts/Spells/spell_dk.cpp`. diff --git a/docs/WOW_HUNTER_BESTIAL_DISCIPLINE.md b/docs/WOW_HUNTER_BESTIAL_DISCIPLINE.md new file mode 100644 index 00000000..4f76f9e1 --- /dev/null +++ b/docs/WOW_HUNTER_BESTIAL_DISCIPLINE.md @@ -0,0 +1,36 @@ +# WoW Hunter Bestial Discipline + +## Source contract + +The local generated 3.3.5a Hunter talent node `talent-1390` is generated from client DBC data by `scripts/generate-wow335-talents.mjs`; `src/game/wow335Talents.generated.ts` is marked generated and must not be hand-edited. The node contains rank spells 19590 and 19592: + +| Rank | Spell row | Pet Focus regeneration | Intimidation Mana cost | +|---|---:|---:|---:| +| 1 | 19590 | +50% | -25% | +| 2 | 19592 | +100% | -50% | + +Each Focus value is cross-checked against the rank's aura effect (`effectType: 6`, `auraType: 107`, `miscValue: 8`, `basePoints: 50` or `100`) and its generated rank description. The generated rank description also names the separate Intimidation cost rider. No external fallback was needed because local generated rows contain the mechanic and exact values. + +## Runtime behavior + +`combatStore.ts` initializes a Hunter pet's Focus pool at 100/100 with a project baseline regeneration rate of 5 Focus per second. Each combat update already accrues Focus from elapsed milliseconds. `wow335HunterBestialDisciplineRuntime.ts` multiplies that existing rate by `1 + rankBonus / 100`, yielding 7.5 Focus/sec at rank 1 and 10 Focus/sec at rank 2. It does not add a discrete Focus tick. The pool's `regenerationPerSecond` field is updated with the effective rate, and Focus remains capped by the existing maximum. + +The tick resolves the pet owner before applying the talent: player pets use the Hunter player's `talentRanks`; generated party Hunter pets use their owner's `talentRanks`. An owner who is not a Hunter receives no Bestial Discipline bonus. The same `summon.hunterPet` path covers the existing player and generated-companion Hunter pet actors. + +The source describes a regeneration increase but does not define simulator update cadence. Applying the bonus continuously over the elapsed time already used by the pet Focus pool is therefore an integration inference, not a sourced discrete tick interval. + +## Separate Intimidation rider and limits + +The generated rows also say Bestial Discipline reduces Intimidation's Mana cost by 25%/50%. That rider is not implemented by the pet Focus helper. The existing generic talent modifier parser recognizes it as a resource-cost modifier scoped to Intimidation; a regression confirms that it does not reduce Arcane Shot cost and that the Focus clause does not become a global player resource-regeneration scalar. This feature does not claim separate cast-path parity for companion-controlled Intimidation. + +The simulator currently has no saved Hunter pet-family selection; this change neither chooses a family nor changes pet stats or attacks. No family-specific behavior is inferred. + +## Files and verification + +- `src/game/wow335HunterBestialDisciplineRuntime.ts` reads and validates the generated rank values and computes the rate. +- `src/game/combatStore.ts` applies the owner-rank multiplier during existing elapsed-time pet Focus regeneration and stores the effective rate in the pool. +- `src/game/wow335HunterBestialDisciplineRuntime.test.ts` covers source rank rows, base rate, scaled rates, invalid ranks, and invalid input. +- `src/game/wow335HunterBestialDiscipline.integration.test.ts` checks that one second of elapsed time yields 7.5 and 10 Focus/sec for player and companion Hunter owners with different ranks, while a non-Hunter control stays at 5. +- `src/game/talentModifiers.test.ts` checks the Intimidation-only Mana rider scope and absence of a generic Focus-regeneration modifier. + +Focused validation: `npx vitest run src/game/talentModifiers.test.ts src/game/wow335HunterBestialDisciplineRuntime.test.ts src/game/wow335HunterBestialDiscipline.integration.test.ts`. diff --git a/docs/WOW_HUNTER_PET_DEFENSE_INHERITANCE.md b/docs/WOW_HUNTER_PET_DEFENSE_INHERITANCE.md new file mode 100644 index 00000000..9a35749c --- /dev/null +++ b/docs/WOW_HUNTER_PET_DEFENSE_INHERITANCE.md @@ -0,0 +1,83 @@ +# WoW Hunter Pet Defensive Inheritance + +## Status + +Source-audited against the pinned TrinityCore TDB 335.26091 release and matching TrinityCore source commit. The generic Hunter-pet armor/Agility baseline and source-order armor helper are implemented, and both player Hunter pets and generated-companion Hunter pets now use the profile in their shared incoming-hit path. Physical armor and the five locally modeled magical resistances are applied before pet damage-taken auras and absorbs. Holy resistance remains a documented model limit. + +## Selected behavior + +For WoW 3.3.5a Hunter pets, the selected stock-compatible core behavior is: + +- Add 35% of the Hunter's effective armor to the pet's own armor calculation. +- The upstream core adds 40% of the Hunter's effective resistance for every non-physical school: Holy, Fire, Nature, Frost, Shadow, and Arcane. This project currently models only Arcane, Fire, Frost, Nature, and Shadow resistance; the pet's Holy resistance is kept at zero because `ItemStats` and `CharacterStats` have no Holy-resistance field. +- Do not inherit physical resistance; armor handles physical mitigation separately. +- Recompute the pet values when the owner's armor or school resistance changes. + +The source implementation uses the owner's calculated armor/resistance, not only item stats. Thus owner-side buffs and other modifiers already reflected in those values participate in the inherited portion. The pet also has its own baseline armor, Agility-derived armor, and pet aura modifiers. `wow335HunterPetInheritedDefenses` returns only the owner-derived contributions; `wow335HunterPetArmorForProfile` and `wow335HunterPetArmorForLevel` compose the complete armor value from the pet profile and those source-ordered modifiers. + +## Source and precedence + +The primary local data did not specify owner armor or resistance inheritance. The implementation reference is the TrinityCore 3.3.5a server source at the TDB release commit [`fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a`](https://github.com/TrinityCore/TrinityCore/commit/fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a). This is a server-core implementation, not Blizzard server source: + +- [`Guardian::UpdateArmor` and `Guardian::UpdateResistances`](https://github.com/TrinityCore/TrinityCore/blob/fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a/src/server/game/Entities/Unit/StatSystem.cpp#L1344-L1376) state the 35% armor and 40% magical-resistance contributions and combine them with the pet's own values. +- [`Unit::UpdateAllResistances`](https://github.com/TrinityCore/TrinityCore/blob/fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a/src/server/game/Entities/Unit/StatSystem.cpp) iterates school IDs from `SPELL_SCHOOL_NORMAL` up to, but not including, `MAX_SPELL_SCHOOL`. `Guardian::UpdateResistances` skips only the physical school, so the core path includes Holy as well as the five resistance stats this project represents. The Holy formula is source-backed; supplying a nonzero owner Holy value is not possible in the current local stats contract. +- [`Player::UpdateArmor` and `Player::UpdateResistances`](https://github.com/TrinityCore/TrinityCore/blob/fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a/src/server/game/Entities/Unit/StatSystem.cpp#L248-L286) recalculate the active pet after the owner's effective armor or school resistance is updated. +- [`Guardian::InitStatsForLevel`](https://github.com/TrinityCore/TrinityCore/blob/fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a/src/server/game/Entities/Pet/Pet.cpp#L890-L924) selects `pet_levelstats` entry 1 for Hunter pets, initially seeds base armor as pet level × 50, and then uses that row's armor (when positive) and level stats. It also says Hunter pet resistance does not come from `creature_template`; pet auras and inherited resistance are the relevant inputs. +- [`CalculatePct`](https://github.com/TrinityCore/TrinityCore/blob/fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a/src/common/Utilities/Util.h#L62-L67) returns the percentage result in the input base type after calculating `float(base) * float(percent) / 100.0f`. Since owner armor and resistance getters return integers, the float32 result is converted back to that integer type (truncating toward zero) before being promoted into the pet's float formula. `Guardian::UpdateArmor` then passes the completed float value to `SetArmor(int32(value))`, also truncating toward zero. The isolated helper reproduces both conversions and preserves this operation order; it does not claim to model the entire core modifier system. +- `Guardian::UpdateArmor` composes pet base armor × BASE_PCT, 2 × effective pet Agility, total flat pet armor, and the integer 35% owner-armor contribution, then applies TOTAL_PCT and passes the result to `SetArmor(int32(value))`. This final cast truncates toward zero. The pet's BASE_VALUE is loaded from its `pet_levelstats` armor row when positive rather than the level × 50 initializer. + +No WotLKDB fallback was needed for these formulas. The available WotLKDB pages are spell entries and do not define these derived pet stats. + +## Local baseline-data audit + +The repository's existing [`wow335HunterPetRuntime.ts`](../src/game/wow335HunterPetRuntime.ts#L129-L169) profile carries level-indexed health and Strength. The verified level-indexed armor and Agility values are stored separately in [`wow335HunterPetDefenseData.ts`](../src/game/wow335HunterPetDefenseData.ts). The defense helper is consumed at the shared player/companion summon incoming-hit resolver; this avoids adding derived armor or resistance to persisted pet state. + +TrinityCore's source documents the fallback used only when a `pet_levelstats` row is absent: it leaves the level × 50 armor seed in place and assigns fixed Strength 22, Agility 22, Stamina 25, Intellect 28, and Spirit 27. That fallback is not evidence for the normal entry-1 row values. Using it as if it were the actual Hunter pet table would risk misrepresenting the stock baseline. + +## Verified pet-level-stat data and revision + +A complete, pinned dataset is present in the TrinityCore [TDB 335.26091 release](https://github.com/TrinityCore/TrinityCore/releases/tag/TDB335.26091), release commit [`fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a`](https://github.com/TrinityCore/TrinityCore/commit/fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a). Its world database artifact is [`TDB_full_world_335.26091_2026_09_09.7z`](https://sourceforge.net/projects/trinitycore.mirror/files/TDB335.26091/TDB_full_world_335.26091_2026_09_09.7z/download), with published SHA-256 `ed0c50177da912b50c9f386ba8a26254cecfb997ca7fd2e992c25b344e11274f`. The downloaded archive hash matched; its inner SQL file is `TDB_full_world_335.26091_2026_09_09.sql`. + +The pinned TDB schema stores `creature_entry` as `int unsigned`, `level` as `tinyint unsigned`, `hp` and `mana` as `smallint unsigned`, `armor` as `int unsigned`, and the five stats plus min/max damage as `smallint unsigned`. The entry-1 rows for levels 1–80 are contiguous. Their example values are level 1: armor 20 / Agility 20; level 60: armor 3,814 / Agility 100; level 80: armor 9,784 / Agility 158. + +For direct integration, these arrays contain the verified armor and Agility values in level order (index 0 is level 1). They were extracted from the pinned TDB SQL after the artifact hash check: + +```text +# Levels 1–20 +armor = [20, 21, 46, 82, 126, 180, 245, 322, 412, 518, 545, 580, 615, 650, 685, 721, 756, 791, 826, 861] +agi = [20, 21, 21, 22, 23, 24, 24, 25, 26, 26, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39] + +# Levels 21–40 +armor = [897, 932, 967, 1002, 1037, 1072, 1108, 1142, 1177, 1212, 1247, 1283, 1317, 1353, 1387, 1494, 1607, 1724, 1849, 1980] +agi = [39, 40, 42, 43, 45, 46, 47, 49, 50, 52, 53, 54, 56, 57, 59, 60, 61, 63, 64, 66] + +# Levels 41–60 +armor = [2117, 2262, 2414, 2574, 2742, 2798, 2853, 2907, 2963, 3018, 3072, 3128, 3183, 3237, 3292, 3348, 3402, 3457, 3512, 3814] +agi = [68, 69, 71, 72, 74, 75, 77, 79, 80, 82, 84, 85, 87, 89, 91, 92, 94, 96, 98, 100] + +# Levels 61–80 +armor = [4113, 4410, 4708, 5006, 5303, 5601, 5900, 6197, 6495, 6794, 7093, 7392, 7691, 7990, 8289, 8588, 8887, 9186, 9485, 9784] +agi = [102, 105, 107, 110, 113, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158] +``` + +The AzerothCore `master` [`pet_levelstats.sql`](https://github.com/azerothcore/azerothcore-wotlk/blob/master/data/sql/base/db_world/pet_levelstats.sql) was compared with the pinned TDB SQL. Both contain exactly 80 entry-1 rows, and every one of the 12 stored values matches for each level 1–80. AzerothCore's dump schema uses `int unsigned` for the stat fields where this TDB schema uses `smallint unsigned`; the values themselves match exactly. The AzerothCore URL remains a moving branch, but it is no longer the data authority for this profile. + +The pinned TDB is a TrinityCore world-database release paired with the 3.3.5a server source, not a Blizzard database dump. The source/data revision is therefore exact for the selected TrinityCore baseline, while direct Blizzard-server provenance is not claimed. + +**Integration status: implemented for the modeled defense fields.** The pinned TDB entry-1 Agility and armor values for levels 1–80 are in [`wow335HunterPetDefenseData.ts`](../src/game/wow335HunterPetDefenseData.ts); the moving ACore export was verified as an exact 12-column match but is not treated as the revision source. `Guardian::InitStatsForLevel` assigns `creature_ID = 1` for any Hunter pet, regardless of family, so a Wolf uses these generic Hunter-pet rows rather than Wolf-specific stats. It loads row armor and Agility when present; the fake fallback branch is not used for these rows. At each incoming pet hit, the integration derives the current owner's effective armor and five native resistances, combines those values with the pet's baseline and pet-owned aura modifiers, and passes them through the shared combat resolver. The helper mirrors `CalculatePct`'s float32 calculation and integer conversion, then composes BASE_PCT, 2 × effective Agility, TOTAL_VALUE, owner armor, and TOTAL_PCT in source order before truncating the final armor like `SetArmor(int32(value))`. The source behavior remains a TrinityCore-compatible baseline, not direct proof of Blizzard server internals. + +## Runtime preparation + +[`wow335HunterPetDefenseData.ts`](../src/game/wow335HunterPetDefenseData.ts) contains entry-1 armor and Agility arrays for levels 1–80, and [`wow335HunterPetInheritedDefenseRuntime.ts`](../src/game/wow335HunterPetInheritedDefenseRuntime.ts) provides the base-profile lookup, integer owner-inheritance calculation, and pure armor composition helper. The composition accepts current effective pet Agility and optional pet armor multipliers/flat modifiers so callers can preserve aura-derived values. Non-finite inputs are sanitized; the helper does not calculate incoming-damage mitigation. + +The focused tests check both coefficients and their integer conversion, the helper's six-school arithmetic, no physical-school inheritance, the entry-1 array bounds and representative rows, baseline-level clamping, source-order armor composition, negative synthetic resistance input, and invalid numeric input. Combat-store integration regressions cover physical armor and Fire resistance for both player and generated-companion Hunter pets, a player-owner armor aura, and an unchanged non-Hunter summon path. Owner defenses are re-derived at incoming-hit time, so current owner auras participate; pet Agility, armor, and resistance aura aliases are also applied before mitigation. + +## Boundaries and open questions + +- The integration runs only for summons with a Hunter-pet profile. Other summons retain the existing incoming-damage behavior. +- Holy resistance is not inherited in combat because there is no owner Holy-resistance value to read. Upstream TrinityCore's school loop would inherit 40% if such a value were present; the current simulator supplies zero and does not invent a synthetic stat. +- The pet defender disables new miss, crit, dodge, parry, and block outcomes in the mitigation resolver so this change preserves the summon path's existing critical-charge, avoidance, and absorption behavior. Physical armor and modeled-school partial resistance are added to that path. +- Negative owner resistance is covered as defensive input handling; TrinityCore's owner getter returns an integer resistance value and the source formula converts `CalculatePct` back to that integer type. +- This profile models inherited defenses, not Stable slots, Feed Pet happiness, loyalty, pet training points, or family-specific abilities. +- Keep pet critical inheritance unresolved. This armor/resistance source does not supply an owner-crit formula. +- The percentages are supported by the upstream 3.3.5 server implementation. If later direct evidence from Blizzard 3.3.5a or the project's target server conflicts, revisit this source choice before claiming exact stock parity. diff --git a/docs/WOW_HUNTER_PET_HAPPINESS.md b/docs/WOW_HUNTER_PET_HAPPINESS.md new file mode 100644 index 00000000..d066b09c --- /dev/null +++ b/docs/WOW_HUNTER_PET_HAPPINESS.md @@ -0,0 +1,36 @@ +# WoW Hunter Pet Happiness + +## Status + +The tier lookup and base auto-attack damage multiplier are source-audited and prepared as isolated helpers. They are not yet connected to the player's or generated companion's pet state or attack resolver. The game does not yet model pet happiness, so this note does not claim that happiness affects live combat. + +## Selected 3.3.5 behavior + +The upstream TrinityCore `3.3.5` branch uses `POWER_HAPPINESS` in bands of 333,000: + +| Pet happiness power | State | Base pet main-hand damage | +| --- | --- | ---: | +| Below 333,000 | Unhappy | 75% | +| 333,000 to below 666,000 | Content | 100% | +| 666,000 or higher | Happy | 125% | + +`Pet::GetHappinessState` defines the band boundaries, and `Guardian::UpdateDamagePhysical` applies the matching multiplier to the Hunter pet's minimum and maximum base melee damage. This source path is why the isolated helper scopes its effect to base auto-attack damage. It does not assume that every special-attack formula receives the same multiplier. + +## Source and precedence + +No local generated pet-happiness row or runtime state was found. These missing details use the upstream TrinityCore source for the 3.3.5 branch, a server-core reference for the target 3.3.5a behavior rather than Blizzard server source: + +- [`HAPPINESS_LEVEL_SIZE`](https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/Entities/Pet/Pet.h#L19-L24) is 333,000. +- [`Pet::GetHappinessState`](https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/Entities/Pet/Pet.cpp#L653-L671) sets the Unhappy, Content, and Happy thresholds. +- [`Guardian::UpdateDamagePhysical`](https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/game/Entities/Unit/StatSystem.cpp#L1427-L1476) applies 1.25 / 1.00 / 0.75 multipliers to a Hunter pet's minimum and maximum base melee damage. + +## Deliberate exclusions + +- Happiness decay is not implemented here. TrinityCore updates the happiness timer every 7,500 ms and loses 670 points per update, but its own `Pet::LoseHappiness` comment labels the 1.5× in-combat loss as a guess. This is insufficient evidence for claiming exact stock decay behavior. +- Feed Pet is not implemented here. Food-family compatibility, food item levels, inventory consumption, and the happiness amount need a separate full source audit. +- The helper does not define the initial value or persistence policy. TrinityCore initializes a newly tamed pet to 166,500, but modeling this requires persistent happiness state and the tame/summon lifecycle. +- This is separate from the WoW Hunter pet armor/resistance preparation in [the defense inheritance note](WOW_HUNTER_PET_DEFENSE_INHERITANCE.md). + +## Runtime integration contract + +[`wow335HunterPetHappinessRuntime.ts`](../src/game/wow335HunterPetHappinessRuntime.ts) maps a happiness power value to a state and base auto-attack multiplier. Integration needs persistent per-pet happiness, must apply the multiplier to the pet's ordinary melee auto-attack damage after its existing base damage is calculated, and must preserve the pet-specific state across player and companion pet attack paths. Add damage taken from Bite or other pet special abilities only if the target 3.3.5 source path proves those formulas consume the adjusted weapon damage; this note does not infer that coupling. diff --git a/docs/WOW_MAGE_NETHERWIND_PRESENCE.md b/docs/WOW_MAGE_NETHERWIND_PRESENCE.md new file mode 100644 index 00000000..5dab3ecb --- /dev/null +++ b/docs/WOW_MAGE_NETHERWIND_PRESENCE.md @@ -0,0 +1,50 @@ +# WoW Mage Netherwind Presence + +## Source and selected behavior + +The local generated 3.3.5a talent node `talent-1846` is the authority for this +custom Netherwind Presence mechanic. Its three rank rows are spells 44400, +44402, and 44403. The rank tooltips explicitly grant 1%, 2%, or 3% spell haste +per stack for 10 seconds, up to three stacks. Thus the maximum rank-1/2/3 haste +is 3%/6%/9%. Each rank's DBC row reports a 100% Proc Trigger Spell effect and +the class mask (`[536872960, 0, 0]`) is the same across ranks. The rank rows link +to child spells 966120, 966121, and 966122, respectively, and each has +`procChance` 100 with no generated `procFlags` field. No WotLKDB fallback was +used: its stock spell 44400 is a different, permanent 2% Netherwind Presence +effect and does not describe this local custom talent. + +The generated tooltip names seven trigger spells: Arcane Missiles, Arcane +Barrage, Arcane Blast, Arcane Orb, Moonfire, Starfire, and Starsurge. The +current generated Mage ability catalog contains Arcane Missiles, Arcane +Barrage, and Arcane Blast. Arcane Orb is absent; Moonfire, Starfire, and +Starsurge are Druid abilities in this project, not Mage catalog entries. They +are kept in the source inventory but cannot trigger a Mage talent until the +corresponding Mage actions exist. Slow is not a stacking trigger; it is the +separate capstone action. + +## Runtime mapping and limits + +- One eligible spell cast commitment adds one stack, refreshes the 10-second + duration, and stops at three stacks. The local talent row does not include + proc phase flags, so awarding at accepted cast commitment is an explicit + event-phase inference. The runtime awards at most one stack per cast, + including one stack for a channel cast rather than one stack per missile + pulse. Failed or invalid casts do not reach this hook; a cast interrupted + after commitment keeps its stack, matching the chosen commitment-time + interpretation. +- Each stack contributes the rank's 1%/2%/3% to the existing spell-haste aura + stat. The general talent parser skips this talent so its conditional haste + does not become an always-on bonus. +- At max talent rank and three stacks, a Slow cast applies a separate 30% + movement-speed aura for three seconds. The tooltip does not say this consumes + Netherwind Presence, so the three haste stacks remain and keep their original + expiry. +- The capstone aura is consumed by the player movement controller and generated + party companion follow controller, multiplying displacement by 1.3 while + active. Expired or differently targeted auras do not change movement. Runtime + tests verify the modifier and expiry; an in-scene movement playtest remains + useful to confirm feel and pathing. + +The implementation intentionally does not add substitute Mage spell rows for +Arcane Orb, Moonfire, Starfire, or Starsurge. Adding them requires local +class-attribution/ability data beyond Netherwind Presence itself. diff --git a/docs/WOW_SHAMAN_FLURRY.md b/docs/WOW_SHAMAN_FLURRY.md new file mode 100644 index 00000000..22e560bf --- /dev/null +++ b/docs/WOW_SHAMAN_FLURRY.md @@ -0,0 +1,30 @@ +# WoW Shaman Flurry + +## Source precedence and selected values + +The project-generated DBC talent row `talent-602` is authoritative for this mechanic's rank values and trigger. Its Enhancement ranks are spell IDs `16256`, `16281`, and `16282`; their expanded local tooltips say a melee critical strike grants three following swings with `4%`, `6%`, and `10%` melee haste. The profile in [`src/game/wow335ShamanFlurryRuntime.ts`](../src/game/wow335ShamanFlurryRuntime.ts) reads those descriptions rather than duplicating the rank values. + +The generated row also contains a rank-two payload mismatch: its expanded tooltip says `6%`, while the raw `rankEffects` child effect has `basePoints: 7`. WotLKDB child aura rows linked from the rank spells report values `12` for child `16277` and `18` for child `16278`; those payload values do not replace the generated project tooltip values. This implementation follows the generated `4/6/10%` tooltips, as directed. + +The local rank-spell `durationIndex: 21` resolves to `-1` in local `SpellDuration.dbc` row 21, correctly describing each passive talent rank as permanent. The proc child spells—not the passive ranks—carry the temporary aura duration: local `Spell.dbc` rows `16257`, `16277`, and `16278` each reference duration index `8`, which resolves to `15_000ms` in local `SpellDuration.dbc` row 8. Runtime uses this local duration mapping. The local values were read from the extracted client DBC pair at `F:\Projects\LadiksMPQEditor\client-current\patch-T\DBFilesClient\Spell.dbc` and `F:\Projects\LadiksMPQEditor\client-current\patch-S\DBFilesClient\SpellDuration.dbc`. The [WotLKDB rank-two child aura](https://wotlkdb.com/?spell=16277) and [rank-three child aura](https://wotlkdb.com/?spell=16278) corroborate 15 seconds; the rank-one child duration is resolved locally even though its WotLKDB page was not independently readable. + +The [WotLKDB rank-one parent](https://wotlkdb.com/?spell=16256), [rank-two parent](https://wotlkdb.com/?spell=16281), and [rank-three parent](https://wotlkdb.com/?spell=16282) each show a proc-trigger effect linked to a Flurry child aura. Those pages do not expose the proc flags, child charge count, or the rule for refreshing charges while the aura is active. No rank values or trigger details are taken from those pages when the local generated row already supplies them. + +## Runtime behavior + +`combatStore.ts` uses the source actor's exact `talent-602` rank and only recognizes Shaman talent owners. A direct, non-periodic combat result procs on a landed melee critical strike. No random roll is added: each generated rank row lists a 100% proc chance. The effect applies to the owner, so player and generated-companion Shamans keep separate auras and rank values. + +The temporary aura adds the selected rank's flat melee-haste percentage for 15 seconds. Its three aura stacks represent swing charges; haste is explicitly not multiplied by those charges. Every resolved owner melee autoattack attempt consumes one charge, including a miss, and the triggering swing consumes none because the charge is applied after consuming any prior charge. Main-hand and off-hand attempts consume from the same owner aura. The player and companion Shaman autoattack schedulers recompute that hand's next interval from the post-hit aura state, so a proc speeds following intervals and the third consumed charge stops affecting the interval after that swing. + +When a new eligible critical occurs with Flurry already active, runtime policy replaces the remaining charges with three and resets the 15-second timer. This is a practical interpretation of “for your next 3 swings”; WotLKDB does not document the stock refresh rule, so this exact refresh policy remains unverified. If two hands are due at the same simulation timestamp, the existing player/party loop order resolves main-hand first and then off-hand; the source pages do not establish a stock order for that tied case. + +## Coverage limits and assumptions + +- The passive ranks' generated data omits proc-phase flags. The runtime follows the local tooltip's broad direct melee-critical trigger, including modeled direct melee abilities; it excludes periodic packets. It does not synthesize attacks or spell events absent from the current combat resolver. +- A critical special ability can apply Flurry, but an already-pending autoattack deadline is not retimed at the moment of that ability hit. Haste is read when the next autoattack swing resolves and its following interval is scheduled. The simulation does not track fractional swing progress, so exact mid-swing haste retiming remains outside this integration. +- The 15-second value is resolved locally for all three child rank auras. WotLKDB child rows for ranks two and three corroborate it. +- Charge refresh behavior, proc flags for proc-generated direct melee hits, and ordering for equal-time dual-wield swings remain source boundaries rather than confirmed stock details. + +## Focused validation + +[`src/game/wow335ShamanFlurryRuntime.test.ts`](../src/game/wow335ShamanFlurryRuntime.test.ts) checks generated rank identity/IDs, tooltip values, proc gates, rank normalization, the local raw-payload mismatch, aura duration/haste, refresh policy, charge ownership, and expiry. [`src/game/wow335ShamanFlurry.integration.test.ts`](../src/game/wow335ShamanFlurry.integration.test.ts) checks a player Shaman's landed critical and resulting hastened interval plus a generated companion Shaman's own rank and three subsequent autoattack charge consumption. diff --git a/docs/WOW_SHAMAN_REMAINING_TALENT_AUDIT.md b/docs/WOW_SHAMAN_REMAINING_TALENT_AUDIT.md new file mode 100644 index 00000000..c6a06099 --- /dev/null +++ b/docs/WOW_SHAMAN_REMAINING_TALENT_AUDIT.md @@ -0,0 +1,41 @@ +# WoW Shaman Remaining Talent Audit + +**Audit date:** 2026-10-01 + +**Scope:** generated WoW Shaman talent rows and player/companion combat paths. The initial audit was read-only; its recommended Flurry follow-up is now implemented in isolated runtime hooks and covered by focused tests. + +The source model and combat integration are in [`src/game/wow335ShamanFlurryRuntime.ts`](../src/game/wow335ShamanFlurryRuntime.ts), [`src/game/combatStore.ts`](../src/game/combatStore.ts), and [`src/game/partyRuntime.ts`](../src/game/partyRuntime.ts). Focused source and player/companion integration regressions are in [`src/game/wow335ShamanFlurryRuntime.test.ts`](../src/game/wow335ShamanFlurryRuntime.test.ts) and [`src/game/wow335ShamanFlurry.integration.test.ts`](../src/game/wow335ShamanFlurry.integration.test.ts). + +## Implemented candidate: Flurry (`talent-602`) + +The generated Enhancement talent row has three explicit ranks: + +| Rank | Melee attack speed | Charges | +| --- | ---: | ---: | +| 1 | 4% | 3 swings | +| 2 | 6% | 3 swings | +| 3 | 10% | 3 swings | + +The proc begins after a melee critical strike. The local generated DBC row and rank text are in [`src/game/wow335Talents.generated.ts`](../src/game/wow335Talents.generated.ts) (`talent-602`, “Flurry”); the generated Shaman talent UI row mirrors those rank descriptions in [`src/game/generated/talentUi/shaman.json`](../src/game/generated/talentUi/shaman.json). + +### Why this was a bounded candidate + +- The generic talent parser does not interpret “attack speed” as haste, so rank-specific timing needed an explicit temporary melee-haste effect. +- Player main-hand and off-hand autos resolve through the common melee hit path in [`src/game/combatStore.ts`](../src/game/combatStore.ts). Companion Shaman weapon autos resolve through [`src/game/partyRuntime.ts`](../src/game/partyRuntime.ts). Both paths produce the combat result needed to distinguish a landed melee critical from a miss or non-critical hit. +- Player weapon intervals are derived from melee haste, and companion Shaman swing intervals read the actor's melee-haste aura. An actor-local temporary melee-haste aura can therefore affect the already modeled swing timing without inventing a new weapon or attack system. +- `Flurry` supplies the trigger, all three rank values, and the number of affected swings locally. Its generated 100% proc chance avoids an unsupported random roll. WotLKDB is only a secondary reference when local child-spell details are unavailable. + +### Implemented behavior and source notes + +The runtime gates by each source actor's generated `talent-602` rank; a landed direct melee critical applies that rank's value and three charges to the actor. Each completed melee autoattack attempt consumes one charge; the triggering hit does not. Existing player and companion Shaman swing schedulers read the aura when scheduling the following interval. + +The generated rank spells are `16256`, `16281`, and `16282`, with displayed values `4%`, `6%`, and `10%`. Local rank two's expanded tooltip says 6% while its raw child effect has `basePoints: 7`; WotLKDB child effects report 12% (`16277`) and 18% (`16278`). Runtime follows the generated expanded tooltip values. Local rank spells' duration index 21 resolves to `-1` (permanent); triggered child spells `16257`, `16277`, and `16278` each use local duration index 8, which resolves to 15,000 ms. Runtime uses this local duration mapping; WotLKDB rank-two and rank-three child aura rows corroborate 15 seconds. The local `Spell.dbc` and `SpellDuration.dbc` rows were parsed from the extracted client files under `F:\Projects\LadiksMPQEditor\client-current\patch-T\DBFilesClient` and `patch-S\DBFilesClient`, respectively. + +Repeated procs currently replace remaining charges with three and restart the timer. The source pages do not state whether stock reapplication restores used charges or expose proc-phase flags, so those are documented implementation choices. The runtime counts resolved melee autoattack attempts, including misses, as swings; special direct melee hits can trigger Flurry, while periodic packets cannot. Both hands consume a shared actor aura. If hands are due at the same simulation timestamp, existing loop order resolves main-hand then off-hand. A special ability's proc does not retime an already-pending swing; exact fractional swing progress is outside the combat model. + +Focused validation passed for the source helper and player/companion integration (8 tests total). The tests cover generated ranks, landed-crit gating, player haste scheduling, companion rank ownership, three subsequent autoattack charges, charge expiry, and the implementation refresh policy. Equal-time dual-wield order and server-confirmed refresh/proc flags remain open. + +## Other candidates reviewed + +- **Static Shock (`talent-2055`, Enhancement, 3 ranks):** the generated rows specify rank-based Lightning Shield damage/charge increases and melee-hit proc chances, but leave the internal cooldown unresolved as `the listed amount[1 second][1.5 seconds]`. Resolve that rank mapping from the local spell data before implementing the full talent; the unresolved text is why this was not selected as the source-complete candidate. +- **Nature's Guardian (`talent-1699`, Restoration, capstone rider):** its threshold and cooldown are named, but the self-heal is only “a small amount (increased by healing power).” The generated tooltip does not provide its base amount or scaling formula, so do not guess those values. diff --git a/scripts/generate-wow335-abilities.mjs b/scripts/generate-wow335-abilities.mjs index 0202dc4a..9533671e 100644 --- a/scripts/generate-wow335-abilities.mjs +++ b/scripts/generate-wow335-abilities.mjs @@ -254,36 +254,40 @@ function rankNumber(spell) { return Number(spell.rankText.match(/^Rank\s+(\d+)$/i)?.[1] ?? 0); } -function resolveDescription(spell) { - const effect = (oneBasedIndex) => spell.effects.find( - (candidate) => candidate.index === Math.max(0, Number(oneBasedIndex || 1) - 1), - ); +function resolveDescription(spell, spells) { return (spell.description || "No client description is available.") - .replace(/\$(\d+)?[sSmM](\d+)?/g, (_token, _spellId, effectIndex) => { - const value = effect(effectIndex); + .replace(/\$(\d+)?[sSmM](\d+)?/g, (_token, referencedSpellId, effectIndex) => { + const referencedSpell = referencedSpellId ? spells.get(Number(referencedSpellId)) : undefined; + const value = (referencedSpell ?? spell).effects.find( + (candidate) => candidate.index === Math.max(0, Number(effectIndex || 1) - 1), + ); if (!value) return "the listed amount"; const maximum = Math.abs(value.basePoints) + Math.max(0, Math.abs(value.dieSides) - 1); return String(Math.round(maximum * 100) / 100); }) - .replace(/\$(\d+)?t(\d+)?/g, (_token, _spellId, effectIndex) => { - const period = effect(effectIndex)?.periodMs ?? 0; + .replace(/\$(\d+)?t(\d+)?/g, (_token, referencedSpellId, effectIndex) => { + const referencedSpell = referencedSpellId ? spells.get(Number(referencedSpellId)) : undefined; + const period = (referencedSpell ?? spell).effects.find( + (candidate) => candidate.index === Math.max(0, Number(effectIndex || 1) - 1), + )?.periodMs ?? 0; return period > 0 ? String(period / 1000) : "the listed interval"; }) - .replace(/\$(\d+)?d\b/g, () => { - const milliseconds = Math.abs(spell.durationMs); + .replace(/\$(\d+)?d\b/g, (_token, referencedSpellId) => { + const referencedSpell = referencedSpellId ? spells.get(Number(referencedSpellId)) : undefined; + const milliseconds = Math.abs((referencedSpell ?? spell).durationMs); return milliseconds > 0 ? `${milliseconds / 1000} sec` : "the listed duration"; }) .replace(/\$[a-zA-Z0-9:;.*+/{}-]+/g, "the listed amount"); } -function slimRank(spell) { +function slimRank(spell, spells) { return { spellId: spell.id, rank: rankNumber(spell), level: spell.spellLevel, sourceLevel: spell.baseLevel || spell.spellLevel, maxScalingLevel: spell.maxLevel, - description: resolveDescription(spell), + description: resolveDescription(spell, spells), castTimeMs: spell.castTimeMs, cooldownMs: Math.max(spell.recoveryTimeMs, spell.categoryRecoveryTimeMs), // Zero is the DBC signal for abilities that do not start a global cooldown. @@ -391,7 +395,7 @@ try { sourceUnlockLevel: Math.max(1, Math.min(...ranks.map((spell) => spell.spellLevel))), ...(passive ? { passive: true } : {}), ...(talentNodeId ? { talentNodeId } : {}), - ranks: ranks.map(slimRank), + ranks: ranks.map((spell) => slimRank(spell, spells)), }; }).sort((left, right) => ( left.sourceUnlockLevel - right.sourceUnlockLevel diff --git a/scripts/generate-wow335-talents.mjs b/scripts/generate-wow335-talents.mjs index 08bc6571..a11dcea0 100644 --- a/scripts/generate-wow335-talents.mjs +++ b/scripts/generate-wow335-talents.mjs @@ -419,7 +419,9 @@ if (talentDbcPath) { const lastSpell = spells.get(rankSpellIds.at(-1)); const rankSpells = rankSpellIds.map((spellId) => spells.get(spellId)).filter(Boolean); const rawRankDescriptions = rankSpells.map((spell) => cleanDescription(spell.description || spell.auraDescription)); - const rankDescriptions = rankSpells.map((spell) => resolveDescription(spell.description || spell.auraDescription, spell)); + const rankDescriptions = rankSpells.map((spell, rankIndex) => dbcTalentId === 206 + ? `Your Kick has a ${rankIndex === 0 ? 50 : 100}% chance to silence the target for 2 sec. Capstone Bonus: Successful interrupts with Kick restore 40 Energy and increase your attack speed by 35% for 6 sec.` + : resolveDescription(spell.description || spell.auraDescription, spell)); exactNodes.push({ id: `talent-${dbcTalentId}`, dbcTalentId, diff --git a/scripts/playtest-graphics-options.cjs b/scripts/playtest-graphics-options.cjs new file mode 100644 index 00000000..6cdbf4de --- /dev/null +++ b/scripts/playtest-graphics-options.cjs @@ -0,0 +1,102 @@ +const { chromium } = require('C:/Users/phenom/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright'); +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const os = require('node:os'); +const path = require('node:path'); + +const output = path.resolve('artifacts/playtest/graphics-options'); +const dataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'healer-man-graphics-')); +const staticDir = fs.mkdtempSync(path.join(os.tmpdir(), 'healer-man-graphics-dist-')); +fs.mkdirSync(output, { recursive: true }); +fs.cpSync(path.resolve('dist'), staticDir, { recursive: true }); + +async function enterDungeon(page, category, name) { + await page.getByRole('button', { name: /^Dungeons/ }).click(); + if (category) await page.locator('.dungeon-category-tab').filter({ hasText: category }).click(); + await page.locator('.dungeon-select-row').filter({ hasText: name }).first().click(); + const download = page.getByRole('button', { name: 'Download and continue' }); + if (await download.isVisible()) await download.click(); + else await page.getByRole('button', { name: 'Choose role' }).click(); + await page.locator('.dungeon-role-option--healer').click(); + await page.locator('.scene-shell').waitFor(); + await page.locator('.loading-screen').waitFor({ state: 'visible', timeout: 180_000 }); + await page.locator('.loading-screen').waitFor({ state: 'hidden', timeout: 180_000 }); + await page.locator('.dungeon-boss-intro').waitFor({ state: 'hidden', timeout: 180_000 }); + await page.waitForTimeout(1000); +} + +async function canvasScale(page) { + return page.locator('.scene-shell canvas').first().evaluate((canvas) => + Number((canvas.width / canvas.clientWidth).toFixed(2))); +} + +(async () => { + const { createGameServer } = await import('../server/server.mjs'); + const runtime = createGameServer({ dataDir, staticDir, enableShelvedModes: false }); + await new Promise((resolve) => runtime.server.listen(4198, '127.0.0.1', resolve)); + const browser = await chromium.launch({ channel: 'msedge', headless: true }); + const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); + page.setDefaultTimeout(180_000); + const errors = []; + page.on('pageerror', (error) => errors.push(error.message)); + try { + await page.goto('http://127.0.0.1:4198', { waitUntil: 'domcontentloaded' }); + await page.getByRole('button', { name: /Play offline/ }).click(); + await page.getByRole('button', { name: /Create character/ }).click(); + await page.getByRole('button', { name: /Customize & name/ }).click(); + await page.getByLabel('Character name').fill('GraphicsQA'); + await page.getByRole('button', { name: /Create character/ }).click(); + await page.getByRole('button', { name: /Continue|Enter world/ }).first().evaluate((button) => button.click()); + await page.locator('.main-menu-screen').waitFor(); + + await enterDungeon(page, 'WoW', 'Wailing Caverns'); + const defaultScale = await canvasScale(page); + await page.screenshot({ path: path.join(output, 'wow-default.png') }); + await page.keyboard.press('Escape'); + await page.getByRole('dialog', { name: 'Paused' }).waitFor(); + await page.getByRole('button', { name: 'Options', exact: true }).click(); + await page.getByRole('dialog', { name: 'Options' }).waitFor(); + const setting = (name) => page.locator('.options-panel .option-row').filter({ has: page.getByText(name, { exact: true }) }).getByRole('button').first(); + for (let index = 0; index < 3; index++) await setting('Render resolution').click(); + for (let index = 0; index < 2; index++) await setting('Texture filtering').click(); + await setting('Shadows').click(); + await setting('Ambient fill').click(); + assert.equal(await setting('Render resolution').innerText(), '200%'); + assert.equal(await setting('Texture filtering').innerText(), '16×'); + assert.equal(await setting('Shadows').innerText(), 'High'); + await page.screenshot({ path: path.join(output, 'graphics-options.png') }); + await page.setViewportSize({ width: 960, height: 540 }); + await page.screenshot({ path: path.join(output, 'graphics-options-thor.png') }); + assert.ok(await setting('Ambient fill').isVisible()); + await page.setViewportSize({ width: 1440, height: 900 }); + await page.getByRole('button', { name: 'Done', exact: true }).click(); + await page.getByRole('button', { name: 'Resume game' }).click(); + await page.waitForTimeout(1500); + const highScale = await canvasScale(page); + assert.ok(highScale >= 1.9, `Expected 200% render scale, got ${highScale}`); + await page.screenshot({ path: path.join(output, 'wow-high.png') }); + + await page.keyboard.press('Escape'); + await page.getByRole('button', { name: 'Main menu', exact: true }).click(); + await page.locator('.main-menu-screen').waitFor(); + await enterDungeon(page, 'RoM', 'Forsaken Abbey'); + assert.ok(await canvasScale(page) >= 1.9); + await page.screenshot({ path: path.join(output, 'rom-high.png') }); + assert.deepEqual(errors, []); + const results = { defaultScale, highScale, romScale: await canvasScale(page), errors }; + fs.writeFileSync(path.join(output, 'results.json'), `${JSON.stringify(results, null, 2)}\n`); + console.log(JSON.stringify(results)); + } catch (error) { + await page.screenshot({ path: path.join(output, 'failure.png') }); + console.error((await page.locator('body').innerText()).slice(-1500)); + console.error(errors); + throw error; + } finally { + await browser.close(); + await new Promise((resolve) => runtime.server.close(resolve)); + assert.ok(dataDir.startsWith(path.resolve(os.tmpdir()) + path.sep)); + assert.ok(staticDir.startsWith(path.resolve(os.tmpdir()) + path.sep)); + fs.rmSync(dataDir, { recursive: true, force: true }); + fs.rmSync(staticDir, { recursive: true, force: true }); + } +})().catch((error) => { console.error(error); process.exitCode = 1; }); diff --git a/scripts/runewaker-pipeline/export-player-catalog.mjs b/scripts/runewaker-pipeline/export-player-catalog.mjs index 600fd74b..9002ded5 100644 --- a/scripts/runewaker-pipeline/export-player-catalog.mjs +++ b/scripts/runewaker-pipeline/export-player-catalog.mjs @@ -34,6 +34,14 @@ const CLASS_IDS = ["rom-warrior", "rom-scout", "rom-rogue", "rom-mage", "rom-pri const CLASS_NAMES = ["Warrior", "Scout", "Rogue", "Mage", "Priest", "Knight", "Warden", "Druid", "Warlock", "Champion"]; const RESOURCES = ["rage", "focus", "energy", "mana", "mana", "mana", "mana", "mana", "focus", "rage"]; const ELITE_LEVELS = [15, 20, 25, 30, 35, 40, 45, 50, 60, 70]; +const DRUID_WARRIOR_BRIAR_CHILD = { + mainClass: 8, + secondaryClass: 1, + level: 60, + keyItemId: 546833, + passiveSourceSkillId: 499955, + childSourceSkillId: 499956, +}; const RACE_MATRIX = { "rom-human": [1, 2, 3, 4, 5, 6], "rom-elf": [1, 2, 3, 4, 7, 8], @@ -554,6 +562,41 @@ for (const key of [...eligiblePairs].sort()) { icon: `/assets/ui/rom-spells/${spell.source.imageId}.png`, iconResolution: "native-interface-fdb", }); + + // RuneWaker unlocks Cross of Thorns Attacks as an additional class-8 + // skill behind Briar Technique. It shares the passive's key item, so the + // usual one-candidate-per-elite-milestone lookup above would omit it. + if (mapping.mainClass === DRUID_WARRIOR_BRIAR_CHILD.mainClass + && mapping.secondaryClass === DRUID_WARRIOR_BRIAR_CHILD.secondaryClass + && milestone.level === DRUID_WARRIOR_BRIAR_CHILD.level + && milestone.keyItemId === DRUID_WARRIOR_BRIAR_CHILD.keyItemId + && candidate.sourceSkillId === DRUID_WARRIOR_BRIAR_CHILD.passiveSourceSkillId) { + const child = candidates.find((entry) => entry.classIndex === DRUID_WARRIOR_BRIAR_CHILD.mainClass + && entry.sourceSkillId === DRUID_WARRIOR_BRIAR_CHILD.childSourceSkillId + && entry.learnLevel === milestone.level + && entry.keyItemId === milestone.keyItemId + && entry.prerequisites.includes(DRUID_WARRIOR_BRIAR_CHILD.passiveSourceSkillId)); + if (!child) throw new Error("Druid/Warrior Briar Technique child 499956 lost its source unlock row."); + const childSpell = sourceSpell(child.sourceSkillId, mapping.mainClass); + if (!childSpell) throw new Error("Druid/Warrior Briar Technique child 499956 has no MagicCollect row."); + skills.push({ + id: `${CLASS_IDS[mapping.mainClass - 1]}-${CLASS_IDS[mapping.secondaryClass - 1]}-elite-${milestone.level}-${child.sourceSkillId}`, + classId: CLASS_IDS[mapping.mainClass - 1], + secondaryClassId: CLASS_IDS[mapping.secondaryClass - 1], + group: childSpell.passive ? "passive" : "elite", + unlockLevel: child.learnLevel, + keyItemId: child.keyItemId, + ...childSpell, + ranks: [{ + rank: 1, + level: child.learnLevel, + prerequisites: child.prerequisites, + ...nestedRankSpell(childSpell, childSpell.sourceSkillId), + }], + icon: `/assets/ui/rom-spells/${childSpell.source.imageId}.png`, + iconResolution: "native-interface-fdb", + }); + } } } @@ -561,6 +604,8 @@ const eliteSkills = skills.filter((skill) => skill.secondaryClassId); const ordinarySkills = skills.filter((skill) => !skill.secondaryClassId); const unresolvedVisible = skills.filter((skill) => !skill.passive && !skill.effect?.kind); const iconCoverage = await extractNativeIcons(skills); +const eliteMilestoneCount = [...eliteMappings.values()].reduce((sum, entry) => sum + entry.milestones.length, 0); +const supplementalEliteCount = eliteSkills.length - eliteMilestoneCount; const sourceHashes = { ...Object.fromEntries(Object.entries(buffers).map(([key, value]) => [key, sha256(value)])), interfaceFdb: await sha256File(interfaceFdb), @@ -583,7 +628,7 @@ const audit = { duelistExcluded: !CLASS_NAMES.includes("Duelist"), races: Object.keys(RACE_MATRIX).length, orderedPairs: eligiblePairs.size, - eliteMilestones: eliteSkills.length, + eliteMilestones: eliteMilestoneCount, ordinaryFamilies: ordinarySkills.length, sourceRankRows: ordinarySkills.reduce((sum, skill) => sum + skill.ranks.length, 0), iconResolved: skills.filter((skill) => skill.iconResolution === "native-interface-fdb").length, @@ -594,7 +639,12 @@ const audit = { }, adaptations, }; -if (eliteSkills.length !== 660 || unresolvedVisible.length !== 0 || audit.coverage.iconResolved !== skills.length || iconCoverage.requested !== iconCoverage.resolved) throw new Error(`Coverage failed: ${JSON.stringify(audit.coverage)}`); +// In addition to the 660 ordinary milestones, this source emits the Druid/Warrior +// Cross of Thorns Attacks row behind its explicit learned prerequisite. +if (eliteMilestoneCount !== 660 || supplementalEliteCount !== 1 || unresolvedVisible.length !== 0 + || audit.coverage.iconResolved !== skills.length || iconCoverage.requested !== iconCoverage.resolved) { + throw new Error(`Coverage failed: ${JSON.stringify(audit.coverage)}`); +} await mkdir(path.dirname(outputFile), { recursive: true }); await mkdir(path.dirname(auditFile), { recursive: true }); await Promise.all([ diff --git a/scripts/runewaker-pipeline/snapshots/runewaker-player-skill-audit.json b/scripts/runewaker-pipeline/snapshots/runewaker-player-skill-audit.json index a64377dd..84e60803 100644 --- a/scripts/runewaker-pipeline/snapshots/runewaker-player-skill-audit.json +++ b/scripts/runewaker-pipeline/snapshots/runewaker-player-skill-audit.json @@ -25,10 +25,10 @@ "eliteMilestones": 660, "ordinaryFamilies": 269, "sourceRankRows": 274, - "iconResolved": 929, + "iconResolved": 930, "uniqueNativeIcons": 918, "interfaceFdbEntries": 34954, - "executableOrNonCombat": 929, + "executableOrNonCombat": 930, "unresolvedVisible": 0 }, "adaptations": [ diff --git a/src/GameRuntime.tsx b/src/GameRuntime.tsx index b1c3791f..3d6b8485 100644 --- a/src/GameRuntime.tsx +++ b/src/GameRuntime.tsx @@ -5,6 +5,7 @@ import { DualDisplayFrame } from "./components/DualDisplayFrame"; import { installInput, releasePointerLock } from "./game/inputManager"; import { CombatBridge } from "./game/CombatBridge"; import { connectDpsMeter } from "./game/dpsMeterStore"; +import { connectFloatingCombatText } from "./game/floatingCombatText"; import { useCombatStore } from "./game/combatStore"; import { releaseDungeonGltfCache } from "./game/dungeonAssetCache"; import { clearDungeonRuntimeCaches } from "./game/dungeonRuntimeReset"; @@ -116,6 +117,7 @@ function InputBridge() { export default function GameRuntime() { useEffect(connectDpsMeter, []); + useEffect(connectFloatingCombatText, []); useEffect(() => installCombatClock(dungeonSimulationNow), []); useEffect(() => { void useDungeonRouteStore.getState().refresh(); }, []); const editingControls = useGameStore((state) => state.overlay === "keybinds" || state.overlay === "ui-layout"); diff --git a/src/game/OnlineSessionBridge.test.ts b/src/game/OnlineSessionBridge.test.ts index e730474c..02ca57d1 100644 --- a/src/game/OnlineSessionBridge.test.ts +++ b/src/game/OnlineSessionBridge.test.ts @@ -5,7 +5,10 @@ import { dungeonEncounterSnapshot, resetDungeonEncounters, } from "./dungeonEncounterRuntime"; -import { applySharedWorld } from "./OnlineSessionBridge"; +import { applySharedWorld, eventForRelay } from "./OnlineSessionBridge"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { usePartyStore } from "./partyStore"; +import type { StructuredCombatEvent } from "./combatEvents"; import { useCombatStore } from "./combatStore"; import { useGameStore } from "./store"; import { @@ -75,3 +78,45 @@ describe("online shared-world hydration", () => { expect(useCombatStore.getState().inventory).toEqual([]); }); }); + +describe("online damage presentation relay", () => { + it("relays authority companion hits so followers can display them", () => { + useCombatStore.getState().initializeCharacter({ classId: "priest", level: 20 }); + useCombatStore.getState().registerMob("relay-mob", { name: "Relay mob", maxHealth: 100 }); + const oldMembers = usePartyStore.getState().members; + usePartyStore.setState({ members: [{ id: "companion" } as (typeof oldMembers)[number]] }); + try { + const event = { + id: 1, occurredAt: 1_000, kind: "damage", sourceActorId: "companion", targetActorId: "relay-mob", + rawAmount: 55, effectiveAmount: 40, overheal: 0, absorbed: 0, critical: true, + } satisfies StructuredCombatEvent; + expect(eventForRelay(event, "leader", true)).toMatchObject({ + kind: "damage", sourceActorId: "companion", targetActorId: "relay-mob", effectiveAmount: 40, critical: true, + }); + expect(eventForRelay(event, "leader", false)).toBeNull(); + } finally { + usePartyStore.setState({ members: oldMembers }); + } + }); + + it("relays authority AI hits on the leader and companions with their crit flag", () => { + useCombatStore.getState().initializeCharacter({ classId: "priest", level: 20 }); + const oldMembers = usePartyStore.getState().members; + usePartyStore.setState({ members: [{ id: "companion" } as (typeof oldMembers)[number]] }); + try { + const hit = { + id: 2, occurredAt: 2_000, kind: "damage", sourceActorId: "mob", targetActorId: PLAYER_AGGRO_ID, + rawAmount: 80, effectiveAmount: 50, overheal: 0, absorbed: 30, critical: true, + } satisfies StructuredCombatEvent; + expect(eventForRelay(hit, "leader", true)).toMatchObject({ + sourceActorId: "mob", targetActorId: "online-player:leader", effectiveAmount: 50, critical: true, + }); + expect(eventForRelay({ ...hit, targetActorId: "companion" }, "leader", true)).toMatchObject({ + sourceActorId: "mob", targetActorId: "companion", effectiveAmount: 50, critical: true, + }); + expect(eventForRelay(hit, "leader", false)).toBeNull(); + } finally { + usePartyStore.setState({ members: oldMembers }); + } + }); +}); diff --git a/src/game/OnlineSessionBridge.tsx b/src/game/OnlineSessionBridge.tsx index b221acdc..5be41010 100644 --- a/src/game/OnlineSessionBridge.tsx +++ b/src/game/OnlineSessionBridge.tsx @@ -28,6 +28,7 @@ import { } from "./partyRuntimeRegistry"; import { usePartyStore } from "./partyStore"; import { useGameStore } from "./store"; +import { ingestRelayDamageText, withSuppressedReplayDamageText } from "./floatingCombatText"; import { useManastormStore } from "./manastormStore"; import { advanceManastormSession } from "./manastormSession"; import { useWailingEncounterStore } from "./wailingCavernsEncounter"; @@ -112,7 +113,7 @@ export function applySharedWorld(world: OnlineSharedWorld): void { } } -function eventForRelay( +export function eventForRelay( event: ReturnType["combatEvents"][number], localAccountId: string, authority: boolean, @@ -124,7 +125,17 @@ function eventForRelay( )); const sourceIsLocal = event.sourceActorId === PLAYER_AGGRO_ID || playerOwnedSummon; const targetsRemotePlayer = isOnlinePlayerActorId(event.targetActorId); - if (!sourceIsLocal && !(authority && targetsRemotePlayer)) return null; + const partyMembers = usePartyStore.getState().members; + const sourceIsCompanion = partyMembers.some((member) => member.id === event.sourceActorId) + || combat.summons.some((summon) => partyMembers.some((member) => member.id === summon.ownerActorId) + && summon.id === event.sourceActorId); + const companionDamageToMob = authority && event.kind === "damage" + && Boolean(combat.mobs[event.targetActorId]) && sourceIsCompanion; + const authorityDamageToFriendly = authority && event.kind === "damage" && !sourceIsLocal + && (event.targetActorId === PLAYER_AGGRO_ID + || partyMembers.some((member) => member.id === event.targetActorId)); + if (!sourceIsLocal && !(authority && targetsRemotePlayer) + && !companionDamageToMob && !authorityDamageToFriendly) return null; const localActorId = onlinePlayerActorId(localAccountId); const targetActorId = event.targetActorId === PLAYER_AGGRO_ID ? localActorId @@ -342,7 +353,10 @@ export function OnlineSessionBridge() { updatePartyRuntimePosition(actorId, player.position[0], player.position[1], player.position[2]); } if (!snapshot.authority && snapshot.world) applySharedWorld(snapshot.world); - for (const event of snapshot.events) applyRelayEvent(event, snapshot, applyingRef); + for (const event of snapshot.events) { + withSuppressedReplayDamageText(() => applyRelayEvent(event, snapshot, applyingRef)); + ingestRelayDamageText(event, snapshot); + } useCombatStore.getState().synchronizeActors(); accept(snapshot); } catch (error) { diff --git a/src/game/abilityCatalog.ts b/src/game/abilityCatalog.ts index 6129b552..9949e6a3 100644 --- a/src/game/abilityCatalog.ts +++ b/src/game/abilityCatalog.ts @@ -140,13 +140,19 @@ export interface AbilityAmountScaling { readonly bonusPowerCoefficient?: number; readonly attackPowerCoefficient?: number; readonly rangedAttackPowerCoefficient?: number; + /** Add a fraction of the source character's Intelligence to the resolved amount. */ + readonly intellectCoefficient?: number; readonly spiritCoefficient?: number; + /** Add a fraction of the source character's Stamina to the resolved amount. */ + readonly staminaCoefficient?: number; + /** Add main-hand weapon DPS multiplied by this value to the resolved amount. */ + readonly weaponDpsCoefficient?: number; readonly sourceLevel?: number; readonly maxScalingLevel?: number; } export interface AbilityHealingRecipients { - readonly recipient?: "caster" | "ability-target"; + readonly recipient?: "caster" | "ability-target" | "pet"; readonly scope?: "party"; readonly center?: "caster" | "ability-target"; readonly radius?: number; @@ -170,7 +176,7 @@ export type AbilityEffect = /** Optional stack-based payload used by poison-consuming finishers. */ readonly poison?: import("./roguePoison").RoguePoisonFinisherScaling; } - | ({ readonly kind: "heal"; readonly coefficient: number; readonly percentMaxHealth?: number; readonly percentOfDamage?: number } & AbilityAmountScaling & AbilityHealingRecipients) + | ({ readonly kind: "heal"; readonly coefficient: number; readonly percentMaxHealth?: number; readonly percentOfDamage?: number; readonly requiresLandedHit?: boolean } & AbilityAmountScaling & AbilityHealingRecipients) | ({ readonly kind: "shield"; readonly coefficient: number; readonly durationMs: number } & AbilityAmountScaling & AbilityHealingRecipients) | ({ readonly kind: "dot"; readonly coefficient: number; readonly school?: DamageSchool; readonly ticks: number; readonly intervalMs: number; readonly startsImmediately?: boolean; readonly tag?: string } & AbilityAmountScaling & AbilityDamageResource) | ({ readonly kind: "hot"; readonly coefficient: number; readonly ticks: number; readonly intervalMs: number; readonly percentMaxHealth?: number } & AbilityAmountScaling & AbilityHealingRecipients) @@ -185,7 +191,14 @@ export type AbilityEffect = /** Source-defined party absorb area carried by a stationary Death Knight zone. */ readonly antiMagicZone?: { readonly radius: number; readonly capacityBase: number; readonly capacityPerAttackPower: number; readonly absorbFraction: number; readonly intervalMs: number }; } - | { readonly kind: "resource"; readonly amount: number; readonly resource?: ResourceType; readonly percentage?: boolean } + | { + readonly kind: "resource"; + readonly amount: number; + readonly resource?: ResourceType; + readonly percentage?: boolean; + /** Party-scoped resource effects use the ability's radius and targeting shape. */ + readonly scope?: "target" | "party"; + } | { readonly kind: "combo"; readonly amount: number } | { readonly kind: "taunt"; readonly durationMs: number; readonly maxTargets?: number } | { readonly kind: "status"; readonly status: MobStatusKind; readonly durationMs: number; readonly magnitude?: number; readonly maxTargets?: number; readonly breakOnDamage?: boolean } @@ -196,6 +209,8 @@ export type AbilityEffect = readonly recipient?: "ability-target" | "caster" | "pet"; /** Party/raid area auras are applied to the player and every active party member. */ readonly scope?: "target" | "party"; + /** Optional range for a party aura sourced by a nearby-target proc. */ + readonly radius?: number; /** Some party effects benefit allies but exclude the caster. */ readonly excludeCaster?: boolean; readonly control?: AbilityAuraControl; @@ -203,6 +218,10 @@ export type AbilityEffect = readonly sourceAuraType: number; readonly miscValue: number; readonly triggerSpellId: number; + /** Resolve this rider only if the cast landed at least one direct hit. */ + readonly requiresLandedHit?: boolean; + /** Resolve this rider only if the cast landed at least one direct critical hit. */ + readonly requiresCriticalHit?: boolean; } | { readonly kind: "dispel"; @@ -227,6 +246,8 @@ export type AbilityEffect = readonly kind: "movement"; readonly movement: "teleport" | "leap" | "charge" | "knockback" | "sanctuary"; readonly toward: "target" | "destination" | "away"; + /** Source row movement distance in yards when the spell supplies one. */ + readonly distance?: number; } | { readonly kind: "dispel-mechanic"; readonly mechanic: number; readonly maxCount: number } | { readonly kind: "pet"; readonly action: "summon" | "call" | "recall" | "dismiss" | "resurrect" | "feed" | "tame"; readonly creatureId?: number } @@ -340,6 +361,15 @@ export interface AbilityDefinition { readonly talentNodeId?: string; /** Legacy CoA source identifier; `abilityTalentNodeId` normalizes it. */ readonly talentEntryId?: number; + /** A pair-only upgrade applied after its source passive unlock level. */ + readonly buildUpgrade?: AbilityBuildUpgrade; +} + +export interface AbilityBuildUpgrade { + readonly unlockLevel: number; + readonly values: Partial>; } export interface ClassResourceProfile { @@ -1063,7 +1093,37 @@ export function abilitiesForCharacter( ability.romSkillGroup === "general" || (ability.romSkillGroup === "passive" && ability.id.includes("-general-")) )); const elites = romEliteAbilities.filter((ability) => ability.classId === classId && ability.secondaryClassId === secondaryClassId); - return [...primary, ...secondaryGeneral, ...elites]; + const characterAbilities = [...primary, ...secondaryGeneral, ...elites]; + if (classId !== "rom-warlock" || secondaryClassId !== "rom-priest") return characterAbilities; + return characterAbilities.map((ability) => { + if (ability.classId === "rom-priest" && ability.dbcSpellId === 490256) { + return { + ...ability, + buildUpgrade: { + unlockLevel: 30, + values: { + castMode: "instant", + castTimeMs: 0, + cooldownMs: 5_000, + description: "Instant cast with a 5-second cooldown. Restores 1 Psi. A critical hit activates Healing Fortune. The simulator cannot redirect an ally-targeted cast to that ally's hostile target.", + }, + }, + }; + } + if (ability.classId === "rom-warlock" && ability.dbcSpellId === 497958) { + return { + ...ability, + buildUpgrade: { + unlockLevel: 15, + values: { + target: "any", + description: "Can target a hostile enemy to deal damage or a friendly ally to heal them when Healing Fortune is learned. Ally-target redirection is not modeled.", + }, + }, + }; + } + return ability; + }); } /** Return the RuneWaker Nature Power cap granted by the learned Brilliance passive. */ @@ -1140,6 +1200,12 @@ export function learnedAbilityForBuild( return abilityAtLevel(ability, playerLevel, ability.talentEntryId === undefined ? undefined : learnedRank); } +function applyBuildUpgradeAtLevel(ability: AbilityDefinition, playerLevel: number): AbilityDefinition { + return ability.buildUpgrade && playerLevel >= ability.buildUpgrade.unlockLevel + ? { ...ability, ...ability.buildUpgrade.values } + : ability; +} + export function abilityAtLevel( ability: AbilityDefinition, playerLevel: number, @@ -1148,8 +1214,8 @@ export function abilityAtLevel( const rank = abilityRankForLevel(ability, playerLevel, learnedTalentRank); const effects = rank?.effects ?? ability.effects; const target = effects.length > 0 && effects.every((effect) => effect.kind === "dispel" && effect.relationship === "target" && effect.mode === "cleanse") ? "any" : ability.target; - if (!rank) return target === ability.target ? ability : { ...ability, target }; - return { + if (!rank) return applyBuildUpgradeAtLevel(target === ability.target ? ability : { ...ability, target }, playerLevel); + return applyBuildUpgradeAtLevel({ ...ability, target, dbcSpellId: rank.spellId, @@ -1167,7 +1233,7 @@ export function abilityAtLevel( targeting: rank.targeting ?? ability.targeting, castRules: rank.castRules ?? ability.castRules, runeCost: rank.runeCost ?? ability.runeCost, - }; + }, playerLevel); } export function isAbilityUnlocked(ability: AbilityDefinition, playerLevel: number): boolean { diff --git a/src/game/combatActors.ts b/src/game/combatActors.ts index 778236a1..be6a0b16 100644 --- a/src/game/combatActors.ts +++ b/src/game/combatActors.ts @@ -6,6 +6,13 @@ export type CombatResourceId = string; export type DeathKnightRuneType = "blood" | "frost" | "unholy" | "death"; export type CombatActorPosition = readonly [number, number, number]; +export type DeathKnightRuneConversionSource = "blood-tap" | "reaping"; + +export interface DeathKnightRuneConversion { + readonly source: DeathKnightRuneConversionSource; + readonly expiresAt: number; +} + export interface CombatResourcePoolState { readonly id: CombatResourceId; readonly current: number; @@ -20,7 +27,10 @@ export interface DeathKnightRuneState { readonly baseType: Exclude; readonly type: DeathKnightRuneType; readonly readyAt: number; + /** Legacy/latest expiry retained for existing Blood Tap consumers. */ readonly deathRuneExpiresAt?: number; + /** Independent aura ownership prevents one temporary conversion expiring another. */ + readonly deathRuneConversions?: readonly DeathKnightRuneConversion[]; } export interface CombatActorCastState { diff --git a/src/game/combatChannelAmounts.test.ts b/src/game/combatChannelAmounts.test.ts index 4a79f551..b4f229ee 100644 --- a/src/game/combatChannelAmounts.test.ts +++ b/src/game/combatChannelAmounts.test.ts @@ -57,6 +57,24 @@ describe("channel amount expansion", () => { expect(channelPulseAt(accelerated, 0, 1_000, 1)).toBe(500); }); + it("honors an explicit channel cadence through the cast end", () => { + const mindFlay = abilitiesForClass("priest").find((candidate) => candidate.name === "Mind Flay")!; + const necroticWoundChannel = { + ...mindFlay, + castMode: "channel" as const, + castTimeMs: 1_500, + channelPulses: 3, + channelTickMs: 500, + }; + expect([0, 1, 2].map((pulse) => channelPulseAt(necroticWoundChannel, 1_000, 1_500, pulse))) + .toEqual([1_500, 2_000, 2_500]); + + const penance = abilitiesForClass("priest").find((candidate) => candidate.name === "Penance")!; + const explicitPenance = { ...penance, channelTickMs: 1_000 }; + expect([0, 1, 2].map((pulse) => channelPulseAt(explicitPenance, 1_000, explicitPenance.castTimeMs, pulse))) + .toEqual([1_000, 2_000, 3_000]); + }); + it("gives damaging and healing classic channels a pulse payload", () => { const expected = [ ["priest", "Penance"], ["priest", "Mind Flay"], ["priest", "Mind Sear"], diff --git a/src/game/combatChannelAmounts.ts b/src/game/combatChannelAmounts.ts index 18f70e88..4f37ddf9 100644 --- a/src/game/combatChannelAmounts.ts +++ b/src/game/combatChannelAmounts.ts @@ -1,4 +1,5 @@ import { triggeredAbilityBySpellId, type AbilityDefinition, type AbilityEffect } from "./abilityCatalog"; +import { isRomDruidRoguePair } from "./romDruidRogueCurrentCoa"; type ChannelAmountEffect = Extract; @@ -12,6 +13,10 @@ export function channelPulseCount(ability: AbilityDefinition): number { } export function channelPulseAt(ability: AbilityDefinition, startedAt: number, durationMs: number, pulseIndex: number): number { + if (ability.channelTickMs && ability.channelTickMs > 0) { + const intervals = Math.max(1, channelPulseCount(ability) - (ability.channelStartsWithPulse ? 1 : 0)); + return startedAt + (pulseIndex + (ability.channelStartsWithPulse ? 0 : 1)) * durationMs / intervals; + } const intervals = Math.max(1, channelPulseCount(ability) - (ability.channelStartsWithPulse ? 1 : 0)); return startedAt + (pulseIndex + (ability.channelStartsWithPulse ? 0 : 1)) * durationMs / intervals; } @@ -23,12 +28,17 @@ export function channelAmountEffects(ability: AbilityDefinition, totalTicks: num }[] { const ticks = Math.max(1, totalTicks); const amounts: { effect: ChannelAmountEffect; multiplier: number }[] = []; + const hasPerHitNecroticWoundDamage = ability.source === "runewaker" + && ability.dbcSpellId === 494321 + && isRomDruidRoguePair(ability); for (const effect of ability.effects) { if (effect.kind === "damage" || effect.kind === "heal" || effect.kind === "dot" || effect.kind === "hot") { amounts.push({ effect, multiplier: ability.name === "Penance" ? 1 : ability.dbcSpellId === 491164 && effect.kind === "damage" ? 1 + : hasPerHitNecroticWoundDamage && effect.kind === "damage" + ? 1 : (effect.kind === "dot" || effect.kind === "hot" ? effect.ticks : 1) / ticks }); } else if (effect.kind === "apply-aura") { for (const proc of effect.aura.procs ?? []) { diff --git a/src/game/combatDamageProfile.ts b/src/game/combatDamageProfile.ts new file mode 100644 index 00000000..9ba1f480 --- /dev/null +++ b/src/game/combatDamageProfile.ts @@ -0,0 +1,23 @@ +import type { DamageSchool } from "./combatAuras"; + +/** + * A damage packet can carry more than one school tag. This is distinct from a + * single DamageSchool: for example, CoA's "Physical Dark" must remain both + * physical and Dark (represented by the project's shadow school mapping). + */ +export interface CombatDamageProfile { + readonly schools: readonly DamageSchool[]; +} + +/** CoA Dark is represented by the simulator's existing shadow school. */ +export const ROM_PHYSICAL_DARK_DAMAGE_PROFILE = Object.freeze({ + schools: Object.freeze(["physical", "shadow"] as const), +}) satisfies CombatDamageProfile; + +/** A school-specific modifier/absorb matches a composite packet by either tag. */ +export function combatDamageProfileMatchesSchool( + profile: CombatDamageProfile, + school: DamageSchool | undefined, +): boolean { + return school === undefined || profile.schools.includes(school); +} diff --git a/src/game/combatPresentation.ts b/src/game/combatPresentation.ts index 1c8f64c2..a52cd101 100644 --- a/src/game/combatPresentation.ts +++ b/src/game/combatPresentation.ts @@ -325,6 +325,12 @@ export function presentationSourceForAbility(ability: AbilityDefinition): Combat } export function presentationSchoolForAbility(ability: AbilityDefinition): CombatPresentationSchool { + if (ability.source === "runewaker" && ability.classId === "rom-priest" && ability.dbcSpellId === 490276) { + // Holy Void contains "Void" in its current CoA name, but its catalog hit + // is Light damage. Resolve the explicit Priest-primary identity before + // the generic keyword check classifies it as Shadow. + return "holy"; + } const name = `${ability.name} ${ability.description}`.toLowerCase(); if (/fire|flame|burn|inferno|pyro|molten/.test(name)) return "fire"; if (/frost|ice|rime|chill|snow/.test(name)) return "frost"; diff --git a/src/game/combatResources.ts b/src/game/combatResources.ts index ca745996..955cfa42 100644 --- a/src/game/combatResources.ts +++ b/src/game/combatResources.ts @@ -55,7 +55,39 @@ export function normalizeDeathKnightRunes( now: number, ): readonly DeathKnightRuneState[] { return Object.freeze(runes.map((rune) => { - if (rune.deathRuneExpiresAt === undefined || rune.deathRuneExpiresAt > now) return rune; + if (rune.deathRuneConversions !== undefined) { + const activeConversions = rune.deathRuneConversions.filter((conversion) => ( + Number.isFinite(conversion.expiresAt) && conversion.expiresAt > now + )); + if (activeConversions.length > 0) { + const latestExpiry = Math.max(...activeConversions.map((conversion) => conversion.expiresAt)); + if (rune.type === "death" + && rune.deathRuneExpiresAt === latestExpiry + && activeConversions.length === rune.deathRuneConversions.length) return rune; + return Object.freeze({ + ...rune, + type: "death", + deathRuneExpiresAt: latestExpiry, + deathRuneConversions: Object.freeze(activeConversions), + }); + } + const { deathRuneExpiresAt: _legacyExpiry, deathRuneConversions: _conversions, ...baseRune } = rune; + void _legacyExpiry; + void _conversions; + return Object.freeze({ ...baseRune, type: rune.baseType }); + } + if (rune.deathRuneExpiresAt === undefined) return rune; + if (rune.deathRuneExpiresAt > now) { + // Older snapshots only stored Blood Tap's latest expiration. Treat that + // legacy shape as a Blood Tap owner before any newer conversion touches it. + return Object.freeze({ + ...rune, + deathRuneConversions: Object.freeze([{ + source: "blood-tap" as const, + expiresAt: rune.deathRuneExpiresAt, + }]), + }); + } const { deathRuneExpiresAt: _expiredAt, ...baseRune } = rune; void _expiredAt; return Object.freeze({ ...baseRune, type: rune.baseType }); @@ -86,6 +118,10 @@ export function activateDeathKnightBloodTapRune( type: "death" as const, readyAt: Math.min(rune.readyAt, now), deathRuneExpiresAt: now + Math.max(1, durationMs), + deathRuneConversions: Object.freeze([{ + source: "blood-tap" as const, + expiresAt: now + Math.max(1, durationMs), + }]), }) : rune)); } diff --git a/src/game/combatRotation.ts b/src/game/combatRotation.ts index bd965485..1b0abf5f 100644 --- a/src/game/combatRotation.ts +++ b/src/game/combatRotation.ts @@ -56,6 +56,8 @@ export interface RotationContext { readonly comboPoints: number; readonly comboTargetId: string | null; readonly runes: readonly DeathKnightRuneState[]; + /** Learned Reaping rank, used only to expose its otherwise-omitted Blood Strike trigger fallback. */ + readonly deathKnightReapingRank?: number; readonly abilities: readonly AbilityDefinition[]; /** Learned actions capable of hostile damage, including unavailable ones. */ readonly knownDamagingAbilityNames?: ReadonlySet; @@ -76,6 +78,8 @@ export interface RotationContext { readonly activeAuraExclusiveGroups?: ReadonlySet; readonly activeSummonAbilityIds?: ReadonlySet; readonly hasActivePet?: boolean; + /** True only when an in-range living ally has a depleted pool restored by this party-scoped effect. */ + readonly partyResourceDeficit?: (ability: AbilityDefinition) => boolean; /** Proc/state-gated actions that the caller has positively made available. */ readonly availableConditionalAbilityNames?: ReadonlySet; readonly canUseAbility?: (ability: AbilityDefinition) => boolean; @@ -104,9 +108,9 @@ const profile = ( /** Playerbots priorities translated to the executable Healer Man spell model. */ export const CLASSIC_ROTATION_PROFILES: readonly RotationProfile[] = Object.freeze([ - profile("warrior:arms", "warrior", ["Battle Stance", "Bloodrage", "Rend", "Mortal Strike", "Bladestorm", "Overpower", "Execute", "Slam", "Heroic Strike"]), - profile("warrior:fury", "warrior", ["Berserker Stance", "Battle Stance", "Bloodrage", "Bloodthirst", "Whirlwind", "Execute", "Sunder Armor", "Heroic Strike"]), - profile("warrior:protection", "warrior", ["Defensive Stance", "Shield Block", "Last Stand", "Shield Wall", "Enraged Regeneration", "Taunt", "Shield Bash", "Bloodrage", "Shield Slam", "Revenge", "Devastate", "Thunder Clap", "Sunder Armor", "Heroic Strike"]), + profile("warrior:arms", "warrior", ["Battle Stance", "Bloodrage", "Rend", "Mortal Strike", "Bladestorm", "Overpower", "Victory Rush", "Execute", "Slam", "Heroic Strike"]), + profile("warrior:fury", "warrior", ["Berserker Stance", "Battle Stance", "Bloodrage", "Bloodthirst", "Whirlwind", "Victory Rush", "Execute", "Sunder Armor", "Heroic Strike"]), + profile("warrior:protection", "warrior", ["Defensive Stance", "Shield Block", "Last Stand", "Shield Wall", "Enraged Regeneration", "Taunt", "Shield Bash", "Bloodrage", "Shield Slam", "Revenge", "Victory Rush", "Devastate", "Thunder Clap", "Sunder Armor", "Heroic Strike"]), profile("paladin:holy", "paladin", ["Concentration Aura", "Devotion Aura", "Blessing of Might", "Seal of Wisdom", "Seal of Light", "Seal of Righteousness", "Holy Shock", "Flash of Light", "Holy Light", "Sacred Shield", "Judgement of Light"]), profile("paladin:protection", "paladin", ["Devotion Aura", "Blessing of Might", "Seal of Vengeance", "Seal of Corruption", "Seal of Wisdom", "Seal of Righteousness", "Hammer of the Righteous", "Shield of Righteousness", "Holy Shield", "Consecration", "Judgement of Wisdom"]), profile("paladin:retribution", "paladin", ["Retribution Aura", "Devotion Aura", "Blessing of Might", "Seal of Command", "Seal of Vengeance", "Seal of Corruption", "Seal of Righteousness", "Divine Storm", "Crusader Strike", "Judgement of Wisdom", "Consecration", "Exorcism", "Hammer of Wrath"]), @@ -143,6 +147,7 @@ const PROFILE_BY_SPECIALIZATION = new Map( const CONDITIONAL_ABILITY_NAMES = new Set([ "Overpower", + "Pestilence", "Revenge", "Victory Rush", ]); @@ -163,6 +168,7 @@ const TARGET_HEALTH_GATES = new Map([ ]); const MINIMUM_HOSTILE_TARGETS = new Map([ + ["Pestilence", 2], ["Multi-Shot", 2], ["Volley", 3], ["Flamestrike", 3], @@ -401,6 +407,15 @@ function scoreAbility( if ((context.hostileCount ?? 1) < minimumHostileTargetsForAbility(ability.name)) return null; if (CONDITIONAL_ABILITY_NAMES.has(ability.name) && !context.availableConditionalAbilityNames?.has(ability.name)) return null; + if (ability.name === "Victory Rush" && context.availableConditionalAbilityNames?.has("Victory Rush")) { + return { + ability, + score: 1_016_500, + ruleId: "reactive-improved-victory-rush", + reason: "a parry opened the Victory Rush window", + targetId: context.hostileTarget?.id ?? null, + }; + } if (context.classId === "druid") { const specializationId = rotationProfile?.specializationId; if (specializationId === "druid:feral-bear" && CAT_FORM_ACTION_NAMES.has(ability.name)) return null; @@ -641,7 +656,18 @@ function scoreAbility( reason = "missing pet or summon"; } } - if (categories.has("resource")) score += resourceFraction < 0.3 ? 2_600 : -1_000; + if (categories.has("resource")) { + const partyResourceDeficit = ability.effects.some((effect) => ( + effect.kind === "resource" && effect.scope === "party" + )) && (context.partyResourceDeficit?.(ability) ?? false); + if (partyResourceDeficit) { + score += 2_600; + ruleId = "party-resource-restoration"; + reason = "an in-range ally has a depleted resource pool"; + } else { + score += resourceFraction < 0.3 ? 2_600 : -1_000; + } + } if (damaging) score += 1_000 + throughput(ability, context.comboPoints) * 10; if (isComboFinisher(ability)) score += 2_400; if (isComboBuilder(ability)) score += context.comboPoints < 4 ? 1_400 : 0; @@ -655,11 +681,32 @@ function scoreAbility( } export function evaluateCombatRotation(context: RotationContext): RotationDecision | null { - const rotationProfile = rotationProfileFor( + const baseRotationProfile = rotationProfileFor( context.classId, context.specializationId, context.specialization, ); + const hasSpendableBaseBloodRune = context.runes.some((rune) => ( + rune.baseType === "blood" && rune.readyAt <= context.now + )); + const reapingRank = Math.max(0, Math.trunc(context.deathKnightReapingRank ?? 0)); + const reapingTriggerFallbacks: string[] = []; + if (baseRotationProfile?.specializationId === "death-knight:blood" + && reapingRank > 0 + && hasSpendableBaseBloodRune) { + reapingTriggerFallbacks.push("Blood Strike"); + if (context.availableConditionalAbilityNames?.has("Pestilence")) { + reapingTriggerFallbacks.push("Pestilence"); + } + } + const rotationProfile = baseRotationProfile && reapingTriggerFallbacks.length > 0 + ? { + ...baseRotationProfile, + // Keep the normal Blood priority intact. Reaping triggers are final + // fallbacks, with Blood Strike preferred over Pestilence. + abilityPriority: Object.freeze([...baseRotationProfile.abilityPriority, ...reapingTriggerFallbacks]), + } + : baseRotationProfile; const lowest = [...(context.friendlyTargets ?? [])] .filter((target) => target.health > 0 && !target.fallen) .sort((left, right) => ( @@ -668,7 +715,10 @@ export function evaluateCombatRotation(context: RotationContext): RotationDecisi ))[0] ?? null; const decision = context.abilities .filter((ability) => !ability.passive) - .filter(abilityHasRotationSemantics) + .filter((ability) => abilityHasRotationSemantics(ability) + || (ability.name === "Pestilence" + && reapingRank > 0 + && context.availableConditionalAbilityNames?.has("Pestilence") === true)) .filter((ability) => !context.moving || ability.castTimeMs <= 0 || canAbilityCastWhileMoving(ability)) .filter((ability) => { if (context.classId !== "death-knight") return true; diff --git a/src/game/combatStore.test.ts b/src/game/combatStore.test.ts index e7c8f613..c54129e6 100644 --- a/src/game/combatStore.test.ts +++ b/src/game/combatStore.test.ts @@ -19,12 +19,13 @@ import { useCombatStore, } from "./combatStore"; import { TALENT_NODES, talentNodesForTree } from "./talentCatalog"; -import { EMPTY_ITEM_STATS } from "./itemStats"; +import { armorReductionPercent, EMPTY_ITEM_STATS } from "./itemStats"; import { abilitiesForClass, abilityAtLevel, abilityTalentNodeId, defaultActionBarForClass } from "./abilityCatalog"; import { defaultActionBindings } from "./actionBindings"; import { deriveCharacterStats, MANA_POOL_MULTIPLIER } from "./wotlkStats"; import { applyAura as applyCombatAura } from "./combatAuras"; import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; +import { wow335HunterPetArmorForLevel } from "./wow335HunterPetInheritedDefenseRuntime"; import { subscribeCombatPresentation, type CombatPresentationEvent } from "./combatPresentation"; import { loadCanonicalBenchmarkBuilds } from "./benchmark/benchmarkBuilds"; import { runtimePartyTalentRanksForLevel } from "./partyTalentRuntime"; @@ -89,6 +90,43 @@ function setPartyMemberHealth(id: string, health: number): void { })); } +function registerHunterPetDefenseProbe(id: string, school: "physical" | "fire"): string { + const attackId = `${id}-attack`; + useCombatStore.getState().registerMob(id, { + name: id, + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [{ + ...DEFAULT_ENEMY_ATTACK, + id: attackId, + name: "Defense probe", + school, + range: 5, + }], + }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.setState((state) => ({ + mobs: { ...state.mobs, [id]: { ...state.mobs[id]!, attackDamage: 1_000 } }, + })); + return attackId; +} + +function incomingDamageEventForSummon(mobId: string, attackId: string, summonId: string) { + useCombatStore.getState().damageMob(mobId, 1, 1_000, { + actorId: summonId, + role: "damage", + abilityId: "hunter-pet-defense-probe", + }); + useCombatStore.getState().advanceMobCombat(1_450); + return [...useCombatStore.getState().combatEvents].reverse().find((event) => ( + event.kind === "damage" + && event.sourceActorId === mobId + && event.targetActorId === summonId + && event.abilityId === attackId + )); +} + function preparePartyMember( index: number, position: PartyWorldPosition, @@ -949,6 +987,56 @@ describe("combat store", () => { }); }); + it("mirrors a player Death Knight's landed spell during Dancing Rune Weapon's 12-second window", () => { + useCombatStore.getState().initializeCharacter({ + classId: "death-knight", + level: 80, + xp: 0, + }); + useCombatStore.setState({ + talentRanks: { "talent-1961": 1 }, + resource: 100, + resourcePools: { "runic-power": 100 }, + }); + registerTarget("dancing-rune-weapon-player-target", [2, 0, 0], 1_000_000, 0); + + expect(useCombatStore.getState().castAbility( + "wow335-death-knight-dancing-rune-weapon", undefined, 1_000, + ).ok).toBe(true); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + targetId: PLAYER_AURA_ENTITY_ID, + definition: expect.objectContaining({ name: "Dancing Rune Weapon", durationMs: 12_000 }), + appliedAt: 1_000, + expiresAt: 13_000, + })); + expect(useCombatStore.getState().summons.some((summon) => ( + summon.sourceAbilityId === "wow335-death-knight-dancing-rune-weapon" + ))).toBe(false); + + const deathCoil = useCombatStore.getState().abilities.find((ability) => ability.name === "Death Coil"); + expect(deathCoil).toBeDefined(); + expect(useCombatStore.getState().castAbility(deathCoil!.id, undefined, 3_000).ok).toBe(true); + const activeHits = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" + && event.sourceActorId === PLAYER_AGGRO_ID + && event.targetActorId === "dancing-rune-weapon-player-target" + && event.abilityId === deathCoil!.id + && event.occurredAt === 3_000 + )); + expect(activeHits).toHaveLength(2); + expect(activeHits[1].rawAmount).toBe(Math.floor(activeHits[0].rawAmount * 0.5)); + + useCombatStore.setState({ resource: 100, resourcePools: { "runic-power": 100 } }); + expect(useCombatStore.getState().castAbility(deathCoil!.id, undefined, 14_000).ok).toBe(true); + expect(useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" + && event.sourceActorId === PLAYER_AGGRO_ID + && event.targetActorId === "dancing-rune-weapon-player-target" + && event.abilityId === deathCoil!.id + && event.occurredAt === 14_000 + ))).toHaveLength(1); + }); + it("swings at the resolved companion without redirecting player damage", () => { const target = usePartyStore.getState().members.find((member) => member.role === "damage")!; usePartyStore.setState((state) => ({ @@ -1242,6 +1330,12 @@ describe("combat store", () => { expect(useCombatStore.getState().settings.showThreatMeter).toBe(false); expect(useCombatStore.getState().settings.showMobAggroRanges).toBe(false); + expect(useCombatStore.getState().settings).toMatchObject({ + showOwnDamageText: true, + showAllyDamageText: false, + showIncomingDamageText: false, + showFloatingCombatText: true, + }); useCombatStore.getState().updateSettings({ masterVolume: 9, uiScale: 0.1, @@ -1273,6 +1367,18 @@ describe("combat store", () => { settings: { masterVolume: 0.6 }, }); expect(useCombatStore.getState().settings.masterVolume).toBe(0.6); + expect(useCombatStore.getState().settings).toMatchObject({ + showOwnDamageText: true, + showAllyDamageText: false, + showIncomingDamageText: false, + }); + useCombatStore.getState().updateSettings({ showOwnDamageText: false, showAllyDamageText: true, showIncomingDamageText: true }); + expect(useCombatStore.getState().settings).toMatchObject({ + showOwnDamageText: false, + showAllyDamageText: true, + showIncomingDamageText: true, + showFloatingCombatText: true, + }); useCombatStore.getState().resetSettings(); expect(useCombatStore.getState().settings).toEqual(DEFAULT_GAMEPLAY_SETTINGS); }); @@ -2141,6 +2247,204 @@ describe("combat store", () => { && event.abilityId === "wow335-hunter-kill-shot")).toHaveLength(1); }); + it("uses player Hunter pet commands and owner attack events while Growl adds flat pet threat", () => { + useCombatStore.getState().initializeCharacter({ classId: "hunter", level: 80, xp: 0 }); + const callPet = useCombatStore.getState().abilities.find((ability) => ability.name === "Call Pet")!; + expect(useCombatStore.getState().castAbility(callPet.id, [0, 0, 0], 1_000).ok).toBe(true); + const pet = useCombatStore.getState().summons.find((summon) => summon.hunterPet)!; + expect(pet).toMatchObject({ + hunterPetCommand: "follow", + hunterPetReactMode: "defensive", + hunterPetGrowlAutocastEnabled: false, + }); + useCombatStore.getState().registerMob("hunter-pet-first-target", { + name: "Hunter pet target", maxHealth: 100_000, xpReward: 0, + }); + setMobPosition("hunter-pet-first-target", [6, 0, 0]); + useCombatStore.getState().registerMob("hunter-pet-owner-action-target", { + name: "Owner action target", maxHealth: 100_000, xpReward: 0, + }); + setMobPosition("hunter-pet-owner-action-target", [8, 0, 0]); + useCombatStore.getState().selectMob("hunter-pet-first-target"); + const arcaneShot = useCombatStore.getState().abilities.find((ability) => ability.name === "Arcane Shot")!; + const firstShot = useCombatStore.getState().castAbility(arcaneShot.id, [0, 0, 0], 2_600); + expect(firstShot.ok, firstShot.reason).toBe(true); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id) + ?.hunterPetPendingOwnerAttackTargetId).toBe("hunter-pet-first-target"); + useCombatStore.getState().tick(0.1, 2_700); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id)?.targetId) + .toBe("hunter-pet-first-target"); + expect(useCombatStore.getState().mobs["hunter-pet-first-target"]?.threatByActor[pet.id] ?? 0).toBe(0); + expect(useCombatStore.getState().setHunterPetGrowlAutocast(pet.id, true)).toBe(true); + useCombatStore.getState().tick(0.1, 2_800); + useCombatStore.getState().tick(0.1, 2_900); + const afterGrowl = useCombatStore.getState(); + expect(afterGrowl.mobs["hunter-pet-first-target"]?.threatByActor[pet.id]).toBeGreaterThanOrEqual(1_234); + expect(afterGrowl.mobs["hunter-pet-first-target"]?.forcedTarget).toBeNull(); + expect(afterGrowl.summons.find((summon) => summon.id === pet.id)?.hunterPetGrowlReadyAt).toBe(7_900); + + useCombatStore.getState().selectMob("hunter-pet-owner-action-target"); + expect(useCombatStore.getState().castAbility(arcaneShot.id, [0, 0, 0], 10_000).ok).toBe(true); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id) + ?.hunterPetPendingOwnerAttackTargetId).toBe("hunter-pet-owner-action-target"); + useCombatStore.getState().tick(0.1, 10_100); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id)?.targetId) + .toBe("hunter-pet-first-target"); + + useCombatStore.getState().selectMob("hunter-pet-first-target"); + useCombatStore.getState().tick(0.1, 10_200); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id)?.targetId) + .toBe("hunter-pet-first-target"); + expect(useCombatStore.getState().commandHunterPet(pet.id, "follow")).toBe(true); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id)).toMatchObject({ + targetId: null, + hunterPetCommand: "follow", + }); + expect(useCombatStore.getState().commandHunterPet(pet.id, "stay")).toBe(true); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id)?.hunterPetCommand) + .toBe("stay"); + useCombatStore.setState((state) => ({ summons: state.summons.map((summon) => summon.id === pet.id + ? { ...summon, position: [10, 0, 0] as const } + : summon) })); + expect(useCombatStore.getState().commandHunterPet(pet.id, "follow")).toBe(true); + useCombatStore.getState().tick(0.1, 10_300); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id)!.position[0]).toBeLessThan(10); + expect(useCombatStore.getState().commandHunterPet(pet.id, "stay")).toBe(true); + useCombatStore.setState((state) => ({ summons: state.summons.map((summon) => summon.id === pet.id + ? { ...summon, position: [0, 0, 0] as const } + : summon) })); + useCombatStore.getState().tick(0.1, 10_400); + expect(useCombatStore.getState().summons.find((summon) => summon.id === pet.id)!.position[0]).toBeGreaterThan(0); + }); + + it.each(["physical", "fire"] as const)( + "applies inherited WoW 3.3.5 defenses to a player Hunter pet against %s damage", + (school) => { + const gearStats = { ...EMPTY_ITEM_STATS, armor: 3_000, fireResistance: 500 }; + useCombatStore.getState().initializeCharacter({ classId: "hunter", level: 80, xp: 0 }); + useCombatStore.setState({ gearStats }); + const callPet = useCombatStore.getState().abilities.find((ability) => ability.name === "Call Pet")!; + expect(useCombatStore.getState().castAbility(callPet.id, [0, 0, 0], 1_000).ok).toBe(true); + const pet = useCombatStore.getState().summons.find((summon) => summon.hunterPet)!; + const attackId = registerHunterPetDefenseProbe(`player-pet-defense-${school}`, school); + + const event = incomingDamageEventForSummon(`player-pet-defense-${school}`, attackId, pet.id); + expect(event).toBeDefined(); + expect(event?.rawAmount).toBe(1_000); + if (school === "physical") { + const ownerStats = deriveCharacterStats("hunter", 80, gearStats, "human"); + const petArmor = wow335HunterPetArmorForLevel(80, ownerStats.armor); + const expected = 1_000 - Math.round(1_000 * armorReductionPercent(petArmor, 80) / 100); + expect(event?.effectiveAmount).toBe(expected); + expect(event?.effectiveAmount).toBeLessThan(1_000); + } else { + // 40% of the owner's 500 Fire Resistance yields a 200-resistance + // pet profile: the level-80 partial-resist table selects 20% or 30%. + expect(event?.effectiveAmount).toBeGreaterThanOrEqual(700); + expect(event?.effectiveAmount).toBeLessThanOrEqual(800); + } + }, + ); + + it.each(["physical", "fire"] as const)( + "applies inherited WoW 3.3.5 defenses to a generated companion Hunter pet against %s damage", + (school) => { + const gearStats = { ...EMPTY_ITEM_STATS, armor: 3_000, fireResistance: 500 }; + usePartyStore.getState().initializeParty( + `hunter-pet-defense-companion-${school}`, + 80, + useCombatStore.getState().health, + ); + const memberId = usePartyStore.getState().members[0]!.id; + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === memberId + ? { + ...member, + classId: "hunter", + secondaryClassId: null, + raceId: "human", + level: 80, + gearStats, + talentRanks: {}, + health: member.maxHealth, + } + : member), + })); + registerPartyRuntimePosition(memberId, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + const callPet = abilitiesForClass("hunter").find((ability) => ability.name === "Call Pet")!; + const petId = useCombatStore.getState().summonActor(memberId, callPet, { + kind: "summon", + creatureId: 1, + coefficient: 1, + durationMs: 60_000, + }, [0, 0, 0], null, 1_000); + expect(petId).not.toBeNull(); + const attackId = registerHunterPetDefenseProbe(`companion-pet-defense-${school}`, school); + + const event = incomingDamageEventForSummon(`companion-pet-defense-${school}`, attackId, petId!); + expect(event).toBeDefined(); + expect(event?.rawAmount).toBe(1_000); + if (school === "physical") { + const ownerStats = deriveCharacterStats("hunter", 80, gearStats, "human"); + const petArmor = wow335HunterPetArmorForLevel(80, ownerStats.armor); + const expected = 1_000 - Math.round(1_000 * armorReductionPercent(petArmor, 80) / 100); + expect(event?.effectiveAmount).toBe(expected); + expect(event?.effectiveAmount).toBeLessThan(1_000); + } else { + expect(event?.effectiveAmount).toBeGreaterThanOrEqual(700); + expect(event?.effectiveAmount).toBeLessThanOrEqual(800); + } + }, + ); + + it("includes the player's active armor aura in inherited Hunter-pet physical mitigation", () => { + const gearStats = { ...EMPTY_ITEM_STATS, armor: 3_000 }; + useCombatStore.getState().initializeCharacter({ classId: "hunter", level: 80, xp: 0 }); + useCombatStore.setState({ gearStats }); + const callPet = useCombatStore.getState().abilities.find((ability) => ability.name === "Call Pet")!; + expect(useCombatStore.getState().castAbility(callPet.id, [0, 0, 0], 1_000).ok).toBe(true); + const pet = useCombatStore.getState().summons.find((summon) => summon.hunterPet)!; + const ownerArmorWithoutAura = deriveCharacterStats("hunter", 80, gearStats, "human").armor; + const aura = applyCombatAura(useCombatStore.getState().auras, { + definition: { + id: "test:hunter-owner-armor", + name: "Test Armor Bonus", + disposition: "buff", + durationMs: 30_000, + modifiers: [{ kind: "stat", stat: "armor", operation: "flat", value: 1_000 }], + }, + sourceId: PLAYER_AURA_ENTITY_ID, + targetId: PLAYER_AURA_ENTITY_ID, + now: 1_000, + }); + useCombatStore.setState({ auras: aura.auras }); + const attackId = registerHunterPetDefenseProbe("player-pet-owner-armor-aura", "physical"); + + const event = incomingDamageEventForSummon("player-pet-owner-armor-aura", attackId, pet.id); + const petArmorWithAura = wow335HunterPetArmorForLevel(80, ownerArmorWithoutAura + 1_000); + const expectedWithAura = 1_000 + - Math.round(1_000 * armorReductionPercent(petArmorWithAura, 80) / 100); + const petArmorWithoutAura = wow335HunterPetArmorForLevel(80, ownerArmorWithoutAura); + const expectedWithoutAura = 1_000 + - Math.round(1_000 * armorReductionPercent(petArmorWithoutAura, 80) / 100); + expect(event?.effectiveAmount).toBe(expectedWithAura); + expect(event?.effectiveAmount).toBeLessThan(expectedWithoutAura); + }); + + it("leaves a non-Hunter summon on its existing incoming-damage path", () => { + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + const mirrorImage = useCombatStore.getState().abilities.find((ability) => ability.name === "Mirror Image")!; + expect(useCombatStore.getState().castAbility(mirrorImage.id, [0, 0, 0], 1_000).ok).toBe(true); + const summon = useCombatStore.getState().summons.find((candidate) => !candidate.hunterPet)!; + const attackId = registerHunterPetDefenseProbe("non-hunter-summon-defense", "physical"); + + const event = incomingDamageEventForSummon("non-hunter-summon-defense", attackId, summon.id); + expect(event).toBeDefined(); + expect(event?.rawAmount).toBe(1_000); + expect(event?.effectiveAmount).toBe(1_000); + }); + it("summons three Mirror Images and gives Combustion Fire hit stacks", () => { useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); unlockReadySpell("wow335-mage-combustion"); diff --git a/src/game/combatStore.ts b/src/game/combatStore.ts index 8c9e3ded..a79d40b3 100644 --- a/src/game/combatStore.ts +++ b/src/game/combatStore.ts @@ -1,4 +1,5 @@ import { create } from "zustand"; +import { DEFAULT_GRAPHICS_SETTINGS, normalizeGraphicsSettings, type GraphicsSettings } from "./graphicsSettings"; import { permanentBuffEffects } from "./partyBuffPolicy"; import { usePartyBuffPolicyStore } from "./partyBuffPolicyStore"; import { combatNow } from "./combatClock"; @@ -72,6 +73,39 @@ import { } from "./combatResources"; import { cooldownResetCandidates } from "./cooldownReset"; import { resolveHealing, type HealingResolution } from "./combatHealing"; +import { + WOW335_HUNTER_PET_FURIOUS_HOWL_TAG, + wow335HunterPetFuriousHowlAura, + wow335HunterPetFuriousHowlAutoAttackDamageBonus, + wow335HunterPetBiteDamage, + WOW335_HUNTER_PET_KILL_COMMAND_TAG, + wow335HunterPetKillCommandBonusPercent, + wow335HunterPetProfileForLevel, + wow335HunterPetGrowlProfileForLevel, + wow335HunterPetTargetPolicy, + WOW335_HUNTER_PET_DEFAULT_COMMAND, + WOW335_HUNTER_PET_DEFAULT_REACT_MODE, + type Wow335HunterPetCommand, + type Wow335HunterPetReactMode, + type Wow335HunterPetProfile, +} from "./wow335HunterPetRuntime"; +import { + wow335HunterPetArmorForProfile, + wow335HunterPetBaseDefenseForLevel, + wow335HunterPetInheritedDefenses, + type Wow335HunterPetOwnerResistances, +} from "./wow335HunterPetInheritedDefenseRuntime"; +import { + WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID, + WOW335_HUNTER_PET_BASE_FOCUS_REGENERATION_PER_SECOND, + wow335HunterPetFocusRegenerationPerSecond, +} from "./wow335HunterBestialDisciplineRuntime"; +import { + WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID, + wow335HunterGoForTheThroatAttackKindForAbility, + wow335HunterGoForTheThroatProcPlan, + wow335HunterGoForTheThroatRankMechanics, +} from "./wow335HunterGoForTheThroatRuntime"; import { awardExperience, healerManExperienceAward, @@ -92,6 +126,14 @@ import { WOW335_DEATH_KNIGHT_RIME_READY_TAG, wow335DeathKnightRimeProcSucceeds, } from "./wow335DeathKnightRimeRuntime"; +import { + wow335DeathKnightReapingApplyProcPlan, + wow335DeathKnightReapingProcPlan, + wow335DeathKnightReapingRestoreLandedSpend, + wow335DeathKnightReapingShouldProc, + wow335DeathKnightReapingStateForRunes, + wow335DeathKnightSpentRuneSlots, +} from "./wow335DeathKnightReapingRuntime"; import { WOW335_DEATH_KNIGHT_SUDDEN_DOOM_DEATH_COIL_ABILITY_ID, wow335DeathKnightSuddenDoomTriggerForLandedHit, @@ -108,6 +150,60 @@ import { wow335DeathKnightScentOfBloodOnIncomingEvent, wow335DeathKnightScentOfBloodOnMeleeHit, } from "./wow335DeathKnightScentOfBloodRuntime"; +import { + WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_PROC_TAG, + WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID, + WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID, + wow335DeathKnightBloodCakedBladeShouldProc, + wow335DeathKnightBloodCakedBladeProcChance, + wow335DeathKnightBloodCakedStrikeDamageCoefficient, +} from "./wow335DeathKnightBloodCakedBladeRuntime"; +import { + WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID, + wow335DeathKnightBloodGorgedArmorPenetrationPercent, + wow335DeathKnightBloodGorgedDamageBonusPercent, +} from "./wow335DeathKnightBloodGorgedRuntime"; +import { wow335DeathKnightSpellFamilyInfoForSpellId } from "./wow335DeathKnightBloodGorgedSpellFamily"; +import { + WOW335_DEATH_KNIGHT_EPIDEMIC_TALENT_ID, + wow335DeathKnightEpidemicDotEffect, +} from "./wow335DeathKnightEpidemicRuntime"; +import { + WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_TALENT_ID, + wow335DeathKnightMercilessCombatDamage, +} from "./wow335DeathKnightMercilessCombatRuntime"; +import { + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID, + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA, + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA_TAG, + wow335DeathKnightDancingRuneWeaponCanMirrorEvent, + wow335DeathKnightDancingRuneWeaponDamage, + wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName, + wow335DeathKnightDancingRuneWeaponIsActive, + type Wow335DeathKnightDancingRuneWeaponOwnerEvent, +} from "./wow335DeathKnightDancingRuneWeaponRuntime"; +import { + WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID, + WOW335_DEATH_KNIGHT_DESOLATION_TALENT_ID, + wow335DeathKnightDesolationAuraDefinition, + wow335DeathKnightDesolationShouldTrigger, +} from "./wow335DeathKnightDesolationRuntime"; +import { + WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID, + wow335DeathKnightBloodyVengeanceAuraDefinition, + wow335DeathKnightBloodyVengeanceShouldTrigger, +} from "./wow335DeathKnightBloodyVengeanceRuntime"; +import { + WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID, + wow335DeathKnightBladeBarrierAuraDefinition, + wow335DeathKnightBladeBarrierShouldActivate, +} from "./wow335DeathKnightBladeBarrierRuntime"; +import { + WOW335_DEATH_KNIGHT_SPELL_DEFLECTION_TALENT_ID, + wow335DeathKnightSpellDeflectionDamage, + wow335DeathKnightSpellDeflectionSchoolMask, + wow335DeathKnightSpellDeflectionShouldProc, +} from "./wow335DeathKnightSpellDeflectionRuntime"; import { applyTalentModifierValue, parseTalentModifiers, @@ -136,9 +232,11 @@ import { wow335PriestFocusedWillShouldProc, } from "./wow335PriestFocusedWillRuntime"; import { + WOW335_ROGUE_IMPROVED_KICK_TALENT_ID, WOW335_ROGUE_UNFAIR_ADVANTAGE_COOLDOWN_TAG, WOW335_ROGUE_UNFAIR_ADVANTAGE_DAMAGE_ID, wow335RogueImprovedKickAuraEffectForRank, + wow335RogueImprovedKickSilenceDurationMs, wow335RogueUnfairAdvantageDamageMultiplierForRank, } from "./wow335RogueTalentRuntime"; import { @@ -151,12 +249,49 @@ import { WOW335_HUNTER_LOCK_AND_LOAD_ICD_TAG, WOW335_HUNTER_LOCK_AND_LOAD_READY_TAG, } from "./wow335HunterRuntime"; -import { wow335PaladinAuraMasteryAurasForEntity } from "./wow335PaladinAuraMasteryRuntime"; +import { + wow335PaladinAuraMasteryAurasForEntity, + wow335PaladinAuraMasterySelfControlDuration, + isWow335PaladinRetributionAuraDamageShield, + wow335PaladinRetributionAuraWithSpellPower, +} from "./wow335PaladinAuraMasteryRuntime"; +import { + WOW335_PALADIN_ILLUMINATION_TALENT_ID, + wow335PaladinIlluminationRefundPlan, +} from "./wow335PaladinIlluminationRuntime"; +import { + WOW335_MAGE_FROST_WARDING_TALENT_ID, + WOW335_MAGE_FROST_WARDING_WARD_ABILITIES, + wow335MageFrostWardingArmorAuraEffect, + wow335MageFrostWardingProcPlan, +} from "./wow335MageFrostWardingRuntime"; +import { + WOW335_PALADIN_VENGEANCE_AURA_TAG, + WOW335_PALADIN_VENGEANCE_TALENT_ID, + wow335PaladinVengeanceAuraDefinition, + wow335PaladinVengeanceDamageBonusPercent, + wow335PaladinVengeanceProcPlan, +} from "./wow335PaladinVengeanceRuntime"; +import { + WOW335_PALADIN_CONCENTRATION_AURA_EFFECT_ID, + WOW335_PALADIN_IMPROVED_CONCENTRATION_AURA_TALENT_ID, + wow335PaladinConcentrationAuraPushbackReduction, +} from "./wow335PaladinConcentrationAuraRuntime"; import { WOW335_DRUID_FERAL_INSTINCT_ATTACK_NAMES, wow335DruidFeralInstinctEnrageAura, wow335DruidFeralInstinctTigerAura, } from "./wow335DruidTalentRuntime"; +import { + WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID, + wow335DruidMasterShapeshifterModifiersForForm, + wow335DruidShapeshiftFormForAuras, +} from "./wow335DruidMasterShapeshifterRuntime"; +import { + WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID, + wow335DruidPredatoryInstinctsAreaDamageMultiplier, + wow335DruidPredatoryInstinctsCriticalDamageMultiplier, +} from "./wow335DruidPredatoryInstinctsRuntime"; import { WOW335_GLYPH_OF_SWIFTMEND_ID } from "./wow335GlyphCatalog"; import { WOW335_WARLOCK_METAMORPHOSIS_AURA_TAG, @@ -168,6 +303,7 @@ import { } from "./wow335WarlockMetamorphosisRuntime"; import { WARLOCK_BACKDRAFT_READY_TAG, + warlockAftermathDazeForRank, warlockBackdraftDestructionSpellEligible, warlockBackdraftEffectsForRank, warlockBackdraftTriggerEligible, @@ -231,14 +367,35 @@ import { } from "./heirloomEquipment"; import { romAbilityNeedsRangedWeapon, romAbilityNeedsShield, romAbilityNeedsTwoHand, romAbilityRequiredTargetStateTag, romEffectsForCast, romSelfDrainPercent, romSingleTargetControl, romTargetBleedCount, romTargetHasSlashBleed, romWarriorAbilityAdjustment, romWarriorPhysicalWeaponTooltip, romWarriorThreatMultiplier } from "./romCombatMechanics"; import { - ROM_ROGUE_NUMBING_DAGGER_SKILL_ID, - romRogueNumbingDaggerStatusForTarget, -} from "./romRogueNumbingDaggerRuntime"; + ROM_LOCAL_ACTIVE_BLOCKING_STANCE_AURA_ID, + romCurrentCoaBlockingStanceModifiers, + romCurrentCoaResistModifiers, + romCurrentCoaThreatFactors, +} from "./romWarriorCurrentCoaMechanics"; +import { romWarriorDruidWhirlwindAdjustment } from "./romWarriorDruidRageOfCalmness"; +import { + ROM_COA_LEOPARD_INSTINCT_ID, + createRomLeopardInstinctState, + romLeopardInstinctOnDodge, + romLeopardInstinctOnHitReceived, +} from "./romLeopardInstinctOverrides"; +import { + ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID, + ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID, + romCoaWarriorRogueExhaustionProc, +} from "./romWarriorRogueExhaustion"; import { ROM_ROGUE_POISON_AURA_TAG, + ROM_ROGUE_POISON_ATTACK_SPEED_TAG, ROM_ROGUE_POISON_SKILL_ID, - romRoguePoisonApplicationForAttack, + romRoguePoisonAttackResultForAttack, + romRoguePoisonAttackSpeedTargetId, } from "./romRoguePoisonRuntime"; +import { + ROM_ROGUE_ENERGIZED_HANDS_COOLDOWN_REDUCTION_MS, + romRogueEnergizedHandsActive, + romRogueEnergyMaximumAfterAuraTransition, +} from "./romRogueEnergizedHandsRuntime"; import { ROM_FIRE_LIGHTNING_BURST_RESET_GUARD_TAG, ROM_MAGE_WARLOCK_PASSIVE_TAGS, @@ -265,13 +422,22 @@ import { romMageMeditativeCurrentProc, romMageMeditativeCurrentReadyAt, } from "./romMageRuntime"; +import { + ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG, + isRomMageDruidPair, + romMageDruidGreenGuardianAdvanceStationaryProgress, + romMageDruidGreenGuardianMovementSpeedMultiplier, + romMageDruidGreenGuardianStacksAfterStationarySecond, + type RomMageDruidGreenGuardianStationaryProgress, +} from "./romMageDruidGreenGuardianRuntime"; import { ROM_SCOUT_PRIEST_DRUMS_OF_WAR, ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA, + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_TAG, + romScoutPriestDrumsOfWarCriticalMultiplier, romScoutPriestDrumsOfWarProc, } from "./romScoutPriestOverrides"; import { - ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG, ROM_ROGUE_PRIEST_SINISTER_METHODS_COOLDOWN_KEY, ROM_SCOUT_PRIEST_SNIPER_TAG, romRogueMageDayOfRainBaseMissPercent, @@ -281,13 +447,21 @@ import { import { ROM_ROGUE_DAGGER_MASTERY_TAG, ROM_ROGUE_INSTANT_SHADOW_READY_TAG, + ROM_ROGUE_OFF_HAND_MASTERY_ACCURACY_PERCENT, + ROM_ROGUE_OFF_HAND_MASTERY_DAMAGE_PERCENT, + ROM_ROGUE_OFF_HAND_MASTERY_TAG, ROM_ROGUE_SHADOW_WALKER_PASSIVE_SPELL_ID, ROM_ROGUE_TREASURE_HUNTER_TAG, + ROM_ROGUE_COERCE_PASSIVE_SPELL_ID, + romRogueCoerceAbilityAdjustment, romRogueDaggerDamageMultiplier, - romRogueEnchantedThrowShouldProc, romRogueShadowWalkerAdjustment, romRogueTreasureHunterLootChance, } from "./romRogueMechanics"; +import { + ROM_ROGUE_MAGE_CHAOS_DAGGER_SPELL_ID, + romRogueChaosDaggerDamage, +} from "./romRogueChaosDagger"; import { ROM_ROGUE_CHAMPION_NERVE_GEAR_PASSIVE_SPELL_ID, romRogueChampionNerveGearEffect, @@ -296,26 +470,49 @@ import { import { ROM_PRIEST_CHAMPION_REGENERATE_PROC_ACTION_ID, romPriestChampionCooldownOverride, + romPriestChampionRageControlGain, + romPriestVowOfSilenceDurationMs, } from "./romPriestChampionOverrides"; +import { + ROM_PRIEST_HOLY_BLESSING_TAG, + romPriestHolyBlessingStats, +} from "./romPriestHolyBlessingRuntime"; +import { + ROM_DRUID_MAGE_INSPIRATION_AURA_TAG, + ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID, + isRomDruidMagePair, + romDruidMageInspirationApplySpendStack, + romDruidMageInspirationHastePercent, + romDruidMageInspirationRecipientIds, +} from "./romDruidMageInspirationRuntime"; +import { romPriestScoutSaintsBlessingDamageMultiplier } from "./romPriestScoutSaintsBlessingDamage"; +import { + romPriestHolyCandleIsActive, + romPriestHolyCandleSelfDamageAmount, +} from "./romPriestHolyCandleRuntime"; +import { + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_ID, + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG, + resolveRomPriestChampionBeaconFromAuras, +} from "./romPriestChampionBeaconRuntime"; import { ROM_PRIEST_KNIGHT_HOLY_POWER_HEAL_USES_TAG, romPriestKnightConditionalCastEffects, romPriestWarriorStanceUseAllowed, } from "./romPriestKnightOverrides"; -import { - ROM_PRIEST_MAGE_ENLIGHTENMENT, - ROM_PRIEST_MAGE_ENLIGHTENMENT_COOLDOWN_EFFECT, - romPriestMageEnlightenmentProc, - romPriestMageEnlightenmentReadyAt, -} from "./romPriestMageRuntime"; import { ROM_KNIGHT_GODS_VENGEANCE_TAG, + romKnightCompassionWhirlwindShieldCooldownReductionMs, ROM_KNIGHT_MASTER_OF_PARRY_BLOCK_PROC, ROM_KNIGHT_MASTER_OF_PARRY_TAG, ROM_KNIGHT_SHIELD_OF_VALOR_TAG, romKnightShieldOfValorCooldownReductionMs, romKnightWarriorWhirlwindAdjustment, } from "./romKnightOverrides"; +import { + ROM_COA_KNIGHT_ROGUE_GODS_SWORD_ID, + romCoaKnightRogueGodsSwordBonusLightDamage, +} from "./romKnightGodsSwordCoaMechanics"; import { ROM_DRUID_GREEN_GUARDIAN_TAG, ROM_DRUID_MOTHER_EARTH_PROTECTION_TAG, @@ -345,6 +542,17 @@ import { romWardenBriarShieldShouldReflect, } from "./romWardenOverrides"; import { romWarlockStateRefreshTags } from "./romWarlockOverrides"; +import { + ROM_WARLOCK_MAGE_SOUL_BRAND, + romWarlockMageSoulBrandEffects, +} from "./romWarlockMageSoulBrand"; +import { + romWarlockMageSoulBrandStingHasWillpowerBladeState, +} from "./romWarlockMageSoulBrandSting"; +import { + ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_DAMAGE_BONUS, + ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG, +} from "./romWarlockPriestSpreadingPain"; import { ROM_WARRIOR_BRIAR_TECHNIQUE_AURA, ROM_WARRIOR_BRIAR_TECHNIQUE_PASSIVE_TAG, @@ -363,6 +571,7 @@ import { specializationById } from "./specializationCatalog"; import { EMPTY_ITEM_STATS, itemStatSummary, + weaponDps, type DamageSchool, type ItemStats, type WeaponStats, @@ -398,6 +607,14 @@ import { wow335ShamanImprovedWaterShieldShouldProc, wow335ShamanWaterShieldOrbManaAtLevel, } from "./wow335ShamanImprovedWaterShieldRuntime"; +import { + WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_COOLDOWN_MS, + WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_ICD_TAG, + wow335ShamanImprovedEarthShieldHealingAmount, + wow335ShamanImprovedEarthShieldProcCharges, + wow335ShamanImprovedEarthShieldShouldGrantTidalWaves, +} from "./wow335ShamanImprovedEarthShieldRuntime"; +import { wow335ShamanImprovedShieldOrbAmount } from "./wow335ShamanImprovedShieldsRuntime"; import { WOW335_SHAMAN_TIDAL_WAVES_AURA_TAG, WOW335_SHAMAN_TIDAL_WAVES_DURATION_MS, @@ -408,6 +625,25 @@ import { wow335ShamanTidalWavesCriticalChanceBonusPercent, wow335ShamanTidalWavesProcChance, } from "./wow335ShamanTidalWavesRuntime"; +import { + WOW335_SHAMAN_ELEMENTAL_DEVASTATION_AURA_TAG, + wow335ShamanElementalDevastationProfileForRank, +} from "./wow335ShamanTalentRuntime"; +import { WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID } from "./wow335ShamanElementalWardingRuntime"; +import { + WOW335_SHAMAN_LIGHTNING_OVERLOAD_PROC_TAG, + WOW335_SHAMAN_LIGHTNING_OVERLOAD_TALENT_ID, + wow335ShamanLightningOverloadDamageAmount, + wow335ShamanLightningOverloadProfileForRank, + wow335ShamanLightningOverloadShouldProc, +} from "./wow335ShamanLightningOverloadRuntime"; +import { + WOW335_SHAMAN_FLURRY_TALENT_ID, + wow335ShamanFlurryApplyProc, + wow335ShamanFlurryConsumeSwingCharge, + wow335ShamanFlurryIsActive, + wow335ShamanFlurryShouldProc, +} from "./wow335ShamanFlurryRuntime"; import { WOW335_MAGE_ARCANE_CONCENTRATION_AURA, WOW335_MAGE_ARCANE_CONCENTRATION_TAG, @@ -425,10 +661,23 @@ import { WOW335_MAGE_IMPACT_AURA, WOW335_MAGE_IMPACT_TAG, } from "./wow335MageTalentRuntime"; +import { + WOW335_MAGE_NETHERWIND_PRESENCE_TALENT_ID, + wow335MageNetherwindPresenceAurasAfterCast, + wow335MageNetherwindPresenceHastePercent, +} from "./wow335MageNetherwindPresenceRuntime"; import { WOW335_MAGE_FROSTBITE_TALENT_ID, wow335MageFrostbiteProcDurationMs, } from "./wow335MageFrostbiteRuntime"; +import { wow335MageShatterCriticalChanceBonusPercent } from "./wow335MageShatterRuntime"; +import { + WOW335_MAGE_WINTERS_CHILL_AURA, + WOW335_MAGE_WINTERS_CHILL_TAG, + wow335MageWintersChillProfileForRank, + wow335MageWintersChillShouldProc, + wow335MageWintersChillTargetModifiers, +} from "./wow335MageWintersChillRuntime"; import { WOW335_MAGE_FLAME_THROWING_TALENT_ID, wow335MageFlameThrowingProfile, @@ -483,6 +732,37 @@ import { wow335WarriorBloodCrazeProfile, wow335WarriorSecondWindProfile, } from "./wow335WarriorTalentRuntime"; +import { + WOW335_WARRIOR_DAMAGE_SHIELD_ABILITY_ID, + WOW335_WARRIOR_DAMAGE_SHIELD_TALENT_ID, + wow335WarriorDamageShieldReflectDamage, +} from "./wow335WarriorDamageShieldRuntime"; +import { + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_ABILITY_ID, + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG, + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG, + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID, + WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG, + wow335WarriorImprovedVictoryRushCooldownAuraDefinition, + wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent, + wow335WarriorImprovedVictoryRushReadyAuraDefinition, + wow335WarriorImprovedVictoryRushShouldProc, + wow335WarriorImprovedVictoryRushThreatScale, + wow335WarriorVictoryRushKillAuraDefinition, +} from "./wow335WarriorVictoryRushRuntime"; +import { + WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID, + wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage, + wow335WarriorImprovedDefensiveStanceEnrageAuraDefinition, + wow335WarriorImprovedDefensiveStanceShouldProc, + wow335WarriorHasDefensiveStance, + type Wow335WarriorAvoidanceTrigger, +} from "./wow335WarriorImprovedDefensiveStanceRuntime"; +import { + WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID, + WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID, + wow335WarriorCriticalBlockDamage, +} from "./wow335WarriorCriticalBlockRuntime"; import { WOW335_WARRIOR_ANGER_MANAGEMENT_CHARGE_AURA_TAG, WOW335_WARRIOR_ANGER_MANAGEMENT_TALENT_ID, @@ -490,12 +770,19 @@ import { wow335WarriorChargeRageProfile, wow335WarriorChargeRank, } from "./wow335WarriorAngerManagementRuntime"; +import { + WOW335_WARRIOR_UNBRIDLED_WRATH_ABILITY_ID, + WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID, + wow335WarriorUnbridledWrathProfile, + wow335WarriorUnbridledWrathShouldProc, +} from "./wow335WarriorUnbridledWrathRuntime"; import { WOW335_SHAMAN_MAELSTROM_WEAPON_AURA_TAG, WOW335_SHAMAN_MAELSTROM_WEAPON_DEFAULT_SPEED_MS, WOW335_SHAMAN_MAELSTROM_WEAPON_ELIGIBLE_SPELLS, WOW335_SHAMAN_MAELSTROM_WEAPON_MAX_STACKS, wow335ShamanMaelstromWeaponCastTimeReductionPercent, + wow335ShamanMaelstromWeaponPvpDamageReductionPercent, wow335ShamanMaelstromWeaponProfile, } from "./wow335ShamanMaelstromWeaponRuntime"; import { @@ -566,6 +853,7 @@ import { /** Stable target id used by named player auras and HUD consumers. */ export const PLAYER_AURA_ENTITY_ID = PLAYER_AGGRO_ID; + const WEAKENED_SOUL_AURA: AuraDefinition = { id: "wow335:priest:weakened-soul", name: "Weakened Soul", disposition: "debuff", durationMs: 30_000, maxStacks: 1, stackBehavior: "refresh", dispelCategory: "magic", @@ -599,13 +887,16 @@ import { export type MinimapRotation = "north-up" | "player-up"; -export interface GameplaySettings { +export interface GameplaySettings extends GraphicsSettings { readonly showMobHealthBars: boolean; readonly showMobAggroRanges: boolean; readonly showTargetFrame: boolean; readonly showThreatMeter: boolean; readonly threatMeterPosition: NormalizedHudPosition; readonly showFloatingCombatText: boolean; + readonly showOwnDamageText: boolean; + readonly showAllyDamageText: boolean; + readonly showIncomingDamageText: boolean; readonly autoTargetNearest: boolean; readonly enableScreenShake: boolean; readonly masterVolume: number; @@ -616,12 +907,16 @@ export interface GameplaySettings { } export const DEFAULT_GAMEPLAY_SETTINGS: GameplaySettings = Object.freeze({ + ...DEFAULT_GRAPHICS_SETTINGS, showMobHealthBars: true, showMobAggroRanges: false, showTargetFrame: true, showThreatMeter: false, threatMeterPosition: DEFAULT_THREAT_METER_POSITION, showFloatingCombatText: true, + showOwnDamageText: true, + showAllyDamageText: false, + showIncomingDamageText: false, autoTargetNearest: true, enableScreenShake: true, masterVolume: 0, @@ -781,10 +1076,17 @@ export interface ActiveCast { readonly nextTickAt: number; /** Tidal Waves charges consumed at cast start, snapshotted for its crit rider. */ readonly tidalWavesChargesConsumed?: number; + /** Maelstrom Weapon's rank and stacks consumed at cast start, retained for its PvP damage rider. */ + readonly maelstromWeaponRank?: number; + readonly maelstromWeaponStacksConsumed?: number; + /** DBC-derived pre-discount base Mana cost retained for Illumination at cast completion. */ + readonly illuminationBaseManaCost?: number; /** Arcane Potency's next-spell critical chance, snapshotted when a cast starts. */ readonly arcanePotencyCriticalChanceBonusPercent?: number; /** Mana actually committed for this cast, used by Master of Elements refunds. */ readonly manaSpent?: number; + /** Holy Candle has already charged during this channel; do not charge later pulses. */ + readonly romPriestHolyCandleCharged?: boolean; } export interface TimedCombatEffect extends AbilityDamageResource { @@ -975,9 +1277,12 @@ interface PlayerDamageRollContext { readonly attackKind: WotlkAttackKind; readonly seed: string; readonly abilityId?: string; + /** Raw rank spell ID selected by the player/companion's build and level. */ + readonly dbcSpellId?: number; readonly periodic?: boolean; readonly rules?: CombatResultRules; readonly criticalChanceBonusPercent?: number; + readonly weaponSpeedMs?: number; } export interface CombatSummon { @@ -1005,6 +1310,21 @@ export interface CombatSummon { readonly cast: CombatActorState["cast"]; readonly controlledUntil: number; readonly schoolLockedUntil: CombatActorState["schoolLockedUntil"]; + readonly hunterPet?: Wow335HunterPetProfile; + readonly hunterPetSpecialReadyAt?: number; + readonly hunterPetFuriousHowlReadyAt?: number; + readonly hunterPetFocusUpdatedAt?: number; + readonly hunterPetCommand?: Wow335HunterPetCommand; + readonly hunterPetReactMode?: Wow335HunterPetReactMode; + readonly hunterPetCommandTargetId?: string | null; + readonly hunterPetStayPosition?: CombatPosition | null; + readonly hunterPetIsCommandAttack?: boolean; + readonly hunterPetIsCommandFollow?: boolean; + readonly hunterPetIsReturning?: boolean; + readonly hunterPetIsFollowing?: boolean; + readonly hunterPetGrowlAutocastEnabled?: boolean; + readonly hunterPetGrowlReadyAt?: number; + readonly hunterPetPendingOwnerAttackTargetId?: string | null; readonly exclusiveGroup?: string; } @@ -1081,6 +1401,10 @@ export interface CombatState { pendingGroundTarget: PendingGroundTarget | null; actors: Readonly>; combatEvents: readonly StructuredCombatEvent[]; + /** Last Holy Candle self-damage trigger per owner, shared by player and companion casts. */ + romPriestHolyCandleLastChargeAt: Readonly>; + /** Per-actor standing progress for the exact RoM Mage/Druid Green Guardian pair. */ + romMageDruidGreenGuardianStationaryProgress: Readonly>; feedback: CombatFeedback | null; /** Most recent discrete attack result, retained for proc and combat-log consumers. */ lastCombatResult: CombatResult | null; @@ -1157,15 +1481,21 @@ export interface CombatState { ) => void; tauntMob: (id: string, source: ThreatSource, durationMs: number, now?: number) => boolean; interruptMob: (id: string, sourceAbilityId: string, lockoutMs: number, now?: number) => boolean; - controlMob: (id: string, sourceAbilityId: string, status: MobStatusKind, durationMs: number, now?: number, breakOnDamage?: boolean, sourceActorId?: string) => boolean; + controlMob: (id: string, sourceAbilityId: string, status: MobStatusKind, durationMs: number, now?: number, breakOnDamage?: boolean, sourceActorId?: string, magnitude?: number) => boolean; dispelActor: (id: string, categories: readonly DispelCategory[], maxCount?: number, now?: number) => number; healActor: (id: string, amount: number, request: ActorHealingRequest) => HealingResolution; + /** Applies the CoA Holy Candle self-damage trigger to a companion or channel caster. */ + triggerRomPriestHolyCandle: (ownerActorId: string, healingAbilityId: string, now?: number) => number; reviveActor: (id: string, percentMaxHealth: number, sourceActorId: string, abilityId?: string, now?: number) => number; restoreActorResource: (id: string, resource: ResourceType, amount: number, percentage?: boolean, sourceActorId?: string, abilityId?: string, now?: number) => number; shieldActor: (id: string, amount: number, durationMs: number, sourceActorId: string, ability: AbilityDefinition, now?: number) => number; applyActorAura: (sourceActorId: string, targetActorId: string, ability: AbilityDefinition, effect: Extract, now?: number) => boolean; applyTimedActorEffect: (sourceActorId: string, targetActorId: string, ability: AbilityDefinition, effect: Extract, now?: number, criticalChanceBonusPercent?: number) => boolean; summonActor: (ownerActorId: string, ability: AbilityDefinition, effect: Extract, position: CombatPosition, targetId?: string | null, now?: number) => string | null; + commandHunterPet: (summonId: string, command: Wow335HunterPetCommand) => boolean; + setHunterPetReactMode: (summonId: string, reactMode: Wow335HunterPetReactMode) => boolean; + setHunterPetGrowlAutocast: (summonId: string, enabled: boolean) => boolean; + notifyOwnerHostileAction: (ownerActorId: string, targetId: string) => void; clickLightwell: (summonId: string, targetActorId?: string | null, now?: number) => number; createActorAreaEffect: (sourceActorId: string, ability: AbilityDefinition, position: CombatPosition, now?: number) => string | null; damagePlayer: (amount: number, school?: DamageSchool, attackerLevel?: number, now?: number) => number; @@ -1174,7 +1504,7 @@ export interface CombatState { revivePlayer: (percentMaxHealth?: number) => number; /** Checkpoint recovery of the player only; keeps the party and current pull intact. */ respawnPlayerOnly: (position: CombatPosition, now?: number) => boolean; - cancelCast: (message?: string) => boolean; + cancelCast: (message?: string, now?: number) => boolean; engageNearbyMobs: (now?: number, playerPosition?: CombatPosition) => number; advanceMobCombat: (now?: number, playerPosition?: CombatPosition) => number; resetMobForNavigation: (id: string, atHome: boolean, now?: number) => boolean; @@ -1211,6 +1541,7 @@ interface MutableCastWork { summons: CombatSummon[]; areaEffects: CombatAreaEffect[]; combatEvents: StructuredCombatEvent[]; + romPriestHolyCandleLastChargeAt?: Record; actors: Record; cooldowns: Record; health: number; @@ -1264,6 +1595,36 @@ function initialSummonCombatRuntime(): Pick { + return { + hunterPet: profile, + hunterPetSpecialReadyAt: now, + hunterPetFuriousHowlReadyAt: now, + hunterPetFocusUpdatedAt: now, + hunterPetCommand: WOW335_HUNTER_PET_DEFAULT_COMMAND, + hunterPetReactMode: WOW335_HUNTER_PET_DEFAULT_REACT_MODE, + hunterPetCommandTargetId: null, + hunterPetStayPosition: null, + hunterPetIsCommandAttack: false, + hunterPetIsCommandFollow: false, + hunterPetIsReturning: false, + hunterPetIsFollowing: true, + hunterPetGrowlAutocastEnabled: false, + hunterPetGrowlReadyAt: now, + hunterPetPendingOwnerAttackTargetId: null, + resources: { + focus: normalizeActorResourcePool("focus", 100, 100, 5, now), + }, + }; +} + function combatActorFromSummon( summon: CombatSummon, level: number, @@ -1430,6 +1791,41 @@ function clamp(value: number, min: number, max: number): number { return Math.max(min, Math.min(max, value)); } +function forwardMovementDestination( + origin: CombatPosition, + yaw: number, + distance: number, +): CombatPosition | null { + if (!Number.isFinite(yaw) || !Number.isFinite(distance) || distance <= 0) return null; + const requestedAt = (forwardDistance: number): CombatPosition => [ + origin[0] + Math.sin(yaw) * forwardDistance, + origin[1], + origin[2] + Math.cos(yaw) * forwardDistance, + ]; + const projectAt = (forwardDistance: number) => projectCombatGroundPoint( + requestedAt(forwardDistance), forwardDistance, origin, + ); + const fullDistancePoint = projectAt(distance); + if (fullDistancePoint && combatHasLineOfSight(origin, fullDistancePoint)) return fullDistancePoint; + + // A blocked endpoint means Blink travels only as far as the first obstacle. + // Project each sample onto ground while searching the visible segment. + let reachableDistance = 0; + let blockedDistance = distance; + let reachablePoint: CombatPosition | null = null; + for (let attempt = 0; attempt < 12; attempt += 1) { + const sampleDistance = (reachableDistance + blockedDistance) / 2; + const sample = projectAt(sampleDistance); + if (sample && combatHasLineOfSight(origin, sample)) { + reachableDistance = sampleDistance; + reachablePoint = sample; + } else { + blockedDistance = sampleDistance; + } + } + return reachablePoint; +} + const ROM_RAGE_CLASSES = new Set(["rom-warrior", "rom-champion"]); const RAGE_PER_AUTO_ATTACK = 6; const RAGE_PER_HIT_TAKEN = 7; @@ -1498,6 +1894,106 @@ function gainRomRage( }; } +function applyRomCoaExhaustionProcInWork( + work: MutableCastWork, + ability: AbilityDefinition, + attackLanded: boolean, + roll: number, + now: number, +): void { + if (ability.dbcSpellId !== ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID) return; + const learnedPassiveSpellIds = work.abilities.filter((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-warrior" + && candidate.secondaryClassId === "rom-rogue" + && candidate.dbcSpellId === ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID + && candidate.passive + && learnedAbilityForBuild(candidate, work.progression.level, work.talentRanks) !== null) + .map((candidate) => candidate.dbcSpellId); + const proc = romCoaWarriorRogueExhaustionProc({ + classId: work.classId, + secondaryClassId: work.secondaryClassId, + learnedPassiveSpellIds, + triggerSpellId: ability.dbcSpellId, + attackLanded, + roll, + }); + if (!proc.procced) return; + + const energyMaximum = work.maxResourcePools.energy ?? defaultResourceMaximum("energy"); + const energyBefore = work.resourcePools.energy ?? 0; + const energyAfter = Math.min(energyMaximum, energyBefore + proc.energy); + const energyRestored = energyAfter - energyBefore; + work.resourcePools.energy = energyAfter; + if (resourceProfileForClass(work.classId).type === "energy") work.resource = energyAfter; + recordCombatEventInWork(work, { + occurredAt: now, + kind: "resource", + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: PLAYER_AURA_ENTITY_ID, + abilityId: ability.id, + rawAmount: proc.energy, + effectiveAmount: energyRestored, + overheal: proc.energy - energyRestored, + absorbed: 0, + critical: false, + }); + + const rageBefore = work.resourcePools.rage ?? (resourceProfileForClass(work.classId).type === "rage" ? work.resource : 0); + const rage = gainRomRage( + work.classId, + work.secondaryClassId, + proc.rage, + work.resource, + work.maxResource, + work.resourcePools, + work.maxResourcePools, + ); + const rageAfter = rage.resourcePools.rage ?? rageBefore; + const rageRestored = rageAfter - rageBefore; + work.resource = rage.resource; + work.resourcePools = rage.resourcePools; + recordCombatEventInWork(work, { + occurredAt: now, + kind: "resource", + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: PLAYER_AURA_ENTITY_ID, + abilityId: ability.id, + rawAmount: proc.rage, + effectiveAmount: rageRestored, + overheal: proc.rage - rageRestored, + absorbed: 0, + critical: false, + }); +} + +function romPriestChampionRageControlAwardPatch( + state: CombatState, + cast: ActiveCast, + endedAt: number, +): Partial { + if (cast.mode !== "channel" || state.classId !== "rom-priest" + || state.secondaryClassId !== "rom-champion") return {}; + const hasRageControl = state.abilities.some((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-priest" + && candidate.secondaryClassId === "rom-champion" + && candidate.dbcSpellId === 498610 + && candidate.passive + && (candidate.sourceUnlockLevel ?? candidate.unlockLevel) <= state.level); + const durationMs = Math.max(0, Math.min(endedAt, cast.completesAt) - cast.startedAt); + const gain = romPriestChampionRageControlGain(hasRageControl, { kind: "channel", durationMs }); + if (gain <= 0) return {}; + const rage = gainRomRage( + state.classId, + state.secondaryClassId, + gain, + state.resource, + state.maxResource, + state.resourcePools, + state.maxResourcePools, + ); + return { resource: rage.resource, resourcePools: rage.resourcePools }; +} + function playerAutoAttackProfile( state: Pick, auras: readonly ActiveAura[] = [], @@ -1530,6 +2026,7 @@ function playerOffhandAutoAttackProfile( state: Pick, weapon: WeaponStats, auras: readonly ActiveAura[] = [], + offHandDamageBonusPercent = 0, ): { damage: number; intervalMs: number } { const stats = applyAuraStats(deriveCharacterStats( state.classId, @@ -1543,7 +2040,7 @@ function playerOffhandAutoAttackProfile( const fullWeaponDamage = (weapon.damageMin + weapon.damageMax) / 2 + stats.attackPower / 14 * speedSeconds; return { - damage: Math.max(1, Math.round(fullWeaponDamage * 0.5)), + damage: Math.max(1, Math.round(fullWeaponDamage * 0.5 * (1 + offHandDamageBonusPercent / 100))), intervalMs: Math.max(500, Math.round(hastedDuration(weapon.speedMs, stats.meleeHastePercent) / raceAffixHasteMultiplier())), }; @@ -1569,6 +2066,7 @@ function abilityTalentContext(ability: AbilityDefinition, periodic = false): Tal const searchable = `${ability.id} ${ability.name} ${ability.description} ${ability.icon}`.toLowerCase(); const tags = new Set(); tags.add(ability.castTimeMs > 0 ? "cast-time" : "instant"); + if (ability.castMode === "channel" || (ability.channelTickMs ?? 0) > 0) tags.add("channel"); if (periodic) tags.add("periodic"); if (ability.effects.some((effect) => effect.kind === "damage" || effect.kind === "finisher-damage" || effect.kind === "dot")) tags.add("damage"); if (ability.effects.some((effect) => effect.kind === "heal" || effect.kind === "hot" || effect.kind === "shield")) tags.add("healing"); @@ -1578,8 +2076,159 @@ function abilityTalentContext(ability: AbilityDefinition, periodic = false): Tal return { abilityName: ability.name, tags: [...tags] }; } +type RomCoaThreatState = Pick + & Partial>; + +function learnedRomCoaPassives( + classId: ClassId, + secondaryClassId: ClassId | null | undefined, + level: number, + talentRanks: Readonly>, +): number[] { + return abilitiesForCharacter(classId, secondaryClassId) + .filter((candidate) => candidate.source === "runewaker" && candidate.passive + && (candidate.classId === classId + ? (!candidate.secondaryClassId || candidate.secondaryClassId === secondaryClassId) + : candidate.classId === secondaryClassId && candidate.romSkillGroup === "general") + && learnedAbilityForBuild(candidate, level, talentRanks) !== null) + .map((candidate) => candidate.dbcSpellId); +} + +function romPriestScoutSaintsBlessingMultiplierForHit( + work: MutableCastWork, + fallbackClassId: ClassId, + sourceActorId: string, + mob: MobCombatState, + sourcePartyMember = usePartyStore.getState().members.find((member) => member.id === sourceActorId), +): number { + const primaryClassId = sourcePartyMember?.classId ?? fallbackClassId; + const secondaryClassId = sourcePartyMember?.secondaryClassId ?? work.secondaryClassId; + if (primaryClassId !== "rom-priest" || secondaryClassId !== "rom-scout") return 1; + const learnedPassiveSpellIds = learnedRomCoaPassives( + primaryClassId, + secondaryClassId, + sourcePartyMember?.level ?? work.progression.level, + sourcePartyMember?.talentRanks ?? work.talentRanks, + ); + return romPriestScoutSaintsBlessingDamageMultiplier({ + primaryClassId, + secondaryClassId, + learnedPassiveSpellIds, + targetHealthPercent: mob.maxHealth > 0 ? mob.health / mob.maxHealth : Number.NaN, + }); +} + +function activeLocalBlockingStance( + auras: readonly ActiveAura[], + actorId: string, + now: number, +): boolean { + return auras.some((aura) => aura.targetId === actorId + && aura.definition.id === ROM_LOCAL_ACTIVE_BLOCKING_STANCE_AURA_ID + && (aura.expiresAt === null || aura.expiresAt > now)); +} + +function romCoaThreatMultiplierForBuild(input: { + readonly ability: AbilityDefinition | null; + readonly classId: ClassId; + readonly secondaryClassId?: ClassId | null; + readonly level: number; + readonly talentRanks: Readonly>; + readonly auras: readonly ActiveAura[]; + readonly actorId: string; + readonly now: number; +}): number { + if (!input.ability || input.ability.source !== "runewaker") return 1; + const passives = learnedRomCoaPassives( + input.classId, input.secondaryClassId, input.level, input.talentRanks, + ); + return romCurrentCoaThreatFactors({ + ability: input.ability, + classId: input.classId as AbilityDefinition["classId"], + ...(input.secondaryClassId ? { secondaryClassId: input.secondaryClassId as AbilityDefinition["secondaryClassId"] } : {}), + learnedPassiveSpellIds: passives, + blockingStanceAuraActive: activeLocalBlockingStance(input.auras, input.actorId, input.now), + }).resolvedMultiplier; +} + +const ROM_COA_LEOPARD_INSTINCT_STACK_AURA_ID = "rom-coa-leopard-instinct-stacks-495402"; + +function romCoaIncomingDamageAfterPassives(input: { + readonly amount: number; + readonly classId: ClassId; + readonly secondaryClassId?: ClassId | null; + readonly level: number; + readonly talentRanks: Readonly>; + readonly auras: readonly ActiveAura[]; + readonly actorId: string; + readonly school: DamageSchool; + readonly now: number; +}): number { + const learnedPassiveSpellIds = learnedRomCoaPassives( + input.classId, input.secondaryClassId, input.level, input.talentRanks, + ); + const blockingStanceAuraActive = activeLocalBlockingStance(input.auras, input.actorId, input.now); + const blocking = romCurrentCoaBlockingStanceModifiers({ + classId: input.classId as AbilityDefinition["classId"], + ...(input.secondaryClassId ? { secondaryClassId: input.secondaryClassId as AbilityDefinition["secondaryClassId"] } : {}), + learnedPassiveSpellIds, + blockingStanceAuraActive, + }); + const resist = romCurrentCoaResistModifiers({ + classId: input.classId as AbilityDefinition["classId"], + ...(input.secondaryClassId ? { secondaryClassId: input.secondaryClassId as AbilityDefinition["secondaryClassId"] } : {}), + learnedPassiveSpellIds, + blockingStanceAuraActive, + }); + const afterBlockingStance = input.amount * (1 - blocking.receivedDamageReductionPercent / 100); + const afterResist = input.school === "physical" + ? afterBlockingStance * resist.physicalDamageTakenMultiplier + : afterBlockingStance; + return Math.max(0, Math.round(afterResist)); +} + +function updateRomLeopardInstinctStacks( + auras: readonly ActiveAura[], + actorId: string, + learnedPassive: boolean, + outcome: "dodge" | "hit" | "other", + now: number, +): readonly ActiveAura[] { + if (!learnedPassive || outcome === "other") return auras; + const existing = auras.find((aura) => aura.targetId === actorId + && aura.definition.id === ROM_COA_LEOPARD_INSTINCT_STACK_AURA_ID); + const current = createRomLeopardInstinctState(existing?.stacks ?? 0); + const next = outcome === "dodge" + ? romLeopardInstinctOnDodge(current) + : romLeopardInstinctOnHitReceived(current); + if (next.stacks === current.stacks) return auras; + const withoutExisting = auras.filter((aura) => aura !== existing); + if (next.stacks === 0) return withoutExisting; + const definition: AuraDefinition = { + id: ROM_COA_LEOPARD_INSTINCT_STACK_AURA_ID, + name: "Leopard Instinct", + description: "Current CoA passive stacks: +3 percentage points Dodge per stack. Its separate Magic Resistance Rate bonus has no runtime consumer.", + disposition: "buff", + durationMs: null, + maxStacks: 10, + stackBehavior: "replace", + modifiers: [{ kind: "stat", stat: "dodge", operation: "flat", value: 3, perStack: true }], + }; + return [...withoutExisting, { + instanceId: existing?.instanceId ?? `${ROM_COA_LEOPARD_INSTINCT_STACK_AURA_ID}:${actorId}`, + definition, + sourceId: actorId, + targetId: actorId, + appliedAt: existing?.appliedAt ?? now, + expiresAt: null, + stacks: next.stacks, + absorbs: [], + procStates: [], + }]; +} + function playerThreatSource( - state: Pick, + state: RomCoaThreatState, abilityId?: string, periodic = false, ): ThreatSource { @@ -1592,26 +2241,91 @@ function playerThreatSource( abilityTalentContext(ability, periodic), ) : 1; + const coaThreatScale = state.classId && state.level !== undefined && state.abilities && state.talentRanks && state.auras + ? romCoaThreatMultiplierForBuild({ + ability, + classId: state.classId, + secondaryClassId: state.secondaryClassId, + level: state.level, + talentRanks: state.talentRanks, + auras: state.auras, + actorId: PLAYER_AURA_ENTITY_ID, + now: combatNow(), + }) + : 1; return { actorId: PLAYER_AGGRO_ID, role: usePartyStore.getState().playerRole, ...(abilityId ? { abilityId } : {}), - threatScale, + threatScale: threatScale * coaThreatScale, }; } function threatSourceForActor( - state: Pick, + state: RomCoaThreatState, actorId: AggroActorId, abilityId?: string, periodic = false, ): ThreatSource { if (actorId === PLAYER_AGGRO_ID) return playerThreatSource(state, abilityId, periodic); const member = usePartyStore.getState().members.find((candidate) => candidate.id === actorId); + const ability = abilityId ? abilityById(abilityId) : null; + const coaThreatScale = member + ? romCoaThreatMultiplierForBuild({ + ability, + classId: member.classId, + secondaryClassId: member.secondaryClassId, + level: member.level, + talentRanks: member.talentRanks, + auras: useCombatStore.getState().auras, + actorId, + now: combatNow(), + }) + : 1; return { actorId, role: member?.role ?? "damage", ...(abilityId ? { abilityId } : {}), + threatScale: coaThreatScale, + }; +} + +function withCurrentCoaThreatFactor( + state: CombatState, + source: ThreatSource, + now: number, +): ThreatSource { + if (source.threatScale !== undefined) return source; + const ability = source.abilityId ? abilityById(source.abilityId) : null; + if (source.actorId === PLAYER_AGGRO_ID) { + return { + ...source, + threatScale: romCoaThreatMultiplierForBuild({ + ability, + classId: state.classId, + secondaryClassId: state.secondaryClassId, + level: state.level, + talentRanks: state.talentRanks, + auras: state.auras, + actorId: PLAYER_AURA_ENTITY_ID, + now, + }), + }; + } + const member = usePartyStore.getState().members.find((candidate) => candidate.id === source.actorId); + if (!member) return source; + return { + ...source, + threatScale: romCoaThreatMultiplierForBuild({ + ability, + classId: member.classId, + secondaryClassId: member.secondaryClassId, + level: member.level, + talentRanks: member.talentRanks, + auras: state.auras, + actorId: member.id, + now, + }), }; } @@ -1816,6 +2530,8 @@ export function equipmentAdjustedCombatAmount( gearStats: ItemStats, classId: ClassId, ability: AbilityDefinition, + holyBlessingSpellPowerBonus = 0, + intellectOverride?: number, ): number { const kind = typeof scaling !== "number" && "school" in scaling && scaling.school && scaling.school !== "physical" ? "spell" : abilityAttackKind(classId, ability); @@ -1824,7 +2540,7 @@ export function equipmentAdjustedCombatAmount( const weaponSpeed = weapon?.speedMs ? weapon.speedMs / 1_000 : kind === "melee" ? 2.4 : 2.8; const weaponDamage = weapon ? (weapon.damageMin + weapon.damageMax) / 2 : 0; const equipmentPower = kind === "spell" - ? attackPower + ? attackPower + Math.max(0, holyBlessingSpellPowerBonus) : attackPower / 14 * weaponSpeed + weaponDamage * 0.35; const sourceLevel = Math.max(1, typeof scaling === "number" ? level : scaling.sourceLevel ?? level); const scalingLevel = Math.min(level, typeof scaling === "number" ? level : scaling.maxScalingLevel || level); @@ -1837,13 +2553,27 @@ export function equipmentAdjustedCombatAmount( Math.round(coefficient * (playerCombatPower(level) + equipmentPower)), ); } + const attributes = scaling.attackPowerCoefficient || scaling.rangedAttackPowerCoefficient + || scaling.intellectCoefficient + || scaling.spiritCoefficient || scaling.staminaCoefficient + ? deriveCharacterStats(classId, level, gearStats) : null; + const mainHand = gearStats.meleeWeapon; + const mainHandDps = mainHand && mainHand.speedMs > 0 + ? ((mainHand.damageMin + mainHand.damageMax) / 2) / (mainHand.speedMs / 1_000) + : 0; + const scriptedPower = (attributes?.attackPower ?? 0) * (scaling.attackPowerCoefficient ?? 0) + + (attributes?.rangedAttackPower ?? 0) * (scaling.rangedAttackPowerCoefficient ?? 0) + + (intellectOverride ?? attributes?.intellect ?? 0) * (scaling.intellectCoefficient ?? 0) + + (attributes?.spirit ?? 0) * (scaling.spiritCoefficient ?? 0) + + (attributes?.stamina ?? 0) * (scaling.staminaCoefficient ?? 0) + + mainHandDps * (scaling.weaponDpsCoefficient ?? 0); if (scaling.basePoints === undefined) { // Preserve the historical coefficient-only result when no explicit // bonusPowerCoefficient is supplied. Mage Empowered Fire sets that field // to carry a spell-power-only increase without changing base damage. const gearCoefficient = scaling.bonusPowerCoefficient ?? coefficient; return Math.max(0, Math.round( - coefficient * playerCombatPower(level) + gearCoefficient * equipmentPower, + coefficient * playerCombatPower(level) + gearCoefficient * equipmentPower + scriptedPower, )); } const levelGrowth = Math.max(0, scalingLevel - sourceLevel) * Math.max(0, scaling.pointsPerLevel ?? 0); @@ -1860,11 +2590,6 @@ export function equipmentAdjustedCombatAmount( 0, scaling.bonusPowerCoefficient ?? coefficient, ); - const attributes = scaling.attackPowerCoefficient || scaling.rangedAttackPowerCoefficient || scaling.spiritCoefficient - ? deriveCharacterStats(classId, level, gearStats) : null; - const scriptedPower = (attributes?.attackPower ?? 0) * (scaling.attackPowerCoefficient ?? 0) - + (attributes?.rangedAttackPower ?? 0) * (scaling.rangedAttackPowerCoefficient ?? 0) - + (attributes?.spirit ?? 0) * (scaling.spiritCoefficient ?? 0); return Math.max(0, Math.round(averageRoll * earlyLevelScale + bonusPower + scriptedPower)); } @@ -1979,6 +2704,7 @@ function resolvePlayerDamageResult( classId: ClassId, work: MutableCastWork, sourceActorId: string, + now: number, mob: MobCombatState, amount: number, attackKind: WotlkAttackKind, @@ -1988,8 +2714,18 @@ function resolvePlayerDamageResult( periodic = false, rules: CombatResultRules = {}, criticalChanceBonusPercent = 0, + armorPenetrationBonusPercent = 0, ): CombatResult { const sourceMember = usePartyStore.getState().members.find((member) => member.id === sourceActorId); + const sourceAuras = aurasForEntity(work.auras, sourceActorId); + const predatoryInstinctsRank = sourceMember?.classId === "druid" + ? sourceMember.talentRanks[WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID] ?? 0 + : !sourceMember && classId === "druid" && sourceActorId === PLAYER_AGGRO_ID + ? work.talentRanks[WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID] ?? 0 + : 0; + const predatoryInstinctsForm = predatoryInstinctsRank > 0 + ? wow335DruidShapeshiftFormForAuras(work.auras, sourceActorId, now) + : null; const baseStats = sourceMember ? deriveCharacterStats(sourceMember.classId, sourceMember.level, sourceMember.gearStats, sourceMember.raceId) : playerCharacterStats( @@ -2000,13 +2736,13 @@ function resolvePlayerDamageResult( work.secondaryClassId, work.talentModifiers, ); - const stats = applyAuraStats(baseStats, aurasForEntity(work.auras, sourceActorId)); + const stats = applyAuraStats(baseStats, sourceAuras); const baseAttacker = combatAttackerFromCharacterStats(stats, attackKind); const dayOfRainMissChance = romRogueMageDayOfRainBaseMissPercent( classId, work.secondaryClassId, ability?.dbcSpellId, - aurasForEntity(work.auras, sourceActorId).flatMap((aura) => aura.definition.utilityTags ?? []), + sourceAuras.flatMap((aura) => aura.definition.utilityTags ?? []), baseAttacker.hitPercent ?? 0, ); const resolvedRules = dayOfRainMissChance === null @@ -2015,11 +2751,11 @@ function resolvePlayerDamageResult( const deathchillAbilities = ["Icy Touch", "Howling Blast", "Frost Strike", "Obliterate"]; const deathchillEligible = classId === "death-knight" && Boolean(ability) && deathchillAbilities.includes(ability!.name); - const nextCritical = !periodic && Boolean(ability && aurasForEntity(work.auras, sourceActorId).some((aura) => ( + const nextCritical = !periodic && Boolean(ability && sourceAuras.some((aura) => ( aura.definition.utilityTags?.includes("next-offensive-critical") && (!aura.definition.utilityTags.includes("wow335-deathchill-next-critical") || deathchillEligible) ))); - const premeditation = nextCritical && aurasForEntity(work.auras, sourceActorId).some((aura) => ( + const premeditation = nextCritical && sourceAuras.some((aura) => ( aura.definition.utilityTags?.includes("rom-premeditation") )); const criticalChanceFromTalents = sourceMember ? 0 : ability @@ -2030,6 +2766,22 @@ function resolvePlayerDamageResult( abilityTalentContext(ability, periodic), ) : applyTalentModifierValue(0, work.talentModifiers, "critical-chance-percent"); + const partyMageWintersChillPassiveCriticalBonus = sourceMember?.classId === "mage" && ability + ? wow335MageWintersChillProfileForRank( + mageTalentRank(sourceMember.talentRanks, "Winter's Chill", 3), + ).casterCriticalChanceBonusPercent + : 0; + const improvedVictoryRushRank = sourceMember?.classId === "warrior" + ? sourceMember.talentRanks[WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID] ?? 0 + : !sourceMember && classId === "warrior" + ? work.talentRanks[WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID] ?? 0 + : 0; + const improvedVictoryRushCriticalBonus = ability + ? wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent( + improvedVictoryRushRank, + ability.name, + ) + : 0; // Elemental Oath's owner and party clauses describe the same rank bonus. // This shared spell-only hook covers the Shaman and party spell casters // exactly once without affecting melee/ranged attacks. @@ -2038,6 +2790,30 @@ function resolvePlayerDamageResult( const elementalOathBonus = isPlayerOrPartySource ? shamanElementalOathCriticalChancePercent(classId, work.talentRanks, attackKind) : 0; + const spreadingPainActive = sourceMember?.classId === "rom-warlock" + && sourceMember.secondaryClassId === "rom-priest" + ? sourceAuras.some((aura) => ( + aura.definition.utilityTags?.includes(ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + )) + : !sourceMember && classId === "rom-warlock" && work.secondaryClassId === "rom-priest" + ? sourceAuras.some((aura) => ( + aura.definition.utilityTags?.includes(ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + )) + : false; + // The Scout/Priest pair gate belongs to applying the aura. Every modeled + // party member receiving that aura benefits from its critical-damage bonus. + const drumsOfWarActive = sourceAuras.some((aura) => ( + aura.definition.utilityTags?.includes(ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + )); + const baseCriticalDamageMultiplier = wow335DruidPredatoryInstinctsCriticalDamageMultiplier(sourceMember ? 2 : applyTalentModifierValue( + 2, + work.talentModifiers, + "critical-damage-percent", + ability ? abilityTalentContext(ability, periodic) : {}, + ), predatoryInstinctsRank, predatoryInstinctsForm) * (premeditation ? 1.4 : 1); const deathGraspRank = classId === "warlock" && sourceActorId === PLAYER_AGGRO_ID ? warlockTalentRank(work.talentRanks, "Death's Grasp", 3) : 0; @@ -2048,15 +2824,18 @@ function resolvePlayerDamageResult( }); const attacker: CombatAttackerStats = { ...baseAttacker, + armorPenetrationPercent: (baseAttacker.armorPenetrationPercent ?? 0) + armorPenetrationBonusPercent, hitPercent: (baseAttacker.hitPercent ?? 0) + warlockSpellHitBonus, criticalChancePercent: (baseAttacker.criticalChancePercent ?? 0) + criticalChanceFromTalents - + elementalOathBonus + criticalChanceBonusPercent + (nextCritical ? 100 : 0), - criticalDamageMultiplier: (sourceMember ? 2 : applyTalentModifierValue( - 2, - work.talentModifiers, - "critical-damage-percent", - ability ? abilityTalentContext(ability, periodic) : {}, - )) * (premeditation ? 1.4 : 1), + + partyMageWintersChillPassiveCriticalBonus + elementalOathBonus + criticalChanceBonusPercent + improvedVictoryRushCriticalBonus + + (nextCritical ? 100 : 0), + criticalDamageMultiplier: romScoutPriestDrumsOfWarCriticalMultiplier( + baseCriticalDamageMultiplier, + drumsOfWarActive, + spreadingPainActive && attackKind === "spell" && school !== "physical" + ? ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_DAMAGE_BONUS + : 0, + ), }; const immune = mob.schoolImmunities.includes(school); return resolveCombatResult({ @@ -2585,6 +3364,21 @@ function talentAdjustedIncomingDamage( )); } +function druidPredatoryInstinctsIncomingMultiplier( + classId: ClassId, + talentRanks: TalentRanks, + auras: readonly ActiveAura[], + actorId: string, + attack: EnemyAttackDefinition, + now: number, +): number { + if (classId !== "druid") return 1; + const rank = talentRanks[WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID] ?? 0; + if (rank <= 0) return 1; + const form = wow335DruidShapeshiftFormForAuras(auras, actorId, now); + return wow335DruidPredatoryInstinctsAreaDamageMultiplier(rank, form, attack.delivery === "area"); +} + function applyDruidFeralInstinctCooldownReductionInWork( work: MutableCastWork, ability: AbilityDefinition, @@ -2621,6 +3415,7 @@ function normalizedSettings( patch: Partial, ): GameplaySettings { return { + ...normalizeGraphicsSettings(current, patch), showMobHealthBars: patch.showMobHealthBars ?? current.showMobHealthBars, showMobAggroRanges: patch.showMobAggroRanges ?? current.showMobAggroRanges, showTargetFrame: patch.showTargetFrame ?? current.showTargetFrame, @@ -2629,6 +3424,9 @@ function normalizedSettings( patch.threatMeterPosition ?? current.threatMeterPosition, ), showFloatingCombatText: patch.showFloatingCombatText ?? current.showFloatingCombatText, + showOwnDamageText: patch.showOwnDamageText ?? current.showOwnDamageText, + showAllyDamageText: patch.showAllyDamageText ?? current.showAllyDamageText, + showIncomingDamageText: patch.showIncomingDamageText ?? current.showIncomingDamageText, autoTargetNearest: patch.autoTargetNearest ?? current.autoTargetNearest, enableScreenShake: patch.enableScreenShake ?? current.enableScreenShake, masterVolume: clamp(Number.isFinite(patch.masterVolume) ? patch.masterVolume! : current.masterVolume, 0, 1), @@ -2655,13 +3453,20 @@ function gameplaySettingsEqual(left: GameplaySettings, right: GameplaySettings): && left.threatMeterPosition.x === right.threatMeterPosition.x && left.threatMeterPosition.y === right.threatMeterPosition.y && left.showFloatingCombatText === right.showFloatingCombatText + && left.showOwnDamageText === right.showOwnDamageText + && left.showAllyDamageText === right.showAllyDamageText + && left.showIncomingDamageText === right.showIncomingDamageText && left.autoTargetNearest === right.autoTargetNearest && left.enableScreenShake === right.enableScreenShake && left.masterVolume === right.masterVolume && left.uiScale === right.uiScale && left.minimapRotation === right.minimapRotation && left.gameplayFrameRate === right.gameplayFrameRate - && left.previewFrameRate === right.previewFrameRate; + && left.previewFrameRate === right.previewFrameRate + && left.renderScale === right.renderScale + && left.textureFiltering === right.textureFiltering + && left.shadowQuality === right.shadowQuality + && left.ambientFill === right.ambientFill; } function defaultMobStats( @@ -2768,23 +3573,55 @@ function applyWrathCastPushback( cast: ActiveCast | null, now: number, seed: string, + pushbackReduction = 0, ): ActiveCast | null { if (!cast || cast.pushbackHits >= 2) return cast; const ability = abilityById(cast.abilityId); const resistance = ability ? abilityPushbackResistance(ability) : 0; if (resistance >= 1 || stableCombatUnit(`${seed}:pushback`) < resistance) return cast; + const remainingPenalty = 1 - clamp(pushbackReduction, 0, 1); const pushbackHits = cast.pushbackHits + 1; if (cast.mode === "channel") { - const lostTicks = Math.max(1, Math.ceil(cast.totalTicks * 0.25)); + const lostTicks = Math.max(1, Math.ceil(cast.totalTicks * 0.25 * remainingPenalty)); const totalTicks = Math.max(cast.ticksCompleted, cast.totalTicks - lostTicks); return { ...cast, pushbackHits, totalTicks, - completesAt: Math.max(now, cast.completesAt - cast.originalDurationMs * 0.25), + completesAt: Math.max(now, cast.completesAt - cast.originalDurationMs * 0.25 * remainingPenalty), }; } - return { ...cast, pushbackHits, completesAt: cast.completesAt + 500 }; + return { ...cast, pushbackHits, completesAt: cast.completesAt + Math.round(500 * remainingPenalty) }; +} + +function paladinConcentrationAuraPushbackReductionForTarget( + auras: readonly ActiveAura[], + targetId: string, + now: number, + playerClassId: ClassId, + playerTalentRanks: TalentRanks, + partyMembers: readonly { readonly id: string; readonly classId: ClassId; readonly talentRanks: TalentRanks }[], +): number { + let strongestReduction = 0; + for (const aura of auras) { + if (aura.targetId !== targetId + || aura.definition.id !== WOW335_PALADIN_CONCENTRATION_AURA_EFFECT_ID + || aura.definition.exclusiveGroup !== "paladin:aura" + || (aura.expiresAt !== null && aura.expiresAt <= now)) continue; + + const source = aura.sourceId === PLAYER_AURA_ENTITY_ID + ? playerClassId === "paladin" ? { classId: playerClassId, talentRanks: playerTalentRanks } : null + : partyMembers.find((member) => member.id === aura.sourceId && member.classId === "paladin"); + if (!source || source.classId !== "paladin") continue; + strongestReduction = Math.max( + strongestReduction, + wow335PaladinConcentrationAuraPushbackReduction( + true, + source.talentRanks[WOW335_PALADIN_IMPROVED_CONCENTRATION_AURA_TALENT_ID] ?? 0, + ), + ); + } + return strongestReduction; } export function deterministicEnemyCooldown( @@ -2931,8 +3768,8 @@ function currentOrigin(state: CombatState, origin?: CombatPosition): CombatPosit return origin ?? state.playerPosition; } -function aurasForEntity(auras: readonly ActiveAura[], entityId: string): ActiveAura[] { - return wow335PaladinAuraMasteryAurasForEntity(auras, entityId); +function aurasForEntity(auras: readonly ActiveAura[], entityId: string, now?: number): ActiveAura[] { + return wow335PaladinAuraMasteryAurasForEntity(auras, entityId, now); } function hasControlImmunity( @@ -3068,8 +3905,8 @@ function auraDefinitionForAbility( ): AuraDefinition { const defaultPartyBuffFamily = DEFAULT_PARTY_BUFF_FAMILY.get(ability.name.toLowerCase()); // Focus Magic's ally aura reacts to that ally's spell criticals, then grants - // the Mage its separate 10-second critical-strike buff. The generated spell - // row (54646) supplies +3% to the ally; the talent-node prose says +1%. + // the Mage its separate 10-second critical-strike buff. The current talent + // row supplies +1% to the ally; the proc remains +3% for 10 seconds. const focusMagicProc = ability.name === "Focus Magic" ? [{ id: "wow335-mage-focus-magic-proc", @@ -3092,9 +3929,37 @@ function auraDefinitionForAbility( }; } +function improvedEarthShieldAuraDefinition( + definition: AuraDefinition, + ability: AbilityDefinition, + talentRank: number, +): AuraDefinition { + if (ability.classId !== "shaman" || ability.name !== "Earth Shield") return definition; + // Earth Shield's generated DBC spell has two aura effects. Aura 4 owns the + // heal proc, while Aura 149 is the final aura in the shared exclusive group. + // Merge the proc onto the final aura so the second effect does not replace + // the mechanics attached to the first one. + const earthShieldProcs = ability.effects + .filter((effect): effect is Extract => effect.kind === "apply-aura") + .flatMap((effect) => effect.aura.procs ?? []) + .filter((proc) => proc.id.endsWith(":earth-shield")); + const procsById = new Map((definition.procs ?? []).map((proc) => [proc.id, proc] as const)); + for (const proc of earthShieldProcs) procsById.set(proc.id, proc); + return { + ...definition, + procs: [...procsById.values()].map((proc) => proc.id.endsWith(":earth-shield") + ? { ...proc, charges: wow335ShamanImprovedEarthShieldProcCharges(proc.charges ?? 0, talentRank) } + : proc), + }; +} + function applyAuraStats(base: CharacterStats, auras: readonly ActiveAura[]): CharacterStats { + const holyBlessing = romPriestHolyBlessingStats(base, auras); + const statAuras = holyBlessing.active + ? auras.filter((aura) => !aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_BLESSING_TAG)) + : auras; const stat = (value: number, ...names: string[]) => names.reduce( - (current, name) => resolveAuraStatValue(current, auras, name), + (current, name) => resolveAuraStatValue(current, statAuras, name), value, ); const primary = (value: number, name: string, alias?: string) => stat( @@ -3112,21 +3977,22 @@ function applyAuraStats(base: CharacterStats, auras: readonly ActiveAura[]): Cha "magical-defense", ); const stamina = primary(base.stamina, "stamina"); - const spirit = primary(base.spirit, "spirit", "wisdom"); - const spiritCritRating = spirit * resolveAuraStatValue(0, auras, "spirit-to-spell-crit-rating"); + const spirit = holyBlessing.wisdom; + const intellect = primary(base.intellect, "intellect"); + const spiritCritRating = spirit * resolveAuraStatValue(0, statAuras, "spirit-to-spell-crit-rating"); const staminaHealth = healthFromTotalStamina(stamina) - healthFromTotalStamina(base.stamina); return { ...base, strength: primary(base.strength, "strength"), agility: primary(base.agility, "agility", "dexterity"), stamina, - intellect: primary(base.intellect, "intellect"), + intellect, spirit, health: stat(base.health + staminaHealth, "maximum-health"), mana: stat(base.mana, "maximum-mana"), attackPower: stat(base.attackPower, "attack-power", "physical-attack"), rangedAttackPower: stat(base.rangedAttackPower, "ranged-attack-power", "physical-attack"), - spellPower: stat(base.spellPower, "spell-power", "magical-attack"), + spellPower: stat(base.spellPower + holyBlessing.spellPowerBonus, "spell-power", "magical-attack"), armor: stat(base.armor, "armor", "physical-defense"), blockValue: stat(base.blockValue, "block-value"), meleeCritPercent: stat(base.meleeCritPercent, "critical-strike", "physical-critical-strike"), @@ -3154,6 +4020,128 @@ function applyAuraStats(base: CharacterStats, auras: readonly ActiveAura[]): Cha }; } +function hunterPetIncomingDefender( + state: CombatState, + summon: CombatSummon, + now: number, +): CombatDefenderStats | null { + const profile = summon.hunterPet; + if (!profile) return null; + + const ownerAuras = aurasForEntity( + state.auras, + summon.ownerActorId === PLAYER_AGGRO_ID ? PLAYER_AURA_ENTITY_ID : summon.ownerActorId, + now, + ); + let ownerStats: CharacterStats | null = null; + if (summon.ownerActorId === PLAYER_AGGRO_ID && state.classId === "hunter") { + ownerStats = applyAuraStats(playerCharacterStats( + state.classId, + state.level, + state.gearStats, + state.raceId, + state.secondaryClassId, + state.talentModifiers, + ), ownerAuras); + } else { + const ownerMember = usePartyStore.getState().members.find((member) => ( + member.id === summon.ownerActorId && member.classId === "hunter" + )); + if (ownerMember) { + ownerStats = applyAuraStats(playerCharacterStats( + ownerMember.classId, + ownerMember.level, + ownerMember.gearStats, + ownerMember.raceId, + ownerMember.secondaryClassId ?? null, + talentModifiersForRanks(ownerMember.talentRanks, ownerMember.classId), + ), ownerAuras); + } + } + + const ownerResistances: Wow335HunterPetOwnerResistances = { + // The source iterates all non-physical schools, including Holy. This game + // model has no native Holy resistance field, so keep that value at zero. + holy: 0, + arcane: ownerStats?.arcaneResistance ?? 0, + fire: ownerStats?.fireResistance ?? 0, + nature: ownerStats?.natureResistance ?? 0, + frost: ownerStats?.frostResistance ?? 0, + shadow: ownerStats?.shadowResistance ?? 0, + }; + const inherited = wow335HunterPetInheritedDefenses(ownerStats?.armor ?? 0, ownerResistances); + const baseline = wow335HunterPetBaseDefenseForLevel(profile.baseStats.level); + const petAuras = aurasForEntity(state.auras, summon.id, now); + const resolveAliases = (value: number, aliases: readonly string[]): number => aliases.reduce( + (current, alias) => resolveAuraStatValue(current, petAuras, alias), + value, + ); + const petAgility = resolveAliases(baseline.agility, [ + "agility", + "dexterity", + "all-primary", + "all-primary-attributes", + ]); + const composedArmor = wow335HunterPetArmorForProfile({ + petBaseArmor: baseline.armor, + petAgility, + ownerArmor: ownerStats?.armor ?? 0, + }); + const armor = Math.max(0, resolveAliases(composedArmor, ["armor", "physical-defense"])); + const resistance = (school: keyof Wow335HunterPetOwnerResistances): number => Math.max(0, + resolveAliases(inherited.resistances[school], [ + `resistance:${school}`, + "resistance:all", + "all-resistance", + "magical-defense", + ]), + ); + + return { + level: profile.baseStats.level, + armor, + resistances: { + holy: 0, + arcane: resistance("arcane"), + fire: resistance("fire"), + nature: resistance("nature"), + frost: resistance("frost"), + shadow: resistance("shadow"), + }, + }; +} + +function paladinAuraSourceSpellPower( + sourceActorId: string, + player: Pick, + auras: readonly ActiveAura[], + now: number, +): number { + if (sourceActorId === PLAYER_AURA_ENTITY_ID) { + const base = playerCharacterStats( + player.classId, + player.level, + player.gearStats, + player.raceId, + player.secondaryClassId, + player.talentModifiers, + ); + return applyAuraStats(base, aurasForEntity(auras, sourceActorId, now)).spellPower; + } + + const member = usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId); + if (!member) return 0; + const base = playerCharacterStats( + member.classId, + member.level, + member.gearStats, + member.raceId, + member.secondaryClassId ?? null, + talentModifiersForRanks(member.talentRanks, member.classId), + ); + return applyAuraStats(base, aurasForEntity(auras, sourceActorId, now)).spellPower; +} + function consumeInnerFireCharges( auras: readonly ActiveAura[], targetId: string, landed: boolean, attackKind: WotlkAttackKind, ): ActiveAura[] { @@ -3202,6 +4190,8 @@ const DEFAULT_PARTY_BUFF_FAMILY = Object.freeze(new Map([ ["gift of the wild", "mark-of-the-wild"], ])); +const WOW335_HUNTER_GO_FOR_THE_THROAT_ICD_TAG = "wow335-hunter-go-for-the-throat-icd"; + function defaultPartyBuffPotency( effects: readonly Extract[], ): number { @@ -3229,11 +4219,13 @@ function activeWardenNatureCrystal(summons: readonly CombatSummon[], now: number function activeWardenDamageTransferPet( summons: readonly CombatSummon[], + ownerActorId: AggroActorId, now: number, - ownerPosition: CombatPosition, + ownerPosition: CombatPosition | null, ): CombatSummon | null { + if (!ownerPosition) return null; return summons.find((summon) => [102297, 102324, 102325].includes(summon.creatureId) - && summon.ownerActorId === PLAYER_AGGRO_ID + && summon.ownerActorId === ownerActorId && summon.health > 0 && summon.expiresAt > now && Math.hypot( @@ -3744,22 +4736,93 @@ function executeTriggeredAuraProcsInWork( : action.target === "aura-target" ? triggered.targetId : triggered.event.otherId ?? null; + const sourceShamanRanks = shamanTalentRanksForActor(work, triggered.sourceId); + const improvedShieldsRank = sourceShamanRanks + ? shamanTalentRankFromRanks(sourceShamanRanks, "Improved Shields", 3) + : 0; + const improvedEarthShieldRank = sourceShamanRanks + ? shamanTalentRankFromRanks(sourceShamanRanks, "Improved Earth Shield", 3) + : 0; + const isShamanLightningShieldProc = action.kind === "damage" + && triggered.procId.endsWith(":lightning-shield") + && sourceShamanRanks !== null; + const isShamanEarthShieldProc = action.kind === "heal" + && triggered.procId.endsWith(":earth-shield") + && sourceShamanRanks !== null; + const procAmount = isShamanLightningShieldProc && action.kind === "damage" + ? wow335ShamanImprovedShieldOrbAmount( + action.amount, + "lightning-shield", + improvedShieldsRank, + Boolean(actionTarget && work.mobs[actionTarget]?.characterDefender), + ) + : isShamanEarthShieldProc && action.kind === "heal" + ? wow335ShamanImprovedEarthShieldHealingAmount( + action.amount, + improvedEarthShieldRank, + improvedShieldsRank, + ) + : action.kind === "damage" || action.kind === "heal" + ? action.amount + : 0; if (action.kind === "resource" && actionTarget === PLAYER_AURA_ENTITY_ID) { const resource = action.resource as ResourceType; const maximum = work.maxResourcePools[resource] ?? defaultResourceMaximum(resource); work.resourcePools[resource] = clamp((work.resourcePools[resource] ?? 0) + action.amount, 0, maximum); } else if (action.kind === "heal" && actionTarget === PLAYER_AURA_ENTITY_ID) { - work.totalHealing += healPlayerInWork(work, action.amount); + const healed = healPlayerInWork(work, procAmount); + work.totalHealing += healed; + if (isShamanEarthShieldProc) { + recordCombatEventInWork(work, { + occurredAt: now, + kind: "healing", + sourceActorId: triggered.sourceId, + targetActorId: actionTarget, + abilityId: triggered.procId, + school: "nature", + rawAmount: procAmount, + effectiveAmount: healed, + overheal: Math.max(0, procAmount - healed), + absorbed: 0, + critical: false, + outcome: healed > 0 ? "hit" : "overheal", + }); + maybeGrantShamanEarthShieldTidalWavesInWork(work, triggered.sourceId, now); + } } else if (action.kind === "heal" && actionTarget && !work.mobs[actionTarget]) { - work.totalHealing += healCompanionActorInWork(work, actionTarget, Math.max(0, action.amount)); + const healed = healCompanionActorInWork(work, actionTarget, Math.max(0, procAmount)); + work.totalHealing += healed; + if (isShamanEarthShieldProc) { + recordCombatEventInWork(work, { + occurredAt: now, + kind: "healing", + sourceActorId: triggered.sourceId, + targetActorId: actionTarget, + abilityId: triggered.procId, + school: "nature", + rawAmount: procAmount, + effectiveAmount: healed, + overheal: Math.max(0, procAmount - healed), + absorbed: 0, + critical: false, + outcome: healed > 0 ? "hit" : "overheal", + }); + maybeGrantShamanEarthShieldTidalWavesInWork(work, triggered.sourceId, now); + } } else if (action.kind === "damage" && actionTarget && work.mobs[actionTarget]) { + const triggeredAura = work.auras.find((aura) => aura.instanceId === triggered.auraInstanceId); + const damageSource = isShamanLightningShieldProc + ? threatSourceForActor({ talentModifiers: work.talentModifiers }, triggered.sourceId, triggered.procId, true) + : triggeredAura && isWow335PaladinRetributionAuraDamageShield(triggeredAura) + ? threatSourceForActor({ talentModifiers: work.talentModifiers }, triggered.sourceId, triggered.procId, true) + : playerThreatSource({ talentModifiers: work.talentModifiers }, triggered.procId, true); damageMobInWork( work.classId, work, actionTarget, - Math.max(0, action.amount), + Math.max(0, procAmount), now, - playerThreatSource({ talentModifiers: work.talentModifiers }, triggered.procId, true), + damageSource, action.school, ); } else if (action.kind === "apply-aura" && actionTarget) { @@ -3924,13 +4987,27 @@ function evaluateProcsInWork( work: MutableCastWork, event: ProcEvent, now: number, + retributionAuraSourceSpellPower?: (sourceId: string) => number, ): readonly TriggeredAuraProc[] { const root = work.triggeredProcKeys === undefined; const triggeredKeys = work.triggeredProcKeys ?? new Set(); work.triggeredProcKeys = triggeredKeys; try { + const originalAuras = new Map(work.auras.map((aura) => [aura.instanceId, aura] as const)); + const procSourceAuras = retributionAuraSourceSpellPower + ? work.auras.map((aura) => aura.targetId === event.subjectId + && isWow335PaladinRetributionAuraDamageShield(aura) + ? wow335PaladinRetributionAuraWithSpellPower( + aura, + retributionAuraSourceSpellPower(aura.sourceId), + ) + : aura) + : work.auras; + const auraOverrides = new Map(aurasForEntity(procSourceAuras, event.subjectId, now) + .map((aura) => [aura.instanceId, aura] as const)); + const procInputAuras = work.auras.map((aura) => auraOverrides.get(aura.instanceId) ?? aura); const result = evaluateAuraProcs( - work.auras, + procInputAuras, event, now, ({ aura, proc }) => triggeredKeys.has(`${aura.instanceId}:${proc.id}`) @@ -3942,7 +5019,10 @@ function evaluateProcsInWork( // A proc can activate once for the originating event. Its damage must not // reactivate it through a different branch of the same triggered chain. for (const proc of result.triggered) triggeredKeys.add(`${proc.auraInstanceId}:${proc.procId}`); - work.auras = [...result.auras]; + work.auras = result.auras.map((aura) => { + const original = originalAuras.get(aura.instanceId); + return original ? { ...original, procStates: aura.procStates } : aura; + }); executeTriggeredAuraProcsInWork(work, result.triggered, now); return result.triggered; } finally { @@ -3956,6 +5036,39 @@ function isPrayerOfMendingAura(aura: ActiveAura): boolean { )) ?? false; } +function evaluatePartyRetributionAuraInWork( + auras: readonly ActiveAura[], + event: ProcEvent, + now: number, + sourceSpellPower: (sourceId: string) => number, +): { readonly auras: ActiveAura[]; readonly triggered: readonly TriggeredAuraProc[] } { + const procSourceAuras = auras.map((aura) => aura.targetId === event.subjectId + && isWow335PaladinRetributionAuraDamageShield(aura) + ? wow335PaladinRetributionAuraWithSpellPower(aura, sourceSpellPower(aura.sourceId)) + : aura); + const auraOverrides = new Map(aurasForEntity(procSourceAuras, event.subjectId, now) + .filter(isWow335PaladinRetributionAuraDamageShield) + .map((aura) => [aura.instanceId, aura] as const)); + if (auraOverrides.size === 0) return { auras: [...auras], triggered: [] }; + + const result = evaluateAuraProcs( + [...auraOverrides.values()], + event, + now, + ({ aura, proc }) => stableCombatUnit( + `${aura.instanceId}:${proc.id}:${event.trigger}:${event.abilityId ?? ""}:${event.otherId ?? ""}:${now}`, + ), + ); + const evaluatedByInstance = new Map(result.auras.map((aura) => [aura.instanceId, aura] as const)); + return { + auras: auras.map((aura) => { + const evaluated = evaluatedByInstance.get(aura.instanceId); + return evaluated ? { ...aura, procStates: evaluated.procStates } : aura; + }), + triggered: result.triggered, + }; +} + /** Companion damage only needs this spell's proc; keep unrelated companion procs unchanged. */ function evaluatePrayerOfMendingInWork(work: MutableCastWork, event: ProcEvent, now: number): void { const candidates = work.auras.filter((aura) => isPrayerOfMendingAura(aura)); @@ -3976,6 +5089,34 @@ function evaluatePrayerOfMendingInWork(work: MutableCastWork, event: ProcEvent, executeTriggeredAuraProcsInWork(work, result.triggered, now); } +function isShamanShieldProcAura(work: MutableCastWork, aura: ActiveAura): boolean { + if (!shamanTalentRanksForActor(work, aura.sourceId)) return false; + return aura.definition.procs?.some((proc) => ( + proc.id.endsWith(":lightning-shield") || proc.id.endsWith(":earth-shield") + )) ?? false; +} + +function evaluatePartyShamanShieldProcsInWork(work: MutableCastWork, event: ProcEvent, now: number): void { + const candidates = work.auras.filter((aura) => aura.targetId === event.subjectId + && isShamanShieldProcAura(work, aura)); + if (!candidates.length) return; + + const result = evaluateAuraProcs( + candidates, + event, + now, + ({ aura, proc }) => stableCombatUnit( + `${aura.instanceId}:${proc.id}:${event.trigger}:${event.abilityId ?? ""}:${event.otherId ?? ""}:${now}`, + ), + ); + const evaluatedByInstance = new Map(result.auras.map((aura) => [aura.instanceId, aura] as const)); + work.auras = work.auras.map((aura) => { + const evaluated = evaluatedByInstance.get(aura.instanceId); + return evaluated ? { ...aura, procStates: evaluated.procStates } : aura; + }); + executeTriggeredAuraProcsInWork(work, result.triggered, now); +} + function eligibleTargetIds(state: CombatState, origin: CombatPosition, maxRange: number): string[] { return nearbyMobRuntimeIds(origin, maxRange).filter((id) => { const mob = state.mobs[id]; @@ -4261,6 +5402,64 @@ const DRUID_LIVING_SEED_AURA: AuraDefinition = { const DRUID_LIVING_SEED_ABILITY_ID = "wow335:druid:living-seed"; const DRUID_LIVING_SEED_ELIGIBLE_HEALS = new Set(["Healing Touch", "Regrowth", "Swiftmend"]); +function maybeProcWarriorImprovedVictoryRushOnParry( + auras: readonly ActiveAura[], + actorId: string, + rank: number, + parried: boolean, + seed: string, + now: number, +): ActiveAura[] { + const internalCooldownActive = auras.some((aura) => ( + aura.targetId === actorId + && (aura.expiresAt === null || aura.expiresAt > now) + && aura.definition.utilityTags?.includes(WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG) + )); + if (!wow335WarriorImprovedVictoryRushShouldProc( + rank, + parried, + internalCooldownActive, + stableCombatUnit(`${seed}:wow335-warrior-improved-victory-rush`) * 100, + )) return [...auras]; + + const readyDefinition = wow335WarriorImprovedVictoryRushReadyAuraDefinition(rank); + const cooldownDefinition = wow335WarriorImprovedVictoryRushCooldownAuraDefinition(rank); + if (!readyDefinition || !cooldownDefinition) return [...auras]; + const readyAuras = applyCombatAura(auras, { + definition: readyDefinition, + sourceId: actorId, + targetId: actorId, + now, + }).auras; + return [...applyCombatAura(readyAuras, { + definition: cooldownDefinition, + sourceId: actorId, + targetId: actorId, + now, + }).auras]; +} + +function maybeProcWarriorImprovedDefensiveStance( + auras: readonly ActiveAura[], + actorId: string, + rank: number, + trigger: Wow335WarriorAvoidanceTrigger | null, + seed: string, + now: number, +): ActiveAura[] { + if (!trigger || !wow335WarriorImprovedDefensiveStanceShouldProc( + rank, + trigger, + stableCombatUnit(`${seed}:wow335-warrior-improved-defensive-stance`), + )) return [...auras]; + return [...applyCombatAura(auras, { + definition: wow335WarriorImprovedDefensiveStanceEnrageAuraDefinition(), + sourceId: actorId, + targetId: actorId, + now, + }).auras]; +} + function druidTalentRank(work: MutableCastWork, talentId: string, maxRank: number): number { return Math.min(maxRank, Math.max(0, Math.trunc(work.talentRanks[talentId] ?? 0))); } @@ -4327,6 +5526,54 @@ function maybeProcWarriorSecondWindInWork( }); } +function maybeProcWarriorUnbridledWrathInWork( + work: MutableCastWork, + weaponSpeedMs: number, + damagingLandedMainHandAutoAttack: boolean, + seed: string, + now: number, +): void { + if (work.classId !== "warrior" || !damagingLandedMainHandAutoAttack) return; + const rank = work.talentRanks[WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID] ?? 0; + const profile = wow335WarriorUnbridledWrathProfile(rank); + if (!profile || !wow335WarriorUnbridledWrathShouldProc( + rank, + weaponSpeedMs, + stableCombatUnit(`${seed}:wow335-warrior-unbridled-wrath`), + )) return; + + const before = work.resourcePools.rage ?? work.resource; + const maximum = work.maxResourcePools.rage ?? work.maxResource; + const after = Math.min(maximum, before + profile.ragePerProc); + const effectiveAmount = after - before; + work.resourcePools = { ...work.resourcePools, rage: after }; + if (resourceProfileForClass(work.classId).type === "rage") work.resource = after; + const playerActor = work.actors[PLAYER_AURA_ENTITY_ID]; + if (playerActor) { + const ragePool = playerActor.resources.rage + ?? normalizeActorResourcePool("rage", before, maximum); + work.actors[PLAYER_AURA_ENTITY_ID] = { + ...playerActor, + resources: { + ...playerActor.resources, + rage: { ...ragePool, current: after }, + }, + }; + } + recordCombatEventInWork(work, { + occurredAt: now, + kind: "resource", + sourceActorId: PLAYER_AURA_ENTITY_ID, + targetActorId: PLAYER_AURA_ENTITY_ID, + abilityId: WOW335_WARRIOR_UNBRIDLED_WRATH_ABILITY_ID, + rawAmount: profile.ragePerProc, + effectiveAmount, + overheal: profile.ragePerProc - effectiveAmount, + absorbed: 0, + critical: false, + }); +} + function applyWarriorChargeTalentEffectsInWork( work: MutableCastWork, ability: AbilityDefinition, @@ -4897,6 +6144,13 @@ function maybeProcDruidEclipse(work: MutableCastWork, ability: AbilityDefinition applyDruidSelfAura(work, definition, now); } +interface SecondaryDamagePacket { + readonly amount: number; + readonly school: DamageSchool; + readonly spellPenetration: number; + readonly attackKind?: WotlkAttackKind; +} + function damageMobInWork( classId: ClassId, work: MutableCastWork, @@ -4907,13 +6161,23 @@ function damageMobInWork( school: DamageSchool = "physical", spellPenetration = 0, combatResult?: CombatResult, + secondaryDamage?: SecondaryDamagePacket, + primarySaintsBlessingMultiplierAlreadyApplied = false, ): DamageResult { const mob = work.mobs[id]; if (!mob || mob.dead || amount <= 0 || (mob.navigationEvadeUntil ?? 0) > now) { return { amount: 0, killed: false, xpAwarded: 0, levelsGained: 0 }; } - const mitigatedBeforeAuras = combatResult?.finalDamage ?? damageAfterMobResistance( - amount, + const saintsBlessingMultiplier = romPriestScoutSaintsBlessingMultiplierForHit( + work, classId, source.actorId, mob, + ); + const primaryMultiplier = primarySaintsBlessingMultiplierAlreadyApplied ? 1 : saintsBlessingMultiplier; + const resolvedPrimaryAmount = amount * primaryMultiplier; + const resolvedSecondaryAmount = secondaryDamage ? secondaryDamage.amount * saintsBlessingMultiplier : 0; + const mitigatedBeforeAuras = combatResult + ? combatResult.finalDamage * primaryMultiplier + : damageAfterMobResistance( + resolvedPrimaryAmount, mob, school, spellPenetration, @@ -4931,13 +6195,54 @@ function damageMobInWork( now, }); work.auras = [...auraAbsorb.auras]; - const characterAbsorbed = Math.min(mob.characterShield ?? 0, auraAbsorb.remainingDamage); - const remainingDamage = Math.max(0, auraAbsorb.remainingDamage - characterAbsorbed); + const secondaryMitigatedBeforeAuras = secondaryDamage + ? damageAfterMobResistance( + resolvedSecondaryAmount, + mob, + secondaryDamage.school, + secondaryDamage.spellPenetration, + work.progression.level, + ) + : 0; + const secondaryMitigated = secondaryDamage + ? resolveAuraDamageValue( + secondaryMitigatedBeforeAuras, + aurasForEntity(work.auras, id), + { + direction: "taken", + school: secondaryDamage.school, + attackKind: secondaryDamage.attackKind ?? "spell", + }, + ) + : 0; + const secondaryAuraAbsorb = secondaryDamage + ? absorbAuraDamage(work.auras, { + targetId: id, + amount: secondaryMitigated, + school: secondaryDamage.school, + now, + }) + : null; + if (secondaryAuraAbsorb) work.auras = [...secondaryAuraAbsorb.auras]; + const characterShield = mob.characterShield ?? 0; + const primaryCharacterAbsorbed = Math.min(characterShield, auraAbsorb.remainingDamage); + const primaryRemainingDamage = Math.max(0, auraAbsorb.remainingDamage - primaryCharacterAbsorbed); + const secondaryCharacterAbsorbed = secondaryAuraAbsorb + ? Math.min(Math.max(0, characterShield - primaryCharacterAbsorbed), secondaryAuraAbsorb.remainingDamage) + : 0; + const secondaryRemainingDamage = secondaryAuraAbsorb + ? Math.max(0, secondaryAuraAbsorb.remainingDamage - secondaryCharacterAbsorbed) + : 0; + const characterAbsorbed = primaryCharacterAbsorbed + secondaryCharacterAbsorbed; + const remainingDamage = primaryRemainingDamage + secondaryRemainingDamage; const adjustedCombatResult = combatResult - ? { ...combatResult, finalDamage: Math.max(0, Math.round(remainingDamage)) } + ? { ...combatResult, finalDamage: Math.max(0, Math.round(primaryRemainingDamage)) } : undefined; if (adjustedCombatResult) work.combatResults.push(adjustedCombatResult); const applied = Math.min(mob.health, Math.max(0, Math.round(remainingDamage))); + const primaryApplied = secondaryDamage + ? Math.min(applied, Math.max(0, Math.round(primaryRemainingDamage))) + : applied; recordCombatEventInWork(work, { occurredAt: now, kind: "damage", @@ -4945,13 +6250,31 @@ function damageMobInWork( targetActorId: id, ...(source.abilityId ? { abilityId: source.abilityId } : {}), school, - rawAmount: combatResult?.rawDamage ?? Math.max(0, Math.round(amount)), - effectiveAmount: applied, + rawAmount: combatResult?.rawDamage !== undefined + ? Math.max(0, Math.round(combatResult.rawDamage * primaryMultiplier)) + : Math.max(0, Math.round(resolvedPrimaryAmount)), + effectiveAmount: primaryApplied, overheal: 0, - absorbed: auraAbsorb.absorbed + characterAbsorbed, + absorbed: auraAbsorb.absorbed + primaryCharacterAbsorbed, critical: combatResult?.critical ?? false, outcome: combatResult?.outcome ?? "hit", }); + if (secondaryDamage && secondaryAuraAbsorb) { + recordCombatEventInWork(work, { + occurredAt: now, + kind: "damage", + sourceActorId: source.actorId, + targetActorId: id, + ...(source.abilityId ? { abilityId: source.abilityId } : {}), + school: secondaryDamage.school, + rawAmount: Math.max(0, Math.round(resolvedSecondaryAmount)), + effectiveAmount: Math.max(0, applied - primaryApplied), + overheal: 0, + absorbed: secondaryAuraAbsorb.absorbed + secondaryCharacterAbsorbed, + critical: false, + outcome: "hit", + }); + } maybeProcPaladinVindicationInWork( work, id, @@ -5553,6 +6876,187 @@ function shamanTalentRank(work: MutableCastWork, talentName: string, maximumRank : 0; } +function shamanTalentRanksForActor(work: MutableCastWork, sourceActorId: string): TalentRanks | null { + if (sourceActorId === PLAYER_AGGRO_ID) return work.classId === "shaman" ? work.talentRanks : null; + const member = usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId); + return member?.classId === "shaman" ? member.talentRanks : null; +} + +function maybeProcShamanFlurryInWork( + work: MutableCastWork, + sourceActorId: string, + attackKind: WotlkAttackKind, + landed: boolean, + critical: boolean, + periodic: boolean, + rules: CombatResultRules, + now: number, +): void { + const rank = shamanTalentRanksForActor(work, sourceActorId)?.[WOW335_SHAMAN_FLURRY_TALENT_ID] ?? 0; + if (rules.isAutoAttack && attackKind === "melee" && !periodic) { + work.auras = [...wow335ShamanFlurryConsumeSwingCharge(work.auras, sourceActorId, now)]; + } + if (!periodic && wow335ShamanFlurryShouldProc(rank, { attackKind, landed, critical })) { + work.auras = [...wow335ShamanFlurryApplyProc(work.auras, sourceActorId, rank, now)]; + } +} + +function shamanTalentRankForActor( + work: MutableCastWork, + sourceActorId: string, + talentName: string, + maximumRank: number, +): number { + const talentRanks = shamanTalentRanksForActor(work, sourceActorId); + return talentRanks ? shamanTalentRankFromRanks(talentRanks, talentName, maximumRank) : 0; +} + +function maybeResolveShamanLightningOverloadInWork( + work: MutableCastWork, + targetId: string, + initiatingSpellAmount: number, + now: number, + source: ThreatSource, + ability: AbilityDefinition, + school: DamageSchool, + landed: boolean, + critical: boolean, + periodic: boolean, + seed: string, +): void { + if (work.classId !== "shaman" || ability.source !== "wow335-progression") return; + const rank = shamanTalentRanksForActor(work, source.actorId)?.[ + WOW335_SHAMAN_LIGHTNING_OVERLOAD_TALENT_ID + ] ?? 0; + const profile = wow335ShamanLightningOverloadProfileForRank(rank); + if (!wow335ShamanLightningOverloadShouldProc( + profile, + ability.name, + landed, + critical, + periodic, + stableCombatUnit(`${seed}:${WOW335_SHAMAN_LIGHTNING_OVERLOAD_PROC_TAG}`), + ) || !profile) return; + + const overloadAmount = wow335ShamanLightningOverloadDamageAmount(initiatingSpellAmount); + if (overloadAmount <= 0) return; + // Resolve a free half-damage child hit without re-entering the cast loop, so + // it can use the spell's normal combat table but cannot recursively overload. + resolveAndDamageMobInWork( + work.classId, + work, + targetId, + overloadAmount, + now, + { ...source, threatScale: profile.threatScale }, + "spell", + school, + `${seed}:${WOW335_SHAMAN_LIGHTNING_OVERLOAD_PROC_TAG}:echo`, + ability, + false, + ); +} + +function maybeGrantShamanEarthShieldTidalWavesInWork( + work: MutableCastWork, + sourceActorId: string, + now: number, +): void { + const improvedEarthShieldRank = shamanTalentRankForActor( + work, sourceActorId, "Improved Earth Shield", 3, + ); + const tidalWavesRank = shamanTalentRankForActor(work, sourceActorId, "Tidal Waves", 3); + const cooldownAura = work.auras.find((aura) => aura.sourceId === sourceActorId + && aura.targetId === sourceActorId + && aura.definition.utilityTags?.includes(WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_ICD_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)); + if (!wow335ShamanImprovedEarthShieldShouldGrantTidalWaves( + improvedEarthShieldRank, + tidalWavesRank, + cooldownAura?.appliedAt ?? null, + now, + )) return; + + work.auras = [...applyCombatAura(work.auras, { + definition: { + id: "wow335:shaman:tidal-waves", + name: "Tidal Waves", + description: "An Earth Shield heal grants one Tidal Waves charge.", + disposition: "buff", + durationMs: WOW335_SHAMAN_TIDAL_WAVES_DURATION_MS, + maxStacks: WOW335_SHAMAN_TIDAL_WAVES_MAX_CHARGES, + initialStacks: 1, + stackBehavior: "add", + utilityTags: [WOW335_SHAMAN_TIDAL_WAVES_AURA_TAG], + }, + sourceId: sourceActorId, + targetId: sourceActorId, + now, + }).auras]; + work.auras = [...applyCombatAura(work.auras, { + definition: { + id: `wow335:shaman:improved-earth-shield-tidal-waves-icd:${sourceActorId}`, + name: "Improved Earth Shield Tidal Waves Cooldown", + disposition: "buff", + durationMs: WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_COOLDOWN_MS, + utilityTags: [WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_ICD_TAG], + }, + sourceId: sourceActorId, + targetId: sourceActorId, + now, + }).auras]; +} + +function shamanElementalDevastationRankForActor(work: MutableCastWork, sourceActorId: string): number { + if (sourceActorId === PLAYER_AGGRO_ID) { + return shamanTalentRank(work, "Elemental Devastation", 3); + } + const member = usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId); + return member?.classId === "shaman" + ? shamanTalentRankFromRanks(member.talentRanks, "Elemental Devastation", 3) + : 0; +} + +function maybeProcShamanElementalDevastationInWork( + work: MutableCastWork, + sourceActorId: string, + ability: AbilityDefinition | undefined, + attackKind: WotlkAttackKind, + school: DamageSchool, + critical: boolean, + landed: boolean, + periodic: boolean, + now: number, +): void { + if (!ability || ability.source === "runewaker" || attackKind !== "spell" || periodic + || !critical || !landed || !["fire", "frost", "nature"].includes(school)) return; + const profile = wow335ShamanElementalDevastationProfileForRank( + shamanElementalDevastationRankForActor(work, sourceActorId), + ); + if (!profile) return; + + work.auras = [...applyCombatAura(work.auras, { + definition: { + id: `wow335:shaman:elemental-devastation:${sourceActorId}`, + name: "Elemental Devastation", + description: `Increases melee and ranged critical strike chance by ${profile.criticalChanceBonusPercent}% for ${profile.durationMs / 1_000} seconds after a direct Fire, Frost, or Nature spell critical hit.`, + disposition: "buff", + durationMs: profile.durationMs, + stackBehavior: "refresh", + utilityTags: [WOW335_SHAMAN_ELEMENTAL_DEVASTATION_AURA_TAG], + modifiers: [{ + kind: "stat", + stat: "critical-strike", + operation: "flat", + value: profile.criticalChanceBonusPercent, + }], + }, + sourceId: sourceActorId, + targetId: sourceActorId, + now, + }).auras]; +} + const SHAMAN_SHOCK_NAMES = new Set(["Earth Shock", "Flame Shock", "Frost Shock"]); const SHAMAN_REVERBERATION_AURA_TAG = "wow335-shaman-reverberation"; const SHAMAN_ELEMENTAL_FOCUS_AURA_TAG = "wow335-shaman-elemental-focus-clearcasting"; @@ -5720,7 +7224,10 @@ function maybeProcShamanImprovedWaterShieldInWork( stableCombatUnit(`${ability.id}:${targetId}:${now}:wow335-shaman-improved-water-shield`), )) return; - const requested = wow335ShamanWaterShieldOrbManaAtLevel(work.progression.level); + const requested = wow335ShamanWaterShieldOrbManaAtLevel( + work.progression.level, + shamanTalentRank(work, "Improved Shields", 3), + ); if (requested <= 0) return; const maximum = work.maxResourcePools.mana ?? defaultResourceMaximum("mana"); const current = work.resourcePools.mana ?? 0; @@ -6190,7 +7697,10 @@ function applyRomRoguePoisonOnNormalAttackInWork( aura.definition.utilityTags?.includes(ROM_ROGUE_POISON_AURA_TAG) && (aura.expiresAt === null || aura.expiresAt > now) )); - const application = romRoguePoisonApplicationForAttack({ + const currentSpeedAura = work.auras.find((aura) => aura.sourceId === sourceActorId + && aura.targetId === sourceActorId + && aura.definition.utilityTags?.includes(ROM_ROGUE_POISON_ATTACK_SPEED_TAG)); + const result = romRoguePoisonAttackResultForAttack({ classId: work.classId, sourceActorId, targetActorId: targetId, @@ -6199,15 +7709,318 @@ function applyRomRoguePoisonOnNormalAttackInWork( attackLanded, poisonActive, roll: stableCombatUnit(`${seed}:rom-rogue-poison`), + attackSpeedTargetId: currentSpeedAura ? romRoguePoisonAttackSpeedTargetId(currentSpeedAura) : null, + targetPoisonStacks: work.auras.find((aura) => aura.sourceId === sourceActorId + && aura.targetId === targetId + && aura.definition.utilityTags?.includes("rom-poisonous-hands-debuff"))?.stacks ?? 0, }); - if (!application) return; - work.auras = [...applyCombatAura(work.auras, { - definition: application.definition, - sourceId: application.sourceId, - targetId: application.targetId, - stacks: application.stacks, + if (!result) return; + if (result.resetAttackSpeed) work.auras = work.auras.filter((aura) => !(aura.sourceId === sourceActorId + && aura.targetId === sourceActorId + && aura.definition.utilityTags?.includes(ROM_ROGUE_POISON_ATTACK_SPEED_TAG))); + if (result.application) work.auras = [...applyCombatAura(work.auras, { + definition: result.application.definition, + sourceId: result.application.sourceId, + targetId: result.application.targetId, + stacks: result.application.stacks, now, }).auras]; + if (result.attackSpeedApplication) work.auras = [...applyCombatAura(work.auras, { + definition: result.attackSpeedApplication.definition, + sourceId: result.attackSpeedApplication.sourceId, + targetId: result.attackSpeedApplication.targetId, + stacks: result.attackSpeedApplication.stacks, + now, + }).auras]; +} + +function deathKnightTalentOwnerForActor( + work: Pick, + sourceActorId: string, +): { readonly talentRanks: TalentRanks } | null { + if (sourceActorId === PLAYER_AGGRO_ID) { + return work.classId === "death-knight" ? { talentRanks: work.talentRanks } : null; + } + const member = usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId); + return member?.classId === "death-knight" ? { talentRanks: member.talentRanks } : null; +} + +function paladinTalentOwnerForActor( + work: Pick, + sourceActorId: string, +): { readonly talentRanks: TalentRanks } | null { + if (sourceActorId === PLAYER_AGGRO_ID) { + return work.classId === "paladin" ? { talentRanks: work.talentRanks } : null; + } + const member = usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId); + return member?.classId === "paladin" ? { talentRanks: member.talentRanks } : null; +} + +function hunterTalentOwnerForActor( + work: Pick, + sourceActorId: string, +): { readonly talentRanks: TalentRanks } | null { + if (sourceActorId === PLAYER_AGGRO_ID) { + return work.classId === "hunter" ? { talentRanks: work.talentRanks } : null; + } + const member = usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId); + return member?.classId === "hunter" ? { talentRanks: member.talentRanks } : null; +} + +function maybeProcHunterGoForTheThroatInWork( + work: MutableCastWork, + sourceActorId: AggroActorId, + talentRanks: TalentRanks | null, + attackKind: WotlkAttackKind, + abilityId: string, + critical: boolean, + landed: boolean, + periodic: boolean, + now: number, +): void { + if (!talentRanks || !critical || !landed || periodic) return; + if (wow335HunterGoForTheThroatAttackKindForAbility(abilityId) !== attackKind) return; + const rank = Math.max(0, Math.min(2, Math.trunc(talentRanks[WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID] ?? 0))); + const mechanics = wow335HunterGoForTheThroatRankMechanics(rank); + if (!mechanics) return; + const activePet = work.summons.find((summon) => summon.ownerActorId === sourceActorId + && Boolean(summon.hunterPet) + && summon.health > 0 + && summon.expiresAt > now); + if (!activePet) return; + const focus = activePet.resources.focus ?? normalizeActorResourcePool("focus", 100, 100, 5, now); + const lockout = work.auras.find((aura) => aura.sourceId === sourceActorId + && aura.targetId === sourceActorId + && aura.definition.utilityTags?.includes(WOW335_HUNTER_GO_FOR_THE_THROAT_ICD_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)); + const plan = wow335HunterGoForTheThroatProcPlan(rank, { + attackType: attackKind === "melee" || attackKind === "ranged" ? attackKind : "other", + critical, + hasLivingActivePet: true, + focusCurrent: focus.current, + focusMaximum: focus.maximum, + lastProcAt: lockout?.appliedAt ?? null, + now, + }); + if (!plan) return; + + const focusAfter = { ...focus, current: plan.focusAfter }; + work.summons = work.summons.map((summon) => summon.id === activePet.id + ? { ...summon, resources: { ...summon.resources, focus: focusAfter } } + : summon); + const petActor = work.actors[activePet.id]; + if (petActor) { + work.actors[activePet.id] = { + ...petActor, + resources: { ...petActor.resources, focus: focusAfter }, + }; + } + work.auras = [...applyCombatAura(work.auras, { + definition: { + id: "wow335:hunter:go-for-the-throat-icd", + name: "Go for the Throat Internal Cooldown", + description: mechanics.description, + disposition: "buff", + durationMs: mechanics.internalCooldownMs, + utilityTags: [WOW335_HUNTER_GO_FOR_THE_THROAT_ICD_TAG], + }, + sourceId: sourceActorId, + targetId: sourceActorId, + now, + }).auras]; + recordCombatEventInWork(work, { + occurredAt: now, + kind: "resource", + sourceActorId, + targetActorId: activePet.id, + abilityId: WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID, + rawAmount: mechanics.focusPerProc, + effectiveAmount: plan.focusGain, + overheal: mechanics.focusPerProc - plan.focusGain, + absorbed: 0, + critical: false, + }); +} + +function mageFrostWardingIncomingReduction(input: { + readonly classId: ClassId; + readonly talentRank: number; + readonly auras: readonly ActiveAura[]; + readonly targetId: string; + readonly attackKind: WotlkAttackKind; + readonly damageSchool: DamageSchool; + readonly spellDamage: number; + readonly roll: number; + readonly now: number; +}): { readonly damageAfterReduction: number; readonly manaRefund: number; readonly wardAbilityId: string } | null { + if (input.classId !== "mage" || input.attackKind !== "spell") return null; + const wardRows = [ + { ...WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.fire, name: "Fire Ward" }, + { ...WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.frost, name: "Frost Ward" }, + ]; + const wardAura = input.auras.find((aura) => aura.targetId === input.targetId + && (aura.expiresAt === null || aura.expiresAt > input.now) + && wardRows.some((ward) => aura.definition.name === ward.name + || aura.definition.name.startsWith(`${ward.name} (`))); + if (!wardAura) return null; + const ward = wardRows.find((candidate) => wardAura.definition.name === candidate.name + || wardAura.definition.name.startsWith(`${candidate.name} (`)); + const rankSpellMatch = wardAura.definition.id.match(/^wow335:(\d+):/); + const wardRankSpellId = rankSpellMatch ? Number(rankSpellMatch[1]) : 0; + if (!ward || !Number.isInteger(wardRankSpellId)) return null; + const plan = wow335MageFrostWardingProcPlan(input.talentRank, { + wardOwnerClassId: input.classId, + eventKind: input.attackKind === "spell" ? "spell-damage" : input.attackKind, + wardAbilityId: ward.abilityId, + wardRankSpellId, + wardAuraActive: true, + damageSchool: input.damageSchool, + spellDamage: input.spellDamage, + roll: input.roll, + }); + if (!plan) return null; + const reduced = Math.round(input.spellDamage * plan.wardDamageReductionPercent / 100); + return { + damageAfterReduction: Math.max(0, input.spellDamage - reduced), + manaRefund: reduced * plan.manaRefundPerDamageReduced, + wardAbilityId: plan.wardAbilityId, + }; +} + +function deathKnightDancingRuneWeaponActiveInWork( + work: Pick, + sourceActorId: string, + now: number, +): boolean { + if (!deathKnightTalentOwnerForActor(work, sourceActorId)) return false; + const auraTargetId = sourceActorId === PLAYER_AGGRO_ID ? PLAYER_AURA_ENTITY_ID : sourceActorId; + return work.auras.some((aura) => aura.targetId === auraTargetId + && aura.definition.utilityTags?.includes(WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + && wow335DeathKnightDancingRuneWeaponIsActive(aura.appliedAt, now)); +} + +function maybeMirrorDeathKnightDancingRuneWeaponMeleeInWork( + work: MutableCastWork, + targetId: string, + rawOwnerDamage: number, + now: number, + source: ThreatSource, + school: DamageSchool, +): DamageResult | null { + const target = work.mobs[targetId]; + if (!deathKnightDancingRuneWeaponActiveInWork(work, source.actorId, now) + || !wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + kind: "melee", + targetAlive: Boolean(target && !target.dead), + targetHostile: Boolean(target), + })) return null; + const mirroredDamage = wow335DeathKnightDancingRuneWeaponDamage(rawOwnerDamage); + if (mirroredDamage <= 0) return null; + return damageMobInWork( + work.classId, + work, + targetId, + mirroredDamage, + now, + source, + school, + work.gearStats.spellPenetration, + ); +} + +function maybeMirrorDeathKnightDancingRuneWeaponSpellInWork( + work: MutableCastWork, + targetId: string, + rawOwnerDamage: number, + now: number, + source: ThreatSource, + ability: AbilityDefinition, + school: DamageSchool, + isAreaTargeted: boolean, + actionTargetIsOwner: boolean, +): DamageResult | null { + const target = work.mobs[targetId]; + const hasSummonEffect = ability.effects.some((effect) => effect.kind === "summon" || effect.kind === "pet"); + const event: Wow335DeathKnightDancingRuneWeaponOwnerEvent = { + kind: "spell", + spellId: ability.dbcSpellId, + ownerKnowsSpell: true, + targetAlive: Boolean(target && !target.dead), + targetHostile: Boolean(target), + isPositiveSpell: ability.target === "friendly" || ability.target === "self", + hasSummonEffect, + isAreaTargeted, + actionTargetIsOwner, + excludedUtilitySpell: wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName(ability.name), + }; + if (!deathKnightDancingRuneWeaponActiveInWork(work, source.actorId, now) + || !wow335DeathKnightDancingRuneWeaponCanMirrorEvent(event)) return null; + const mirroredDamage = wow335DeathKnightDancingRuneWeaponDamage(rawOwnerDamage); + if (mirroredDamage <= 0) return null; + return damageMobInWork( + work.classId, + work, + targetId, + mirroredDamage, + now, + { ...source, abilityId: ability.id }, + school, + work.gearStats.spellPenetration, + ); +} + +function maybeProcDeathKnightBloodCakedBladeInWork( + work: MutableCastWork, + targetId: string, + amount: number, + now: number, + source: ThreatSource, + attackKind: WotlkAttackKind, + seed: string, + periodic: boolean, + rules: CombatResultRules, + primaryHit: CombatResult, + weaponSpeedMs: number, +): DamageResult | null { + const owner = deathKnightTalentOwnerForActor(work, source.actorId); + const rank = owner?.talentRanks[WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID] ?? 0; + const chance = wow335DeathKnightBloodCakedBladeProcChance(rank); + if (chance <= 0 || attackKind !== "melee" || periodic || !rules.isAutoAttack + || !primaryHit.landed || primaryHit.rawDamage <= 0 + || !wow335DeathKnightBloodCakedBladeShouldProc( + rank, + stableCombatUnit(`${seed}:${WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_PROC_TAG}`), + )) return null; + + const diseaseTags = new Set(["blood-plague", "frost-fever"]); + const diseaseCount = new Set(work.effects.filter((effect) => ( + effect.kind === "dot" + && effect.sourceActorId === source.actorId + && effect.targetId === targetId + && effect.remainingTicks > 0 + && effect.tag !== undefined + && diseaseTags.has(effect.tag) + )).map((effect) => effect.kind === "dot" ? effect.tag : undefined)).size; + const strikeAmount = amount * wow335DeathKnightBloodCakedStrikeDamageCoefficient(diseaseCount); + if (strikeAmount <= 0) return null; + + return resolveAndDamageMobInWork( + "death-knight", + work, + targetId, + strikeAmount, + now, + { ...source, abilityId: WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID }, + "melee", + "physical", + `${seed}:${WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID}`, + undefined, + false, + { canCrit: false }, + 0, + weaponSpeedMs, + ); } function resolveAndDamageMobInWork( @@ -6225,13 +8038,109 @@ function resolveAndDamageMobInWork( rules: CombatResultRules = {}, criticalChanceBonusPercent = 0, weaponSpeedMs = work.gearStats.meleeWeapon?.speedMs ?? WOW335_SHAMAN_MAELSTROM_WEAPON_DEFAULT_SPEED_MS, + selectedDbcSpellId?: number, ): DamageResult { const mob = work.mobs[id]; if (!mob || mob.dead || amount <= 0 || (mob.navigationEvadeUntil ?? 0) > now) { return { amount: 0, killed: false, xpAwarded: 0, levelsGained: 0 }; } + const sourcePartyMember = source.actorId === PLAYER_AGGRO_ID + ? undefined + : usePartyStore.getState().members.find((member) => member.id === source.actorId); + const sourceClassId = sourcePartyMember?.classId ?? classId; + const bloodGorgedOwner = sourceClassId === "death-knight" + ? deathKnightTalentOwnerForActor(work, source.actorId) + : null; + const bloodGorgedRank = bloodGorgedOwner?.talentRanks[WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID] ?? 0; + const bloodGorgedSpellId = selectedDbcSpellId ?? ability?.dbcSpellId; + const bloodGorgedSpellFamily = !periodic && bloodGorgedRank > 0 && bloodGorgedSpellId !== undefined + ? wow335DeathKnightSpellFamilyInfoForSpellId(bloodGorgedSpellId) + : null; + const bloodGorgedCurrentHealth = sourcePartyMember?.health + ?? (source.actorId === PLAYER_AGGRO_ID ? work.health : 0); + const bloodGorgedMaximumHealth = sourcePartyMember?.maxHealth + ?? (source.actorId === PLAYER_AGGRO_ID ? work.maxHealth : 0); + const bloodGorgedDamageBonusPercent = bloodGorgedSpellFamily + ? wow335DeathKnightBloodGorgedDamageBonusPercent( + bloodGorgedRank, + bloodGorgedCurrentHealth, + bloodGorgedMaximumHealth, + bloodGorgedSpellFamily.spellFamilyName, + bloodGorgedSpellFamily.spellFamilyFlags, + ) + : 0; + const bloodGorgedArmorPenetrationPercent = bloodGorgedSpellFamily + ? wow335DeathKnightBloodGorgedArmorPenetrationPercent( + bloodGorgedRank, + bloodGorgedSpellFamily.spellFamilyName, + bloodGorgedSpellFamily.spellFamilyFlags, + ) + : 0; + const improvedVictoryRushRank = sourcePartyMember?.classId === "warrior" + ? sourcePartyMember.talentRanks[WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID] ?? 0 + : !sourcePartyMember && classId === "warrior" + ? work.talentRanks[WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID] ?? 0 + : 0; const sourceAuras = aurasForEntity(work.auras, source.actorId); const activeSourceAuras = sourceAuras.filter((aura) => aura.expiresAt === null || aura.expiresAt > now); + const saintsBlessingDamageMultiplier = romPriestScoutSaintsBlessingMultiplierForHit( + work, classId, source.actorId, mob, sourcePartyMember, + ); + const paladinVengeanceOwner = sourceClassId === "paladin" + ? paladinTalentOwnerForActor(work, source.actorId) + : null; + const paladinVengeanceRank = paladinVengeanceOwner?.talentRanks[WOW335_PALADIN_VENGEANCE_TALENT_ID] ?? 0; + const paladinVengeanceAura = activeSourceAuras.find((aura) => aura.definition.utilityTags?.includes( + WOW335_PALADIN_VENGEANCE_AURA_TAG, + )); + const hunterTalentOwner = sourceClassId === "hunter" + ? hunterTalentOwnerForActor(work, source.actorId) + : null; + const paladinVengeanceBonusPercent = wow335PaladinVengeanceDamageBonusPercent( + paladinVengeanceRank, + paladinVengeanceAura?.stacks ?? 0, + { casterClassId: sourceClassId, abilityId: ability?.id ?? source.abilityId ?? "", damageSchool: school }, + ); + const druidMasterShapeshifterRank = sourcePartyMember?.classId === "druid" + ? sourcePartyMember.talentRanks[WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID] ?? 0 + : !sourcePartyMember && sourceClassId === "druid" && source.actorId === PLAYER_AGGRO_ID + ? work.talentRanks[WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID] ?? 0 + : 0; + const druidMasterShapeshifterForm = druidMasterShapeshifterRank > 0 + ? wow335DruidShapeshiftFormForAuras(work.auras, source.actorId, now) + : null; + const druidMasterShapeshifterModifiers = wow335DruidMasterShapeshifterModifiersForForm( + druidMasterShapeshifterRank, + druidMasterShapeshifterForm, + ); + const druidMasterShapeshifterDamageMultiplier = druidMasterShapeshifterForm === "bear" && school === "physical" + || druidMasterShapeshifterForm === "moonkin" && (school === "arcane" || school === "nature") + ? applyTalentModifierValue(1, druidMasterShapeshifterModifiers, "damage-percent") + : 1; + const druidMasterShapeshifterCriticalBonus = !periodic && attackKind === "melee" + && druidMasterShapeshifterForm === "cat" + ? druidMasterShapeshifterModifiers.find((modifier) => modifier.kind === "critical-chance-percent")?.amount ?? 0 + : 0; + const improvedVictoryRushReadyAura = sourceClassId === "warrior" && ability?.name === "Victory Rush" + ? activeSourceAuras.find((aura) => aura.definition.utilityTags?.includes( + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG, + )) + : undefined; + const victoryRushKillReadyAura = sourceClassId === "warrior" && ability?.name === "Victory Rush" + ? activeSourceAuras.find((aura) => aura.definition.utilityTags?.includes( + WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG, + )) + : undefined; + const adjustedThreatSource = improvedVictoryRushReadyAura + ? { + ...source, + threatScale: (source.threatScale ?? 1) * wow335WarriorImprovedVictoryRushThreatScale( + improvedVictoryRushRank, + ability?.name ?? "", + true, + ), + } + : source; const reverberationAura = classId === "shaman" && source.actorId === PLAYER_AGGRO_ID && !periodic && ability && (SHAMAN_SHOCK_NAMES.has(ability.name) || ability.name === "Elemental Blast") ? activeSourceAuras.find((aura) => aura.definition.utilityTags?.includes(SHAMAN_REVERBERATION_AURA_TAG) @@ -6245,6 +8154,17 @@ function resolveAndDamageMobInWork( : undefined; const targetFrozen = mob.statuses.some((status) => status.kind === "freeze" && status.endsAt > now); const treatedAsFrozen = targetFrozen || Boolean(fingersOfFrost); + const mageShatterOwner = sourceClassId === "mage" + ? wow335MageTalentOwnerForActor(work, source.actorId) + : null; + const mageShatterTargetTreatedAsFrozen = targetFrozen || (sourceClassId === "mage" + && activeSourceAuras.some((aura) => aura.definition.utilityTags?.includes(WOW335_MAGE_FINGERS_OF_FROST_TAG))); + const mageShatterCriticalChanceBonus = !periodic && attackKind === "spell" && ability && mageShatterOwner + ? wow335MageShatterCriticalChanceBonusPercent( + mageTalentRank(mageShatterOwner.talentRanks, "Shatter", 3), + mageShatterTargetTreatedAsFrozen, + ) + : 0; const mageProcDamageMultiplier = classId === "mage" && source.actorId === PLAYER_AGGRO_ID ? (ability?.name === "Ice Lance" && treatedAsFrozen ? 3 : 1) * (ability?.name === "Pyroblast" && hotStreak ? 1.4 : 1) @@ -6259,6 +8179,15 @@ function resolveAndDamageMobInWork( aura.definition.utilityTags?.includes(WARLOCK_IMPROVED_SHADOW_BOLT_TAG) && (aura.expiresAt === null || aura.expiresAt > now) )); + const winterChillTargetAura = attackKind === "spell" + ? aurasForEntity(work.auras, id).find((aura) => ( + aura.definition.utilityTags?.includes(WOW335_MAGE_WINTERS_CHILL_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + )) + : undefined; + const mageWintersChillTargetCriticalBonus = sourceClassId === "mage" && attackKind === "spell" + ? wow335MageWintersChillTargetModifiers(winterChillTargetAura?.stacks ?? 0).criticalChanceBonusPercent + : 0; const warlockNightfallReady = classId === "warlock" && source.actorId === PLAYER_AGGRO_ID && activeSourceAuras.some((aura) => aura.definition.utilityTags?.includes(WARLOCK_NIGHTFALL_READY_TAG)); const combustion = !periodic && attackKind === "spell" && school === "fire" @@ -6312,17 +8241,24 @@ function resolveAndDamageMobInWork( mob.maxHealth, ) : amount; - const modifiedAmount = resolveAuraDamageValue(moltenFuryAmount, sourceAuras, { + // Generic dealt-damage modifiers must ignore timed auras at their expiry + // boundary; specialized proc checks above use the same filtered snapshot. + const modifiedAmount = resolveAuraDamageValue(moltenFuryAmount, activeSourceAuras, { direction: "dealt", school, attackKind, }) * warlockNightfallDamageMultiplier(ability?.name ?? "", warlockNightfallReady) * (druidSolarEclipse ? 1.3 : 1) * rogueDaggerMultiplier * mageProcDamageMultiplier - * (reverberationAura ? 1.2 : 1); + * (reverberationAura ? 1.2 : 1) + * druidMasterShapeshifterDamageMultiplier + * (1 + paladinVengeanceBonusPercent / 100) + * saintsBlessingDamageMultiplier + * (1 + bloodGorgedDamageBonusPercent / 100); const combatResult = resolvePlayerDamageResult( classId, work, source.actorId, + now, mob, modifiedAmount, attackKind, @@ -6335,19 +8271,303 @@ function resolveAndDamageMobInWork( + (combustion ? Math.max(0, combustion.stacks - 1) : 0) + (druidLunarEclipse ? 30 : 0) + (improvedScorchVulnerability ? 5 : 0) - + (improvedShadowBoltVulnerability ? 5 : 0), + + (improvedShadowBoltVulnerability ? 5 : 0) + + mageWintersChillTargetCriticalBonus + + mageShatterCriticalChanceBonus + + druidMasterShapeshifterCriticalBonus, + bloodGorgedArmorPenetrationPercent, ); - const result = damageMobInWork( + let godsSwordSecondaryDamage: SecondaryDamagePacket | undefined; + const sourceSecondaryClassId = sourcePartyMember?.secondaryClassId ?? work.secondaryClassId; + const chaosDaggerSecondaryClassId = sourcePartyMember + ? sourcePartyMember.secondaryClassId + : work.secondaryClassId; + let chaosDaggerSecondaryDamage: SecondaryDamagePacket | undefined; + if (!ability && !periodic && rules.isAutoAttack && attackKind === "melee" && combatResult.landed + && sourceClassId === "rom-rogue" && chaosDaggerSecondaryClassId === "rom-mage" + && (source.actorId === PLAYER_AGGRO_ID || sourcePartyMember)) { + const learnedPassives = learnedRomCoaPassives( + sourceClassId, + sourceSecondaryClassId, + sourcePartyMember?.level ?? work.progression.level, + sourcePartyMember?.talentRanks ?? work.talentRanks, + ); + const weaponHand = source.abilityId === PLAYER_OFFHAND_AUTO_ATTACK_ID + || source.abilityId === "party-auto-attack-offhand" + ? "off-hand" + : "main-hand"; + const state = useCombatStore.getState(); + const ownerWeapon = source.actorId === PLAYER_AGGRO_ID + ? playerEquippedMeleeWeapon(state, weaponHand) + ?? (weaponHand === "main-hand" ? work.gearStats.meleeWeapon : null) + : sourcePartyMember + ? weaponHand === "main-hand" + ? sourcePartyMember.gearStats.meleeWeapon + : resolvedEquipmentLoadout(state.equipment, state.inventory, { + ownerId: sourcePartyMember.id, + ownerKind: "party", + classId: sourcePartyMember.classId, + secondaryClassId: sourcePartyMember.secondaryClassId, + specializationId: sourcePartyMember.specializationId, + role: sourcePartyMember.role, + level: sourcePartyMember.level, + })[weaponHand]?.stats.meleeWeapon ?? null + : null; + const bonus = romRogueChaosDaggerDamage({ + classId: sourceClassId, + secondaryClassId: chaosDaggerSecondaryClassId, + passiveLearned: learnedPassives.includes(ROM_ROGUE_MAGE_CHAOS_DAGGER_SPELL_ID), + isAutoAttack: true, + attackLanded: true, + weaponHand, + weaponDps: ownerWeapon ? weaponDps(ownerWeapon) : 0, + }); + if (bonus) { + chaosDaggerSecondaryDamage = { + amount: resolveAuraDamageValue(bonus.amount, activeSourceAuras, { + direction: "dealt", + school: bonus.school, + attackKind: "melee", + }), + school: bonus.school, + spellPenetration: sourcePartyMember?.gearStats.spellPenetration ?? work.gearStats.spellPenetration, + attackKind: "melee", + }; + } + } + const physicalAbilityEvent = school === "physical" + || (ability?.source === "runewaker" && /\bphysical(?:\s+light)?\s+damage\b/i.test(ability.description)); + if (ability && !periodic && physicalAbilityEvent && combatResult.landed + && sourceClassId === "rom-knight" && sourceSecondaryClassId === "rom-rogue") { + const learnedPassiveSpellIds = learnedRomCoaPassives( + sourceClassId, + sourceSecondaryClassId, + sourcePartyMember?.level ?? work.progression.level, + sourcePartyMember?.talentRanks ?? work.talentRanks, + ); + if (learnedPassiveSpellIds.includes(ROM_COA_KNIGHT_ROGUE_GODS_SWORD_ID)) { + const state = useCombatStore.getState(); + const offhandWeapon = source.actorId === PLAYER_AGGRO_ID + ? playerEquippedMeleeWeapon(state, "off-hand") + : sourcePartyMember + ? resolvedEquipmentLoadout(state.equipment, state.inventory, { + ownerId: sourcePartyMember.id, + ownerKind: "party", + classId: sourcePartyMember.classId, + secondaryClassId: sourcePartyMember.secondaryClassId, + specializationId: sourcePartyMember.specializationId, + role: sourcePartyMember.role, + level: sourcePartyMember.level, + })["off-hand"]?.stats.meleeWeapon ?? null + : null; + const bonusLightDamage = romCoaKnightRogueGodsSwordBonusLightDamage({ + classId: sourceClassId, + secondaryClassId: sourceSecondaryClassId, + learnedPassiveSpellIds, + landedOffensivePhysicalAbilityDamageEvent: true, + offhandWeaponDps: offhandWeapon ? weaponDps(offhandWeapon) : 0, + }); + if (bonusLightDamage > 0) { + godsSwordSecondaryDamage = { + amount: resolveAuraDamageValue(bonusLightDamage, activeSourceAuras, { + direction: "dealt", + school: "holy", + attackKind: "spell", + }), + school: "holy", + spellPenetration: sourcePartyMember?.gearStats.spellPenetration ?? work.gearStats.spellPenetration, + }; + } + } + } + let result = damageMobInWork( classId, work, id, amount, now, - source, + adjustedThreatSource, school, work.gearStats.spellPenetration, combatResult, + chaosDaggerSecondaryDamage ?? godsSwordSecondaryDamage, + true, ); + maybeProcShamanFlurryInWork( + work, + source.actorId, + attackKind, + combatResult.landed, + combatResult.critical, + periodic, + rules, + now, + ); + maybeProcHunterGoForTheThroatInWork( + work, + source.actorId, + hunterTalentOwner?.talentRanks ?? null, + attackKind, + ability?.id ?? source.abilityId ?? "", + combatResult.critical, + combatResult.landed, + periodic, + now, + ); + const soulBrandLearnedPassives = sourceClassId === "rom-warlock" + && sourceSecondaryClassId === "rom-mage" + ? learnedRomCoaPassives( + sourceClassId, + sourceSecondaryClassId, + sourcePartyMember?.level ?? work.progression.level, + sourcePartyMember?.talentRanks ?? work.talentRanks, + ) + : []; + const soulBrandEffects = romWarlockMageSoulBrandEffects({ + classId: sourceClassId, + secondaryClassId: sourceSecondaryClassId ?? "", + learnedPassiveSpellIds: soulBrandLearnedPassives, + }, { + school, + damageLanded: combatResult.landed && result.amount > 0, + periodic, + }); + if (soulBrandEffects) { + for (const effect of soulBrandEffects) { + if (effect.kind === "apply-aura") { + work.auras = [...applyCombatAura(work.auras, { + definition: effect.aura, + sourceId: source.actorId, + targetId: id, + now, + }).auras]; + } else if (effect.kind === "resource" && effect.resource === "psi") { + grantDamageResourceInWork(work, { + onDamageResource: { resource: "psi", amount: effect.amount }, + }, result.amount, source.actorId, ability?.id ?? source.abilityId ?? `${ROM_WARLOCK_MAGE_SOUL_BRAND.passiveSpellId}`, now); + } + } + } + const deathKnightBloodyVengeanceOwner = sourceClassId === "death-knight" + ? deathKnightTalentOwnerForActor(work, source.actorId) + : null; + const deathKnightBloodyVengeanceRank = deathKnightBloodyVengeanceOwner?.talentRanks[ + WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID + ] ?? 0; + if (result.amount > 0 && wow335DeathKnightBloodyVengeanceShouldTrigger( + deathKnightBloodyVengeanceRank, + combatResult.critical, + )) { + const definition = wow335DeathKnightBloodyVengeanceAuraDefinition(deathKnightBloodyVengeanceRank); + if (definition) { + work.auras = [...applyCombatAura(work.auras, { + definition, + sourceId: source.actorId, + targetId: source.actorId, + now, + }).auras]; + } + } + const paladinVengeancePlan = wow335PaladinVengeanceProcPlan(paladinVengeanceRank, { + casterClassId: sourceClassId, + source: rules.isAutoAttack ? "weapon-swing" : attackKind === "spell" ? "spell" : "ability", + critical: combatResult.critical, + damageDealt: combatResult.landed ? result.amount : 0, + currentStacks: paladinVengeanceAura?.stacks ?? 0, + }); + if (paladinVengeancePlan) { + const definition = wow335PaladinVengeanceAuraDefinition(paladinVengeanceRank); + if (definition) { + work.auras = [...applyCombatAura(work.auras, { + definition, + sourceId: source.actorId, + targetId: source.actorId, + // `add` consumes an increment, while the plan exposes the resulting capped total. + stacks: 1, + now, + }).auras]; + } + } + const deathKnightDesolationOwner = sourceClassId === "death-knight" + && ability?.source === "wow335-progression" + && ability.id === WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID + ? deathKnightTalentOwnerForActor(work, source.actorId) + : null; + const deathKnightDesolationRank = deathKnightDesolationOwner?.talentRanks[ + WOW335_DEATH_KNIGHT_DESOLATION_TALENT_ID + ] ?? 0; + if (wow335DeathKnightDesolationShouldTrigger( + deathKnightDesolationRank, + ability?.id ?? "", + combatResult.landed, + )) { + const definition = wow335DeathKnightDesolationAuraDefinition(deathKnightDesolationRank); + if (definition) { + work.auras = [...applyCombatAura(work.auras, { + definition, + sourceId: source.actorId, + targetId: source.actorId, + now, + }).auras]; + } + } + const mageWintersChillOwner = sourceClassId === "mage" && attackKind === "spell" && !periodic && ability + ? wow335MageTalentOwnerForActor(work, source.actorId) + : null; + if (mageWintersChillOwner && combatResult.landed && result.amount > 0 && ability) { + const rank = mageTalentRank(mageWintersChillOwner.talentRanks, "Winter's Chill", 3); + const proc = wow335MageWintersChillShouldProc(rank, { + abilityName: ability.name, + attackKind, + school, + periodic, + landedDamage: result.amount, + }, stableCombatUnit(`${seed}:wow335-mage-winters-chill`)); + if (proc) { + work.auras = [...applyCombatAura(work.auras, { + definition: WOW335_MAGE_WINTERS_CHILL_AURA, + sourceId: source.actorId, + targetId: id, + now, + }).auras]; + } + } + if ((improvedVictoryRushReadyAura || victoryRushKillReadyAura) && combatResult.landed) { + const consumedVictoryRushReadyAuraIds = new Set([ + improvedVictoryRushReadyAura?.instanceId, + victoryRushKillReadyAura?.instanceId, + ].filter((instanceId): instanceId is string => Boolean(instanceId))); + work.auras = work.auras.filter((aura) => !consumedVictoryRushReadyAuraIds.has(aura.instanceId)); + } + const bloodCakedStrike = maybeProcDeathKnightBloodCakedBladeInWork( + work, + id, + amount, + now, + source, + attackKind, + seed, + periodic, + rules, + combatResult, + weaponSpeedMs, + ); + if (bloodCakedStrike) { + result = { + ...result, + killed: result.killed || bloodCakedStrike.killed, + xpAwarded: result.xpAwarded + bloodCakedStrike.xpAwarded, + levelsGained: result.levelsGained + bloodCakedStrike.levelsGained, + }; + } + if (result.killed && mob.xpReward > 0 && sourceClassId === "warrior") { + work.auras = [...applyCombatAura(work.auras, { + definition: wow335WarriorVictoryRushKillAuraDefinition(), + sourceId: source.actorId, + targetId: source.actorId, + now, + }).auras]; + } if (classId === "death-knight" && source.actorId === PLAYER_AGGRO_ID && attackKind === "melee" @@ -6675,6 +8895,17 @@ function resolveAndDamageMobInWork( && combatResult.landed && result.amount > 0) { maybeProcShamanElementalFocusInWork(work, ability, school, combatResult.critical, periodic, seed, now); } + maybeProcShamanElementalDevastationInWork( + work, + source.actorId, + ability, + attackKind, + school, + combatResult.critical, + combatResult.landed, + periodic, + now, + ); if (source.actorId === PLAYER_AGGRO_ID && !periodic && combatResult.landed && result.amount > 0) { maybeProcShamanReverberationInWork(work, ability, result.amount, periodic, seed, now); } @@ -6774,10 +9005,7 @@ function applyStatus( ): MobCombatState { if (mob.dead) return mob; if (mob.mechanicImmunities.includes(effect.status as AzerothCoreMechanic)) return mob; - const durationFromTargetSpecificAbility = effect.status === "sleep" - && abilityById(abilityId)?.dbcSpellId === ROM_ROGUE_NUMBING_DAGGER_SKILL_ID - ? romRogueNumbingDaggerStatusForTarget(mob.characterDefender ? "player" : "npc").durationMs - : effect.durationMs; + const durationFromTargetSpecificAbility = effect.durationMs; const baseDurationMs = mob.boss && effect.status === "stun" ? Math.min(3000, durationFromTargetSpecificAbility) : durationFromTargetSpecificAbility; @@ -6858,13 +9086,41 @@ function executeTriggeredSpellInWork( if (!catalogAbility) return; const ability = abilityAtLevel(catalogAbility, work.progression.level); const source = playerThreatSource({ talentModifiers: work.talentModifiers }, ability.id, true); + const partySource = usePartyStore.getState().members.find((member) => member.id === sourceId); + const sourceBaseStats = partySource + ? playerCharacterStats( + partySource.classId, + partySource.level, + partySource.gearStats, + partySource.raceId, + partySource.secondaryClassId ?? null, + talentModifiersForRanks(partySource.talentRanks, partySource.classId), + ) + : sourceId === PLAYER_AURA_ENTITY_ID + ? playerCharacterStats( + work.classId, + work.progression.level, + work.gearStats, + work.raceId, + work.secondaryClassId, + work.talentModifiers, + ) + : null; + const holyBlessingSpellPowerBonus = sourceBaseStats + ? romPriestHolyBlessingStats( + sourceBaseStats, + aurasForEntity(work.auras, sourceId, now), + ).spellPowerBonus + : 0; const attackKind = abilityAttackKind(work.classId, ability); const school = abilityDamageSchool(work.classId, ability); const mobTargets = targetId && work.mobs[targetId] && !work.mobs[targetId].dead ? [targetId] : []; for (const effect of ability.effects) { if (effect.kind === "damage") { const amount = talentAdjustedAmount( - equipmentAdjustedCombatAmount(effect, work.progression.level, work.gearStats, work.classId, ability), + equipmentAdjustedCombatAmount( + effect, work.progression.level, work.gearStats, work.classId, ability, holyBlessingSpellPowerBonus, + ), work.talentModifiers, "damage-percent", ability, @@ -6887,7 +9143,9 @@ function executeTriggeredSpellInWork( } } else if (effect.kind === "heal") { const rawAmount = talentAdjustedAmount( - equipmentAdjustedCombatAmount(effect, work.progression.level, work.gearStats, work.classId, ability) + equipmentAdjustedCombatAmount( + effect, work.progression.level, work.gearStats, work.classId, ability, holyBlessingSpellPowerBonus, + ) + Math.round((sourceId === PLAYER_AURA_ENTITY_ID ? work.maxHealth : work.actors[sourceId]?.maxHealth ?? 0) * (effect.percentMaxHealth ?? 0)), @@ -6967,9 +9225,12 @@ function executeTriggeredSpellInWork( )); } } else if (effect.kind === "hot") { + const fallbackRecipients = effect.recipient === "pet" + ? [activeHunterPetId(work.summons, now)].filter((id): id is string => id !== null) + : [targetId && !work.mobs[targetId] ? targetId : sourceId]; const recipients = healingRecipientIds(effect, sourceId, targetId, work.actors, id => id === PLAYER_AURA_ENTITY_ID ? useCombatStore.getState().playerPosition : getPartyRuntimePosition(id) ?? getMobPosition(id), - [targetId && !work.mobs[targetId] ? targetId : sourceId], combatHasLineOfSight, now); + fallbackRecipients, combatHasLineOfSight, now); for (const recipient of recipients) { work.effects.push(timedEffect( "hot", ability.id, source.actorId, recipient, effect, effect.ticks, effect.intervalMs, now, @@ -7566,6 +9827,46 @@ function applyAuraHealthTransitionInWork( previousAuras: readonly ActiveAura[], nextAuras: readonly ActiveAura[], ): void { + if (targetId === PLAYER_AURA_ENTITY_ID) { + const previousMaximum = work.maxResourcePools.energy ?? defaultResourceMaximum("energy"); + const nextMaximum = romRogueEnergyMaximumAfterAuraTransition( + previousMaximum, previousAuras, nextAuras, targetId, + ); + if (nextMaximum !== previousMaximum) { + const current = Math.min(nextMaximum, work.resourcePools.energy ?? 0); + work.maxResourcePools = { ...work.maxResourcePools, energy: nextMaximum }; + work.resourcePools = { ...work.resourcePools, energy: current }; + if (resourceProfileForClass(work.classId).type === "energy") { + work.maxResource = nextMaximum; + work.resource = current; + } + const actor = work.actors[targetId]; + const pool = actor?.resources.energy; + if (actor && pool) work.actors[targetId] = { + ...actor, + resources: { ...actor.resources, energy: { ...pool, current, maximum: nextMaximum } }, + }; + } + } else { + const actor = ensureCompanionActorInWork(work, targetId); + const pool = actor?.resources.energy; + if (actor && pool) { + const maximum = romRogueEnergyMaximumAfterAuraTransition( + pool.maximum, previousAuras, nextAuras, targetId, + ); + if (maximum !== pool.maximum) { + const nextActor = Object.freeze({ + ...actor, + resources: { + ...actor.resources, + energy: { ...pool, maximum, current: Math.min(maximum, pool.current) }, + }, + }); + work.actors[targetId] = nextActor; + mirrorCompanionActor(nextActor); + } + } + } if (targetId === PLAYER_AURA_ENTITY_ID) { const maxHealth = auraAdjustedPlayerMaxHealth( work.classId, @@ -7659,6 +9960,51 @@ function damageCompanionActorInWork(work: MutableCastWork, id: string, amount: n return applied; } +/** Charge the max-health self-cost once from the player's in-flight cast transaction. */ +function applyRomPriestHolyCandleInWork( + work: MutableCastWork, + ownerActorId: string, + healingAbilityId: string, + now: number, +): boolean { + if (ownerActorId !== PLAYER_AURA_ENTITY_ID || work.classId !== "rom-priest" + || work.secondaryClassId !== null) return false; + const lastChargeAt = work.romPriestHolyCandleLastChargeAt?.[ownerActorId] ?? null; + const amount = romPriestHolyCandleSelfDamageAmount( + work.maxHealth, + romPriestHolyCandleIsActive(aurasForEntity(work.auras, ownerActorId, now)), + now, + lastChargeAt, + ); + const applied = Math.min(work.health, amount); + if (applied <= 0) return false; + work.health -= applied; + work.progression.health = work.health; + work.actors[ownerActorId] = { + ...work.actors[ownerActorId]!, + health: work.health, + alive: work.health > 0, + }; + work.romPriestHolyCandleLastChargeAt = { + ...(work.romPriestHolyCandleLastChargeAt ?? {}), + [ownerActorId]: now, + }; + recordCombatEventInWork(work, { + occurredAt: now, + kind: "damage", + sourceActorId: ownerActorId, + targetActorId: ownerActorId, + abilityId: healingAbilityId, + school: "holy", + rawAmount: amount, + effectiveAmount: applied, + overheal: 0, + absorbed: 0, + critical: false, + }); + return true; +} + function clearCompanionControlInWork(work: MutableCastWork, id: string): boolean { const actor = ensureCompanionActorInWork(work, id); if (!actor || actor.controlledUntil <= 0) return false; @@ -7819,6 +10165,8 @@ function initialState() { pendingGroundTarget: null, actors: {}, combatEvents: [], + romPriestHolyCandleLastChargeAt: {}, + romMageDruidGreenGuardianStationaryProgress: {}, feedback: null, lastCombatResult: null, bossLootRewards: [] as readonly BossLootReward[], @@ -8404,6 +10752,7 @@ export const useCombatStore = create((set, get) => ({ setPlayerPosition: (position) => set((state) => { const next: CombatPosition = [position[0], position[1], position[2]]; + const cancellationAt = combatNow(); const movementLocked = state.auras.some((aura) => ( aura.targetId === PLAYER_AURA_ENTITY_ID && (aura.expiresAt === null || aura.expiresAt > combatNow()) @@ -8420,12 +10769,15 @@ export const useCombatStore = create((set, get) => ({ + (next[2] - state.playerPosition[2]) ** 2 ) <= 1e-8; if (positionUnchanged && !movedWhileCasting) return state; - if (movedWhileCasting) emitPlayerAbilityCancellation(cast!.abilityId, combatNow(), next); + if (movedWhileCasting) emitPlayerAbilityCancellation(cast!.abilityId, cancellationAt, next); return { playerPosition: next, activeCast: movedWhileCasting ? null : cast, + ...(movedWhileCasting && cast + ? romPriestChampionRageControlAwardPatch(state, cast, cancellationAt) + : {}), combatEvents: movedWhileCasting ? recordCombatEvent(state.combatEvents, { - occurredAt: combatNow(), + occurredAt: cancellationAt, kind: "interrupt", sourceActorId: PLAYER_AURA_ENTITY_ID, targetActorId: PLAYER_AURA_ENTITY_ID, @@ -8682,7 +11034,7 @@ export const useCombatStore = create((set, get) => ({ )); if (!petEffects.length) continue; const hasActivePet = get().summons.some((summon) => { - if (summon.ownerActorId !== source.id || summon.expiresAt <= now) return false; + if (summon.ownerActorId !== source.id || summon.health <= 0 || summon.expiresAt <= now) return false; const summonAbility = abilityById(summon.sourceAbilityId); return summonAbility?.effects.some((effect) => effect.kind === "pet" && ["summon", "call", "resurrect", "tame"].includes(effect.action)) ?? false; @@ -8731,7 +11083,9 @@ export const useCombatStore = create((set, get) => ({ const completingCast = request.completingCast ?? legacyCompletingCast; const state = get(); const party = usePartyStore.getState(); - const catalogAbility = abilityById(abilityId); + const catalogAbility = state.classId.startsWith("rom-") + ? state.abilities.find((candidate) => candidate.id === abilityId) ?? abilityById(abilityId) + : abilityById(abilityId); const talentNodeId = catalogAbility ? abilityTalentNodeId(catalogAbility) : null; const learnedTalentRank = catalogAbility ? learnedAbilityRank(catalogAbility, state.talentRanks) : undefined; let ability = catalogAbility @@ -8740,6 +11094,12 @@ export const useCombatStore = create((set, get) => ({ const suddenDoomFreeDeathCoil = request[WOW335_DEATH_KNIGHT_SUDDEN_DOOM_FREE_CAST] === true && ability?.id === WOW335_DEATH_KNIGHT_SUDDEN_DOOM_DEATH_COIL_ABILITY_ID; const activePlayerAuras = aurasForEntity(state.auras, PLAYER_AURA_ENTITY_ID); + const druidMasterShapeshifterHealingModifiers = state.classId === "druid" + ? wow335DruidMasterShapeshifterModifiersForForm( + state.talentRanks[WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID] ?? 0, + wow335DruidShapeshiftFormForAuras(state.auras, PLAYER_AURA_ENTITY_ID, now), + ).filter((modifier) => modifier.kind === "healing-percent") + : []; const rimeReadyAura = state.classId === "death-knight" && ability?.name === "Howling Blast" ? activePlayerAuras.find((aura) => aura.definition.utilityTags?.includes(WOW335_DEATH_KNIGHT_RIME_READY_TAG) && (aura.expiresAt === null || aura.expiresAt > now)) @@ -8774,6 +11134,16 @@ export const useCombatStore = create((set, get) => ({ && learnedAbilityForBuild(candidate, state.level, state.talentRanks) !== null) .map((candidate) => candidate.dbcSpellId) : []; + const romKnightCompassionPassiveSpellIds = state.classId === "rom-knight" + && state.secondaryClassId === "rom-priest" + ? state.abilities.filter((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-knight" + && candidate.secondaryClassId === "rom-priest" + && candidate.dbcSpellId === 491635 + && candidate.passive + && learnedAbilityForBuild(candidate, state.level, state.talentRanks) !== null) + .map((candidate) => candidate.dbcSpellId) + : []; const romMageWarriorMeditationPathPassiveSpellIds = state.classId === "rom-mage" && state.secondaryClassId === "rom-warrior" ? state.abilities.filter((candidate) => candidate.source === "runewaker" @@ -8786,6 +11156,14 @@ export const useCombatStore = create((set, get) => ({ const warriorAdjustment = ability ? romWarriorAbilityAdjustment(ability, romWarriorPassiveSpellIds) : { rageCostReduction: 0, cooldownReductionMs: 0 }; + const warriorDruidWhirlwindAdjustment = ability + ? romWarriorDruidWhirlwindAdjustment({ + classId: state.classId, + secondaryClassId: state.secondaryClassId, + learnedPassiveSpellIds: romWarriorPassiveSpellIds, + ability, + }) + : { rageCostReduction: 0, cooldownReductionMs: 0 }; const knightWarriorWhirlwindAdjustment = ability ? romKnightWarriorWhirlwindAdjustment( state.classId, @@ -8794,6 +11172,14 @@ export const useCombatStore = create((set, get) => ({ romKnightWarriorPassiveSpellIds, ) : { rageCostReduction: 0, cooldownReductionMs: 0 }; + const knightCompassionCooldownReductionMs = ability + ? romKnightCompassionWhirlwindShieldCooldownReductionMs( + state.classId, + state.secondaryClassId, + ability, + romKnightCompassionPassiveSpellIds, + ) + : 0; const rogueShadowWalkerPassiveSpellIds = state.classId === "rom-rogue" && state.secondaryClassId === "rom-priest" ? state.abilities.filter((candidate) => candidate.source === "runewaker" && candidate.classId === "rom-rogue" @@ -8812,6 +11198,24 @@ export const useCombatStore = create((set, get) => ({ rogueShadowWalkerPassiveSpellIds, ) : { allowsCombatUse: false, energyCostReduction: 0, cooldownIncreaseMs: 0 }; + const rogueCoercePassiveSpellIds = state.classId === "rom-rogue" && state.secondaryClassId === "rom-scout" + ? state.abilities.filter((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-rogue" + && candidate.secondaryClassId === "rom-scout" + && candidate.passive + && candidate.dbcSpellId === ROM_ROGUE_COERCE_PASSIVE_SPELL_ID + && (candidate.sourceUnlockLevel ?? candidate.unlockLevel) <= state.level) + .map((candidate) => candidate.dbcSpellId) + : []; + const rogueCoerceAdjustment = ability + ? romRogueCoerceAbilityAdjustment( + state.classId, + state.secondaryClassId, + ability.source, + ability.dbcSpellId, + rogueCoercePassiveSpellIds, + ) + : { allowsCombatUse: false, energyCostReduction: 0, cooldownIncreaseMs: 0 }; const flameFollowerCooldownReduction = ability?.source === "runewaker" && ability.dbcSpellId === 490204 && activePlayerAuras.some((aura) => aura.definition.utilityTags?.includes(ROM_MAGE_WARLOCK_PASSIVE_TAGS.flameFollower)) @@ -8819,23 +11223,32 @@ export const useCombatStore = create((set, get) => ({ : 0; if (ability && (warriorAdjustment.rageCostReduction > 0 || warriorAdjustment.cooldownReductionMs > 0 + || warriorDruidWhirlwindAdjustment.rageCostReduction > 0 + || warriorDruidWhirlwindAdjustment.cooldownReductionMs > 0 || knightWarriorWhirlwindAdjustment.rageCostReduction > 0 || knightWarriorWhirlwindAdjustment.cooldownReductionMs > 0 + || knightCompassionCooldownReductionMs > 0 || rogueShadowWalkerAdjustment.energyCostReduction > 0 || rogueShadowWalkerAdjustment.cooldownIncreaseMs > 0 + || rogueCoerceAdjustment.energyCostReduction > 0 || flameFollowerCooldownReduction > 0)) { const rageCostReduction = warriorAdjustment.rageCostReduction + + warriorDruidWhirlwindAdjustment.rageCostReduction + knightWarriorWhirlwindAdjustment.rageCostReduction; const adjustedCosts = (ability.costs ?? [ability.cost]).map((cost) => cost.resource === "rage" ? { ...cost, amount: Math.max(0, cost.amount - rageCostReduction) } : cost.resource === "energy" - ? { ...cost, amount: Math.max(0, cost.amount - rogueShadowWalkerAdjustment.energyCostReduction) } + ? { ...cost, amount: Math.max(0, cost.amount + - rogueShadowWalkerAdjustment.energyCostReduction + - rogueCoerceAdjustment.energyCostReduction) } : cost); ability = { ...ability, cooldownMs: Math.max(0, ability.cooldownMs - warriorAdjustment.cooldownReductionMs + - warriorDruidWhirlwindAdjustment.cooldownReductionMs - knightWarriorWhirlwindAdjustment.cooldownReductionMs + - knightCompassionCooldownReductionMs - flameFollowerCooldownReduction + rogueShadowWalkerAdjustment.cooldownIncreaseMs), cost: adjustedCosts[0] ?? ability.cost, @@ -8868,7 +11281,7 @@ export const useCombatStore = create((set, get) => ({ && candidate.classId === "rom-priest" && candidate.secondaryClassId === "rom-champion" && candidate.passive - && (candidate.sourceUnlockLevel ?? candidate.unlockLevel) <= state.level) + && learnedAbilityForBuild(candidate, state.level, state.talentRanks) !== null) .map((candidate) => candidate.dbcSpellId); const cooldownOverride = romPriestChampionCooldownOverride(ability, infusedLightPassives); if (cooldownOverride !== null) ability = { ...ability, cooldownMs: cooldownOverride }; @@ -8999,6 +11412,11 @@ export const useCombatStore = create((set, get) => ({ ? wow335ShamanMaelstromWeaponProfile(maelstromWeaponRank) : null; const consumesMaelstromWeapon = Boolean(maelstromWeaponAura && maelstromWeaponProfile); + const maelstromWeaponRankForCast = completingCast?.maelstromWeaponRank ?? maelstromWeaponRank; + const maelstromWeaponStacksConsumed = completingCast?.maelstromWeaponStacksConsumed + ?? (consumesMaelstromWeapon && maelstromWeaponAura && maelstromWeaponProfile + ? Math.min(maelstromWeaponAura.stacks, maelstromWeaponProfile.maxStacks) + : 0); const maelstromWeaponCastTimeReductionPercent = consumesMaelstromWeapon && maelstromWeaponProfile ? wow335ShamanMaelstromWeaponCastTimeReductionPercent(maelstromWeaponProfile, maelstromWeaponAura!.stacks) : 0; @@ -9169,6 +11587,17 @@ export const useCombatStore = create((set, get) => ({ else if (talentNodeId && !learnedTalentRank) failure = "not-learned"; else if (ability.passive) failure = "passive"; else if (ability.effects.every((effect) => effect.kind === "scripted" || effect.kind === "unsupported")) failure = "unsupported"; + else if (ability.source === "runewaker" && ability.classId === "rom-warlock" + && ability.secondaryClassId === "rom-mage" && ability.dbcSpellId === 498710 + && !romWarlockMageSoulBrandStingHasWillpowerBladeState(activePlayerAuras.filter((aura) => ( + aura.expiresAt === null || aura.expiresAt > now + )))) failure = "condition-not-met"; + else if (state.classId === "warrior" && ability.name === "Victory Rush" + && !activePlayerAuras.some((aura) => ( + (aura.expiresAt === null || aura.expiresAt > now) + && (aura.definition.utilityTags?.includes(WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG) + || aura.definition.utilityTags?.includes(WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG)) + ))) failure = "condition-not-met"; else if (!isAbilityUnlocked(ability, state.level)) failure = "level-locked"; else if (!romPriestWarriorStanceUseAllowed(ability, activePlayerAuraTags)) failure = "condition-not-met"; else if (state.classId === "warlock" && ability @@ -9218,6 +11647,8 @@ export const useCombatStore = create((set, get) => ({ && Object.values(state.mobs).some((mob) => mob.engaged && !mob.dead)) failure = "condition-not-met"; else if (ability.name === "Enraged Regeneration" && !state.auras.some((aura) => consumableEnrage(aura, PLAYER_AURA_ENTITY_ID, now))) failure = "condition-not-met"; + else if (state.classId === "hunter" && ability.name === "Revive Pet" + && !state.summons.some((summon) => summon.id.startsWith("player-pet-") && summon.health <= 0)) failure = "condition-not-met"; else if (state.classId === "hunter" && ["Bestial Wrath", "Intimidation", "Kill Command", "Mend Pet"].includes(ability.name) && !activeHunterPetId(state.summons, now)) failure = "condition-not-met"; @@ -9225,7 +11656,7 @@ export const useCombatStore = create((set, get) => ({ && !deepFreezeTargetIsFrozen && !fingersOfFrostAura) failure = "condition-not-met"; else if (state.classId === "death-knight" && ability.name === "Blood Tap" && !canActivateDeathKnightBloodTapRune(state.deathKnightRunes, now)) failure = "not-enough-runes"; - else if (costs.some((cost) => cost.resource === "health" + else if (costsToSpend.some((cost) => cost.resource === "health" ? state.health <= cost.amount : (cost.resource === resourceProfileForClass(state.classId).type ? state.resource @@ -9308,7 +11739,10 @@ export const useCombatStore = create((set, get) => ({ && !aurasForEntity(state.auras, targetId).some((aura) => ( (aura.expiresAt === null || aura.expiresAt > now) && aura.definition.utilityTags?.includes(requiredTargetStateTag) - ))) failure = "condition-not-met"; + )) && !state.effects.some((effect) => effect.kind === "dot" + && effect.targetId === targetId + && effect.remainingTicks > 0 + && effect.tag === requiredTargetStateTag)) failure = "condition-not-met"; if (!failure && state.classId === "rom-rogue" && state.secondaryClassId === "rom-mage" && ability?.source === "runewaker" && ability.dbcSpellId === 497206 && !activePlayerAuras.some((aura) => aura.definition.utilityTags?.includes(ROM_ROGUE_INSTANT_SHADOW_READY_TAG))) { @@ -9412,13 +11846,11 @@ export const useCombatStore = create((set, get) => ({ && ability.dbcSpellId === 492924 && !hasRuneWakerState("rom-491552")) failure = "condition-not-met"; if (ability.dbcSpellId === 491613 && family !== "undead" && family !== "demon" && !hasRuneWakerState("rom-evil-shackles")) failure = "condition-not-met"; - if (ability.dbcSpellId === 490347 && family === "undead") failure = "condition-not-met"; if (ability.dbcSpellId === 492920 && !state.effects.some((effect) => effect.kind === "dot" && effect.targetId === targetId && effect.remainingTicks > 0 && effect.sourceAbilityId === "rom-rogue-rom-warrior-elite-35")) failure = "condition-not-met"; if (ability.dbcSpellId === 490151 && (!targetId || state.comboTargetId !== targetId || state.comboPoints <= 0)) failure = "condition-not-met"; - if (ability.dbcSpellId === 490347 && !hasRuneWakerState("rom-poisonous")) failure = "condition-not-met"; if (ability.dbcSpellId === 490311 || romAbilityNeedsShield(ability) || romAbilityNeedsTwoHand(ability) || romAbilityNeedsRangedWeapon(ability)) { const loadout = resolvedEquipmentLoadout(state.equipment, state.inventory, { ownerId: PLAYER_EQUIPMENT_OWNER_ID, @@ -9483,6 +11915,9 @@ export const useCombatStore = create((set, get) => ({ set({ feedback: nextFeedback("error", castFailureMessage(reason, state.resourceName, ability?.unlockLevel), { abilityId }), ...autoAttackUpdate, + ...(completingCast + ? romPriestChampionRageControlAwardPatch(state, completingCast, now) + : {}), ...(completingCast ? { activeCast: null, playerAnimationEvent: nextAnimationEvent("ability-cancel", abilityId) } : {}), @@ -9561,6 +11996,7 @@ export const useCombatStore = create((set, get) => ({ const romMageSpellHasteModifiers: readonly TalentModifier[] = state.classId === "rom-mage" ? activePlayerAuras.flatMap((aura) => { if (aura.expiresAt !== null && aura.expiresAt <= now) return []; + if (aura.definition.utilityTags?.includes(ROM_DRUID_MAGE_INSPIRATION_AURA_TAG)) return []; const spellHaste = (aura.definition.modifiers ?? []) .filter((modifier) => modifier.kind === "stat" && modifier.stat === "spell-haste" && modifier.operation === "flat") .reduce((total, modifier) => total + modifier.value * (modifier.perStack === false ? 1 : aura.stacks), 0); @@ -9576,6 +12012,38 @@ export const useCombatStore = create((set, get) => ({ }]; }) : []; + const romDruidMageInspirationSpellHastePercent = romDruidMageInspirationHastePercent( + activePlayerAuras, + PLAYER_AURA_ENTITY_ID, + now, + ); + const romDruidMageInspirationSpellHasteModifier: readonly TalentModifier[] = romDruidMageInspirationSpellHastePercent > 0 + ? [{ + kind: "haste-percent", + amount: romDruidMageInspirationSpellHastePercent, + unit: "percent", + scope: "your spells", + sourceTalentId: "rom-druid-mage-inspiration", + sourceTalentName: "Inspiration", + rank: Math.floor(romDruidMageInspirationSpellHastePercent / 2), + description: `Inspiration increases casting speed by ${romDruidMageInspirationSpellHastePercent}%.`, + }] + : []; + const activeNetherwindPresenceHastePercent = state.classId === "mage" + ? wow335MageNetherwindPresenceHastePercent(activePlayerAuras, PLAYER_AURA_ENTITY_ID, now) + : 0; + const wow335MageNetherwindPresenceHasteModifier: readonly TalentModifier[] = activeNetherwindPresenceHastePercent > 0 + ? [{ + kind: "haste-percent", + amount: activeNetherwindPresenceHastePercent, + unit: "percent", + scope: "your spells", + sourceTalentId: WOW335_MAGE_NETHERWIND_PRESENCE_TALENT_ID, + sourceTalentName: "Netherwind Presence", + rank: mageTalentRank(state.talentRanks, "Netherwind Presence", 3), + description: `Netherwind Presence increases spell haste by ${activeNetherwindPresenceHastePercent}%.`, + }] + : []; const warlockSpellHasteModifier = state.classId === "warlock" && abilityAttackKind(state.classId, ability) === "spell" ? warlockDeathGraspSpellHasteModifier(warlockTalentRank(state.talentRanks, "Death's Grasp", 3)) @@ -9607,6 +12075,8 @@ export const useCombatStore = create((set, get) => ({ description: "Eradication increases spell casting speed for 10 seconds.", }] : []), ...romMageSpellHasteModifiers, + ...romDruidMageInspirationSpellHasteModifier, + ...wow335MageNetherwindPresenceHasteModifier, ]; const romSniperCastTimeReductionMs = ability.source === "runewaker" && state.classId === "rom-scout" @@ -9667,12 +12137,16 @@ export const useCombatStore = create((set, get) => ({ state.level, state.abilities, ); + const energizedHandsCooldownReductionMs = romRogueEnergizedHandsActive( + activePlayerAuras, PLAYER_AURA_ENTITY_ID, now, + ) ? ROM_ROGUE_ENERGIZED_HANDS_COOLDOWN_REDUCTION_MS : 0; const cooldownMs = consumesHunterLockAndLoad ? 0 : Math.max(0, talentAdjustedCooldown(ability, modifiers) - improvedRuneTapRank * 10_000 - improvedWhirlwindRank * 1_000 - reverberationCooldownReductionMs - - romMageChampionCooldownReductionMs); + - romMageChampionCooldownReductionMs + - energizedHandsCooldownReductionMs); const activeResourceType = resourceProfileForClass(state.classId).type; const spentPools: Partial> = { ...state.resourcePools, @@ -9687,9 +12161,44 @@ export const useCombatStore = create((set, get) => ({ if (cost.amount > 0) lastResourceSpentAt[cost.resource] = now; } } + const romDruidMageInspirationLearned = isRomDruidMagePair(state) + && state.abilities.some((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-druid" + && candidate.secondaryClassId === "rom-mage" + && candidate.passive + && candidate.dbcSpellId === ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID + && learnedAbilityForBuild(candidate, state.level, state.talentRanks) !== null); + const applyRomDruidMageInspirationSpend = (spentNaturePower: number): void => { + if (!romDruidMageInspirationLearned || !(spentNaturePower > 0)) return; + const candidates = [ + { + id: PLAYER_AURA_ENTITY_ID, + position: playerOrigin, + living: work.health > 0, + }, + ...usePartyStore.getState().members.map((member) => ({ + id: member.id, + position: getPartyRuntimePosition(member.id), + living: member.health > 0, + })), + ]; + const recipients = romDruidMageInspirationRecipientIds(playerOrigin, candidates); + work.auras = [...romDruidMageInspirationApplySpendStack( + work.auras, + PLAYER_AURA_ENTITY_ID, + recipients, + now, + )]; + }; + applyRomDruidMageInspirationSpend(costsToSpend + .filter((cost) => cost.resource === "nature-power" && cost.amount > 0) + .reduce((total, cost) => total + cost.amount, 0)); const spentRunes = runeCost && completingCast?.mode !== "channel" ? spendDeathKnightRunes(state.deathKnightRunes, runeCost, now) : state.deathKnightRunes; + const spentDeathKnightRuneSlots = state.classId === "death-knight" && spentRunes + ? wow335DeathKnightSpentRuneSlots(state.deathKnightRunes, spentRunes, now) + : Object.freeze([] as number[]); const activeResourceAfterCosts = spentPools[activeResourceType] ?? state.resource - resourceCost; if (!completingCast && castTimeMs > 0) { castSequence += 1; @@ -9719,9 +12228,16 @@ export const useCombatStore = create((set, get) => ({ ticksCompleted: 0, nextTickAt: ability.castMode === "channel" ? channelPulseAt(ability, now, castTimeMs, 0) : 0, ...(consumesTidalWaves ? { tidalWavesChargesConsumed: tidalWavesChargesForCast } : {}), + ...(consumesMaelstromWeapon ? { + maelstromWeaponRank, + maelstromWeaponStacksConsumed, + } : {}), ...(mageArcanePotencyCriticalChanceBonusPercent > 0 ? { arcanePotencyCriticalChanceBonusPercent: mageArcanePotencyCriticalChanceBonusPercent } : {}), ...(state.classId === "mage" ? { manaSpent: manaSpentForCast } : {}), + ...(state.classId === "paladin" + ? { illuminationBaseManaCost: abilityAtLevel(abilityById(ability.id) ?? ability, state.level).cost.amount } + : {}), }; const channelCooldowns: Record = { ...state.cooldowns }; if (activeCast.mode === "channel" && cooldownMs > 0) { @@ -9744,12 +12260,44 @@ export const useCombatStore = create((set, get) => ({ const castStartAurasAfterTidalWaves = consumesTidalWaves && shamanTidalWavesAura ? consumeShamanTidalWavesChargeInAuras(castStartAurasAfterOtherConsumes, shamanTidalWavesAura.instanceId) : castStartAurasAfterOtherConsumes; + const bladeBarrierRank = state.talentRanks[WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID] ?? 0; + const bladeBarrierDefinition = activeCast.mode === "channel" + && state.classId === "death-knight" + && spentRunes + && wow335DeathKnightBladeBarrierShouldActivate( + bladeBarrierRank, + state.deathKnightRunes, + spentRunes, + now, + ) + ? wow335DeathKnightBladeBarrierAuraDefinition(bladeBarrierRank) + : null; + const castStartAurasAfterBladeBarrier = bladeBarrierDefinition + ? applyCombatAura(castStartAurasAfterTidalWaves, { + definition: bladeBarrierDefinition, + sourceId: PLAYER_AURA_ENTITY_ID, + targetId: PLAYER_AURA_ENTITY_ID, + now, + }).auras + : castStartAurasAfterTidalWaves; + const castStartAurasAfterNetherwindPresence = state.classId === "mage" + ? wow335MageNetherwindPresenceAurasAfterCast( + castStartAurasAfterBladeBarrier, + PLAYER_AURA_ENTITY_ID, + PLAYER_AURA_ENTITY_ID, + state.talentRanks[WOW335_MAGE_NETHERWIND_PRESENCE_TALENT_ID] ?? 0, + ability.name, + now, + ) + : castStartAurasAfterBladeBarrier; set({ activeCast, ...(lastPrayerReady || consumesWarlockBacklash || consumesMaelstromWeapon || consumesTidalWaves || consumesWarlockBackdraft || consumesMageArcanePotency + || Boolean(bladeBarrierDefinition) + || castStartAurasAfterNetherwindPresence !== castStartAurasAfterBladeBarrier || (activeCast.mode === "channel" && (consumesMageArcaneConcentration || consumesMageMissileBarrage)) - ? { auras: castStartAurasAfterTidalWaves } + ? { auras: castStartAurasAfterNetherwindPresence } : {}), ...autoAttackUpdate, playerAnimationEvent: nextAnimationEvent("ability-start", ability.id), @@ -9802,6 +12350,7 @@ export const useCombatStore = create((set, get) => ({ summons: [...state.summons], areaEffects: [...state.areaEffects], combatEvents: [...state.combatEvents], + romPriestHolyCandleLastChargeAt: { ...state.romPriestHolyCandleLastChargeAt }, actors: { ...combatActorSnapshots(state) }, cooldowns: { ...state.cooldowns }, health: healthAfterCosts, @@ -9826,6 +12375,35 @@ export const useCombatStore = create((set, get) => ({ raceId: state.raceId, secondaryClassId: state.secondaryClassId, }; + if (state.classId === "mage" && !completingCast) { + work.auras = [...wow335MageNetherwindPresenceAurasAfterCast( + work.auras, + PLAYER_AURA_ENTITY_ID, + PLAYER_AURA_ENTITY_ID, + state.talentRanks[WOW335_MAGE_NETHERWIND_PRESENCE_TALENT_ID] ?? 0, + ability.name, + now, + )]; + } + if (state.classId === "death-knight" && spentRunes + && wow335DeathKnightBladeBarrierShouldActivate( + state.talentRanks[WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID] ?? 0, + state.deathKnightRunes, + spentRunes, + now, + )) { + const definition = wow335DeathKnightBladeBarrierAuraDefinition( + state.talentRanks[WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID] ?? 0, + ); + if (definition) { + work.auras = [...applyCombatAura(work.auras, { + definition, + sourceId: PLAYER_AURA_ENTITY_ID, + targetId: PLAYER_AURA_ENTITY_ID, + now, + }).auras]; + } + } if (consumesRimeReady && rimeReadyAura) { work.auras = work.auras.filter((aura) => aura.instanceId !== rimeReadyAura.instanceId); } @@ -10014,11 +12592,12 @@ export const useCombatStore = create((set, get) => ({ const damageSchool = abilityDamageSchool(state.classId, ability); const attackKind = abilityAttackKind(state.classId, ability); let playerPositionAfterEffects: CombatPosition = state.playerPosition; + let playerRelocationAfterEffects: { readonly position: CombatPosition; readonly yaw: number } | null = null; let clearedPlayerControl = ability.name === "Vanish" && state.controlledUntil > now && (state.controlMechanic === "root" || state.controlMechanic === "slow"); const cooldownAdjustments: Array> = []; - const romMainHand = ability.source === "runewaker" && state.classId === "rom-rogue" + const romMainHand = ability.source === "runewaker" ? resolvedEquipmentLoadout(state.equipment, state.inventory, { ownerId: PLAYER_EQUIPMENT_OWNER_ID, ownerKind: "player", @@ -10070,10 +12649,19 @@ export const useCombatStore = create((set, get) => ({ && (candidate.sourceUnlockLevel ?? candidate.unlockLevel) <= work.progression.level) .map((candidate) => candidate.dbcSpellId) : []; - const learnedRomWarlockPriestPassiveSpellIds = state.classId === "rom-warlock" && state.secondaryClassId === "rom-priest" + const learnedRomPriestWarriorCondensedRageSpellIds = state.classId === "rom-priest" + && state.secondaryClassId === "rom-warrior" + && work.abilities.some((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-priest" + && candidate.secondaryClassId === "rom-warrior" + && candidate.dbcSpellId === 493038 + && learnedAbilityForBuild(candidate, work.progression.level, state.talentRanks) !== null) + ? [493038] + : []; + const learnedRomWarlockPassiveSpellIds = state.classId === "rom-warlock" && state.secondaryClassId ? work.abilities.filter((candidate) => candidate.source === "runewaker" && candidate.classId === "rom-warlock" - && candidate.secondaryClassId === "rom-priest" + && candidate.secondaryClassId === state.secondaryClassId && candidate.passive && (candidate.sourceUnlockLevel ?? candidate.unlockLevel) <= work.progression.level) .map((candidate) => candidate.dbcSpellId) @@ -10083,6 +12671,7 @@ export const useCombatStore = create((set, get) => ({ bleedCount: romTargetBleedCount(state.effects, PLAYER_AGGRO_ID, targetId), charged: hasRuneWakerState("rom-charged"), mainHandDagger: romMainHand?.weaponType === "dagger", + mainHandTwoHandHammer: romMainHand?.inventorySlot === "two-hand" && romMainHand.weaponType === "mace", casterMaxHealth: state.maxHealth, targetHealthPercent: targetId && state.mobs[targetId] ? state.mobs[targetId]!.health / Math.max(1, state.mobs[targetId]!.maxHealth) @@ -10091,13 +12680,16 @@ export const useCombatStore = create((set, get) => ({ && romFriendlyMaxHealth !== null ? romFriendlyHealth / Math.max(1, romFriendlyMaxHealth) : 1, + selectedTargetRelationship: effectiveTarget === "friendly" ? "friendly" : "hostile", slashBleed: romTargetHasSlashBleed(work.effects, targetId), naturePower: state.resourcePools["nature-power"] ?? 0, + defaultDamageIsPhysical: damageSchool === "physical", learnedPassiveSpellIds: [ ...romWarriorPassiveSpellIds, ...learnedRomPriestPassiveSpellIds, ...learnedRomPriestChampionPassiveSpellIds, - ...learnedRomWarlockPriestPassiveSpellIds, + ...learnedRomPriestWarriorCondensedRageSpellIds, + ...learnedRomWarlockPassiveSpellIds, ], passiveTags: work.auras.filter((aura) => aura.targetId === PLAYER_AURA_ENTITY_ID) .flatMap((aura) => aura.definition.utilityTags ?? []), @@ -10127,21 +12719,14 @@ export const useCombatStore = create((set, get) => ({ : effect); work.resourcePools = { ...work.resourcePools, rage: 0 }; } - if (state.classId === "rom-warlock" && ability.source === "runewaker" - && ability.dbcSpellId === 498642 && state.secondaryClassId === "rom-warrior") { - const rage = work.resourcePools.rage ?? 0; - const psiGain = Math.floor(rage / 35); - const maximumPsi = work.maxResourcePools.psi ?? defaultResourceMaximum("psi"); - work.resourcePools = { - ...work.resourcePools, - rage: 0, - psi: clamp((work.resourcePools.psi ?? 0) + psiGain, 0, maximumPsi), - }; - } if (state.classId === "mage") { const empoweredFireRank = state.talentRanks[WOW335_MAGE_EMPOWERED_FIRE_TALENT_ID] ?? 0; castEffects = castEffects.map((effect) => wow335MageEmpoweredFireEffect(ability.name, effect, empoweredFireRank)); } + if (state.classId === "death-knight") { + const epidemicRank = state.talentRanks[WOW335_DEATH_KNIGHT_EPIDEMIC_TALENT_ID] ?? 0; + castEffects = castEffects.map((effect) => wow335DeathKnightEpidemicDotEffect(effect, epidemicRank)); + } const warlockStateRefreshTags = romWarlockStateRefreshTags(ability, romCastTargetTags); if (targetId && warlockStateRefreshTags.length) { const refreshTagSet = new Set(warlockStateRefreshTags); @@ -10190,12 +12775,39 @@ export const useCombatStore = create((set, get) => ({ const effectsToResolve = completingCast?.mode === "channel" ? castEffects.filter((effect) => !["damage", "heal", "dot", "hot", "resource-drain"].includes(effect.kind)) : castEffects; + const holyBlessingSpellPowerBonus = state.classId === "rom-priest" + ? romPriestHolyBlessingStats( + playerCharacterStats( + state.classId, + state.level, + state.gearStats, + state.raceId, + state.secondaryClassId, + modifiers, + ), + aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID, now), + ).spellPowerBonus + : 0; + const playerCurrentIntellect = applyAuraStats( + playerCharacterStats( + state.classId, + work.progression.level, + work.gearStats, + state.raceId, + state.secondaryClassId, + modifiers, + ), + aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID, now), + ).intellect; const divineFavorReady = state.classId === "paladin" && ["Flash of Light", "Holy Light", "Holy Shock"].includes(ability.name) && work.auras.some((aura) => aura.targetId === PLAYER_AURA_ENTITY_ID && aura.definition.utilityTags?.includes("wow335-divine-favor-next-holy-heal") && (aura.expiresAt === null || aura.expiresAt > now)); - const curingShotRecipients = ability.dbcSpellId === 492636 + const curingShotRecipients = ability.source === "runewaker" + && ability.classId === "rom-priest" + && ability.secondaryClassId === "rom-scout" + && ability.dbcSpellId === 492636 ? (() => { const partyMembers = usePartyStore.getState().members.filter((member) => member.health > 0); const friendlySummons = work.summons.filter((summon) => summon.health > 0); @@ -10217,7 +12829,7 @@ export const useCombatStore = create((set, get) => ({ && combatHasLineOfSight(playerOrigin, position)); }) .sort((left, right) => Number(right === targetId) - Number(left === targetId) || left.localeCompare(right)) - .slice(0, targeting?.maximumTargets ?? 5); + .slice(0, targeting?.maximumTargets ?? candidates.length); })() : null; const areaFriendlyRecipients = targeting?.shape === "circle" && effectiveTarget !== "hostile" @@ -10250,6 +12862,7 @@ export const useCombatStore = create((set, get) => ({ let clearedSingleTargetControls = false; let missileBarrageSlowCastChecked = false; let abilityFeedback: { kind: CombatFeedbackKind; message: string } | null = null; + let romPriestHolyCandleChargedForCast = completingCast?.romPriestHolyCandleCharged ?? false; const shamanLavaLashOffhandSpeedMs = state.classId === "shaman" && ability.name === "Lava Lash" ? playerEquippedMeleeWeapon(state, "off-hand")?.speedMs : undefined; @@ -10257,9 +12870,54 @@ export const useCombatStore = create((set, get) => ({ ? playerEquippedMeleeWeapon(state, "off-hand") : null; let shamanTidalWavesProcAttempted = false; + const landedDirectHitTargetIdsForCast = new Set(); + const criticalDirectHitTargetIdsForCast = new Set(); const combatEventIdBeforeAbilityEffects = work.combatEvents.at(-1)?.id ?? 0; let suddenDoomTrigger: ReturnType = null; + let romBeaconHealTriggeredForCast = false; + let deathKnightReapingProcAttemptedForCast = false; + let deathKnightRuneSpendRestoreAttemptedForCast = false; + const attemptDeathKnightReapingOnLandedTrigger = (triggerTargetId: string): void => { + if (state.classId !== "death-knight" || deathKnightReapingProcAttemptedForCast) return; + if (!deathKnightRuneSpendRestoreAttemptedForCast) { + work.deathKnightRunes = wow335DeathKnightReapingRestoreLandedSpend( + work.deathKnightRunes, + spentDeathKnightRuneSlots, + true, + ); + deathKnightRuneSpendRestoreAttemptedForCast = true; + } + // Consume the event opportunity even when its generated rank roll fails; + // multi-packet abilities are a single cast for this talent check. + deathKnightReapingProcAttemptedForCast = true; + const reapingRank = work.talentRanks["talent-2001"] ?? 0; + const shouldProc = wow335DeathKnightReapingShouldProc(reapingRank, { + spellId: ability.dbcSpellId ?? -1, + landed: true, + roll: stableCombatUnit( + `${PLAYER_AGGRO_ID}:${ability.id}:${triggerTargetId}:${now}:wow335-death-knight-reaping`, + ), + }); + if (!shouldProc) return; + const reapingState = wow335DeathKnightReapingStateForRunes(work.deathKnightRunes, now); + const reapingPlan = wow335DeathKnightReapingProcPlan( + reapingRank, + reapingState, + state.deathKnightRunes, + work.deathKnightRunes, + now, + ); + work.deathKnightRunes = wow335DeathKnightReapingApplyProcPlan( + work.deathKnightRunes, + reapingPlan, + ); + }; for (const effect of effectsToResolve) { + if ((effect.kind === "heal" || effect.kind === "apply-aura") + && effect.requiresLandedHit + && landedDirectHitTargetIdsForCast.size === 0) continue; + if (effect.kind === "apply-aura" && effect.requiresCriticalHit + && criticalDirectHitTargetIdsForCast.size === 0) continue; if (state.classId === "warlock" && ability.name === "Seed of Corruption" && effect.kind === "apply-aura" && effect.sourceAuraType === 4) continue; if (state.classId === "hunter" && ability.name === "Explosive Trap" && effect.kind === "dot") continue; @@ -10317,6 +12975,8 @@ export const useCombatStore = create((set, get) => ({ work.gearStats, state.classId, ability, + holyBlessingSpellPowerBonus, + playerCurrentIntellect, ); return Math.round(baseDamage) + (effect.bonusFlat ?? 0); })(), @@ -10345,17 +13005,41 @@ export const useCombatStore = create((set, get) => ({ const sunderStacks = effect.bonusPerSunderStack ? work.auras.find((aura) => aura.targetId === id && aura.definition.id === "wow335:warrior:sunder-armor")?.stacks ?? 0 : 0; + const maelstromWeaponPvpDamageReductionPercent = target?.characterDefender + && attackKind === "spell" + ? wow335ShamanMaelstromWeaponPvpDamageReductionPercent( + maelstromWeaponRankForCast, + maelstromWeaponStacksConsumed, + ability.name, + ) + : 0; + const ownerDirectDamageBeforeMerciless = (mageTargetAmount + + sunderStacks * (effect.bonusPerSunderStack ?? 0)) + * Math.pow(effect.falloffPerJump ?? 1, targetIndex) + * (1 - maelstromWeaponPvpDamageReductionPercent / 100); + const mercilessCombatRank = state.classId === "death-knight" + && ability.classId === "death-knight" + ? work.talentRanks[WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_TALENT_ID] ?? 0 + : 0; + const ownerDirectRawDamage = Math.round(target + ? wow335DeathKnightMercilessCombatDamage( + ownerDirectDamageBeforeMerciless, + mercilessCombatRank, + ability.name, + target.health / target.maxHealth, + ) + : ownerDirectDamageBeforeMerciless); + const directHitSeed = `${castThreatSource.actorId}:${ability.id}:${id}:${now}:direct${effect.weaponHand ? `:${effect.weaponHand}` : ""}`; const result = resolveAndDamageMobInWork( state.classId, work, id, - Math.round((mageTargetAmount + sunderStacks * (effect.bonusPerSunderStack ?? 0)) - * Math.pow(effect.falloffPerJump ?? 1, targetIndex)), + ownerDirectRawDamage, now, castThreatSource, effectSchool === "physical" ? attackKind : "spell", effectSchool, - `${castThreatSource.actorId}:${ability.id}:${id}:${now}:direct${effect.weaponHand ? `:${effect.weaponHand}` : ""}`, + directHitSeed, ability, false, ability.name === "Shiv" || (consumesSurgeOfLight && ability.name === "Smite") @@ -10369,10 +13053,58 @@ export const useCombatStore = create((set, get) => ({ ? shamanStormstrikeOffhandWeapon?.speedMs : shamanLavaLashOffhandSpeedMs, ); + if (effect.kind === "damage") { + maybeResolveShamanLightningOverloadInWork( + work, + id, + ownerDirectRawDamage, + now, + castThreatSource, + ability, + effectSchool, + result.combatResult?.landed ?? result.amount > 0, + Boolean(result.combatResult?.critical), + false, + directHitSeed, + ); + } + if (state.classId === "death-knight" + && effect.kind === "damage" + && id === targetId + && result.combatResult?.landed + && result.amount > 0) { + maybeMirrorDeathKnightDancingRuneWeaponSpellInWork( + work, + id, + result.combatResult.rawDamage ?? ownerDirectRawDamage, + now, + castThreatSource, + ability, + effectSchool, + affectedMobIds.length > 1 || Boolean(ability.radius), + id === targetId, + ); + } + if (effect.kind === "damage" && (result.combatResult?.landed ?? result.amount > 0)) { + landedDirectHitTargetIdsForCast.add(id); + if (result.combatResult?.critical) criticalDirectHitTargetIdsForCast.add(id); + } + if (effect.kind === "damage" && id === targetId + && ability.source === "runewaker" + && ability.dbcSpellId === ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID) { + applyRomCoaExhaustionProcInWork( + work, + ability, + Boolean(result.combatResult?.landed ?? result.amount > 0), + stableCombatUnit(`${PLAYER_AGGRO_ID}:${ability.id}:${id}:${now}:rom-coa-exhaustion`), + now, + ); + } if (state.classId === "death-knight" && effect.kind === "damage" && id === targetId && result.combatResult?.landed) { + attemptDeathKnightReapingOnLandedTrigger(id); suddenDoomTrigger = wow335DeathKnightSuddenDoomTriggerForLandedHit( state.talentRanks["talent-1955"] ?? 0, ability.id, @@ -10429,6 +13161,23 @@ export const useCombatStore = create((set, get) => ({ } if (state.classId === "warlock" && ability.name === "Conflagrate" && result.combatResult?.landed) { + const aftermath = id === targetId + ? warlockAftermathDazeForRank( + warlockTalentRank(work.talentRanks, "Aftermath", 2), + stableCombatUnit(`${PLAYER_AGGRO_ID}:${ability.id}:${id}:${now}:wow335-warlock-aftermath`), + ) + : null; + if (aftermath) { + const currentTarget = work.mobs[id]; + if (currentTarget) { + work.mobs[id] = applyStatus(currentTarget, { + kind: "status", + status: "slow", + durationMs: aftermath.durationMs, + magnitude: aftermath.movementSpeedReductionPercent / 100, + }, ability.id, now, PLAYER_AGGRO_ID); + } + } const consumedDot = activeWarlockConflagrateDot(work.effects, id, PLAYER_AGGRO_ID, now); if (consumedDot) { const consumedName = abilityById(consumedDot.sourceAbilityId)?.name; @@ -10623,6 +13372,10 @@ export const useCombatStore = create((set, get) => ({ healingTargetIds = [...healingRecipientIds(effect, PLAYER_AURA_ENTITY_ID, targetId, work.actors, id => friendlyPosition(id) ?? getMobPosition(id), healingTargetIds, combatHasLineOfSight, now)]; if (targeting?.maximumTargets) healingTargetIds = healingTargetIds.slice(0, targeting.maximumTargets); + if (!romPriestHolyCandleChargedForCast && healingTargetIds.length > 0 + && applyRomPriestHolyCandleInWork(work, PLAYER_AURA_ENTITY_ID, ability.id, now)) { + romPriestHolyCandleChargedForCast = true; + } for (const [targetIndex, healingTargetId] of [...new Set(healingTargetIds)].entries()) { const shamanRiptideHot = state.classId === "shaman" && ability.name === "Chain Heal" @@ -10670,7 +13423,7 @@ export const useCombatStore = create((set, get) => ({ state.classId, swiftmendHotAbility, ), - modifiers, + [...modifiers, ...druidMasterShapeshifterHealingModifiers], "healing-percent", swiftmendHotAbility, true, @@ -10696,11 +13449,12 @@ export const useCombatStore = create((set, get) => ({ ? Math.round(work.totalDamage * effect.percentOfDamage) : equipmentAdjustedCombatAmount( effect, work.progression.level, work.gearStats, state.classId, ability, + holyBlessingSpellPowerBonus, ) + Math.round(healingTargetMaxHealth * (effect.percentMaxHealth ?? 0))) * deathStrikeDiseaseCount) * (1 + runeTapBonus) + tidalWavesBonusHealingAmount; const unmodifiedAmount = talentAdjustedAmount( swiftmendAmount ?? sourceHealAmount, - modifiers, + [...modifiers, ...druidMasterShapeshifterHealingModifiers], "healing-percent", ability, ); @@ -10743,6 +13497,43 @@ export const useCombatStore = create((set, get) => ({ criticalChance, stableCombatUnit(`${PLAYER_AGGRO_ID}:${ability.id}:${healingTargetId}:${now}:heal`), ); + if (state.classId === "paladin" && resolution.critical) { + const sourceAbility = abilityById(ability.id) ?? ability; + const spellBaseManaCost = completingCast?.illuminationBaseManaCost + ?? abilityAtLevel(sourceAbility, work.progression.level).cost.amount; + const illumination = wow335PaladinIlluminationRefundPlan( + work.talentRanks[WOW335_PALADIN_ILLUMINATION_TALENT_ID] ?? 0, + { + casterClassId: state.classId, + abilityId: ability.id, + abilityName: ability.name, + criticalHeal: true, + spellBaseManaCost, + roll: stableCombatUnit(`${PLAYER_AGGRO_ID}:${ability.id}:${healingTargetId}:${now}:wow335-illumination`), + }, + ); + if (illumination) { + const maximum = work.maxResourcePools.mana ?? defaultResourceMaximum("mana"); + const current = work.resourcePools.mana ?? 0; + const restored = Math.min(illumination.manaRefund, Math.max(0, maximum - current)); + if (restored > 0) { + work.resourcePools.mana = current + restored; + if (resourceProfileForClass(work.classId).type === "mana") work.resource = current + restored; + recordCombatEventInWork(work, { + occurredAt: now, + kind: "resource", + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: PLAYER_AURA_ENTITY_ID, + abilityId: ability.id, + rawAmount: illumination.manaRefund, + effectiveAmount: restored, + overheal: illumination.manaRefund - restored, + absorbed: 0, + critical: false, + }); + } + } + } if (resolution.critical && tidalForceAura) { work.auras = work.auras.flatMap((aura) => { if (aura.instanceId !== tidalForceAura.instanceId) return [aura]; @@ -10908,6 +13699,42 @@ export const useCombatStore = create((set, get) => ({ amount: healed, }, now); } + if (!romBeaconHealTriggeredForCast && ability.castMode !== "channel" + && state.classId === "rom-priest" && state.secondaryClassId === "rom-champion") { + romBeaconHealTriggeredForCast = true; + const beaconHeal = resolveRomPriestChampionBeaconFromAuras( + work.auras, PLAYER_AURA_ENTITY_ID, now, "direct-cast", + ); + if (beaconHeal && (beaconHeal.targetId === PLAYER_AURA_ENTITY_ID + || partyMembers.some((member) => member.id === beaconHeal.targetId))) { + const modifiedBeaconAmount = Math.round(resolveAuraHealingValue( + resolveAuraHealingValue( + beaconHeal.amount, + aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID, now), + "done", + ), + aurasForEntity(work.auras, beaconHeal.targetId, now), + "taken", + )); + const healed = beaconHeal.targetId === PLAYER_AURA_ENTITY_ID + ? healPlayerInWork(work, modifiedBeaconAmount) + : healCompanionActorInWork(work, beaconHeal.targetId, modifiedBeaconAmount); + directHealing += healed; + recordCombatEventInWork(work, { + occurredAt: now, + kind: "healing", + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: beaconHeal.targetId, + abilityId: ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_ID, + school: "holy", + rawAmount: modifiedBeaconAmount, + effectiveAmount: healed, + overheal: Math.max(0, modifiedBeaconAmount - healed), + absorbed: 0, + critical: false, + }); + } + } work.totalHealing += directHealing; const beacon = work.auras.find((aura) => ( aura.sourceId === PLAYER_AURA_ENTITY_ID @@ -11025,8 +13852,9 @@ export const useCombatStore = create((set, get) => ({ work.gearStats, state.classId, ability, + holyBlessingSpellPowerBonus, ), - modifiers, + [...modifiers, ...druidMasterShapeshifterHealingModifiers], "healing-percent", ability, ); @@ -11083,6 +13911,66 @@ export const useCombatStore = create((set, get) => ({ } } else if (effect.kind === "resource") { const resource = effect.resource ?? activeResourceType; + if (effect.scope === "party") { + const radius = ability.radius ?? 0; + const recipients = [ + ...(work.health > 0 ? [PLAYER_AURA_ENTITY_ID] : []), + ...usePartyStore.getState().members.filter((member) => { + const actor = work.actors[member.id]; + const position = getPartyRuntimePosition(member.id); + return actor?.alive && position !== null + && distanceSquared(playerOrigin, position) <= radius * radius + && combatHasLineOfSight(playerOrigin, position); + }).map((member) => member.id), + ]; + for (const recipientId of recipients) { + const playerRecipient = recipientId === PLAYER_AURA_ENTITY_ID; + const actor = work.actors[recipientId]; + const pool = playerRecipient ? undefined : actor?.resources[resource]; + const maximum = playerRecipient ? work.maxResourcePools[resource] : pool?.maximum; + const current = playerRecipient ? work.resourcePools[resource] : pool?.current; + // A class can only receive resource types it actually has. Do not + // synthesize a default pool for this multi-resource CoA effect. + if (maximum === undefined || current === undefined) continue; + const requested = effect.percentage ? maximum * effect.amount / 100 : effect.amount; + const restored = Math.max(0, Math.min(requested, maximum - current)); + if (restored <= 0) continue; + const nextCurrent = current + restored; + if (playerRecipient) { + work.resourcePools[resource] = nextCurrent; + if (resource === activeResourceType) work.resource = nextCurrent; + if (actor?.resources[resource]) { + work.actors[recipientId] = { + ...actor, + resources: { + ...actor.resources, + [resource]: { ...actor.resources[resource], current: nextCurrent }, + }, + }; + } + } else if (actor && pool) { + const nextActor = { + ...actor, + resources: { ...actor.resources, [resource]: { ...pool, current: nextCurrent } }, + }; + work.actors[recipientId] = nextActor; + mirrorCompanionActor(nextActor); + } + recordCombatEventInWork(work, { + occurredAt: now, + kind: "resource", + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: recipientId, + abilityId: ability.id, + rawAmount: requested, + effectiveAmount: restored, + overheal: Math.max(0, requested - restored), + absorbed: 0, + critical: false, + }); + } + continue; + } const friendlyResourceTarget = effectiveTarget === "friendly" && targetId ? usePartyStore.getState().members.find((member) => member.id === targetId) : null; @@ -11225,6 +14113,10 @@ export const useCombatStore = create((set, get) => ({ const recipients = healingRecipientIds(effect, PLAYER_AURA_ENTITY_ID, targetId, work.actors, id => id === PLAYER_AURA_ENTITY_ID ? playerOrigin : getPartyRuntimePosition(id) ?? getMobPosition(id), curingShotRecipients ?? areaFriendlyRecipients ?? [hotTargetId ?? PLAYER_AURA_ENTITY_ID], combatHasLineOfSight, now); + if (!romPriestHolyCandleChargedForCast && recipients.length > 0 + && applyRomPriestHolyCandleInWork(work, PLAYER_AURA_ENTITY_ID, ability.id, now)) { + romPriestHolyCandleChargedForCast = true; + } for (const recipient of recipients) { const normalizedTarget = recipient === PLAYER_AURA_ENTITY_ID ? null : recipient; work.effects = work.effects.filter((entry) => !( @@ -11294,7 +14186,20 @@ export const useCombatStore = create((set, get) => ({ if (state.classId === "rogue" && ability.name === "Kick" && effect.status === "interrupt" && mob.activeCast?.interruptible && !next.activeCast) improvedKickInterruptLanded = true; - work.mobs[id] = next; + const kickSilenceDurationMs = state.classId === "rogue" && ability.name === "Kick" + && effect.status === "interrupt" + ? wow335RogueImprovedKickSilenceDurationMs( + work.talentRanks[WOW335_ROGUE_IMPROVED_KICK_TALENT_ID] ?? 0, + stableCombatUnit(`${PLAYER_AGGRO_ID}:${ability.id}:${id}:${now}:wow335-rogue-improved-kick-silence`), + ) + : 0; + work.mobs[id] = kickSilenceDurationMs > 0 + ? applyStatus(next, { + kind: "status", + status: "silence", + durationMs: kickSilenceDurationMs, + }, ability.id, now, PLAYER_AGGRO_ID) + : next; } } } else if (effect.kind === "apply-aura") { @@ -11320,11 +14225,24 @@ export const useCombatStore = create((set, get) => ({ amount: Math.round(work.maxHealth * absorb.amount), })), } + : state.classId === "mage" + ? wow335MageFrostWardingArmorAuraEffect( + ability, + work.talentRanks[WOW335_MAGE_FROST_WARDING_TALENT_ID] ?? 0, + effect, + ).aura : effect.aura; + const classAdjustedAura = state.classId === "shaman" && ability.name === "Earth Shield" + ? improvedEarthShieldAuraDefinition( + sourceAuraBase, + ability, + shamanTalentRank(work, "Improved Earth Shield", 3), + ) + : sourceAuraBase; const sourceAura = state.classId === "death-knight" && ability.dbcSpellId === WOW335_DEATH_KNIGHT_MARK_OF_BLOOD_SPELL_ID - ? wow335DeathKnightMarkOfBloodAuraDefinition(sourceAuraBase) - : sourceAuraBase; + ? wow335DeathKnightMarkOfBloodAuraDefinition(classAdjustedAura) + : classAdjustedAura; const excludesLiquidationTarget = state.classId === "rom-warlock" && state.secondaryClassId === "rom-rogue" && ability.dbcSpellId === 498695 @@ -11379,8 +14297,15 @@ export const useCombatStore = create((set, get) => ({ : effectiveTarget === "hostile" ? affectedMobIds : [targetId ?? PLAYER_AURA_ENTITY_ID]; - for (const recipientId of recipients.filter((id) => (!effect.excludeCaster || id !== PLAYER_AURA_ENTITY_ID) - && !(excludesLiquidationTarget && targetId && id === targetId))) { + const hitFilteredRecipients = effect.requiresLandedHit && effect.scope !== "party" + && effect.recipient !== "caster" && effect.recipient !== "pet" + ? recipients.filter((id) => landedDirectHitTargetIdsForCast.has(id)) + : recipients; + for (const recipientId of hitFilteredRecipients.filter((id) => (!effect.excludeCaster || id !== PLAYER_AURA_ENTITY_ID) + && !(excludesLiquidationTarget && targetId && id === targetId) + && (!effect.aura.utilityTags?.includes(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG) + || id === PLAYER_AURA_ENTITY_ID + || usePartyStore.getState().members.some((member) => member.id === id)))) { const recipientMaxHealth = recipientId === PLAYER_AURA_ENTITY_ID ? work.maxHealth : usePartyStore.getState().members.find((member) => member.id === recipientId)?.maxHealth @@ -11388,7 +14313,10 @@ export const useCombatStore = create((set, get) => ({ ?? work.actors[recipientId]?.maxHealth ?? onlinePlayerRuntimeActor(recipientId)?.maxHealth ?? work.maxHealth; - const recipientAura = ability.classId === "rom-warden" && ability.dbcSpellId === 498201 + const recipientAura = sourceAura.id === "rom-knight-deadly-wound" + && work.mobs[recipientId]?.characterDefender + ? { ...sourceAura, durationMs: 5_000 } + : ability.classId === "rom-warden" && ability.dbcSpellId === 498201 ? { ...sourceAura, absorbs: sourceAura.absorbs?.map((absorb) => ({ @@ -11397,7 +14325,17 @@ export const useCombatStore = create((set, get) => ({ })), } : sourceAura; - const auraDefinition = auraDefinitionForAbility(recipientAura, ability, durationMs); + const recipientDurationMs = ability.dbcSpellId === 490275 + && work.mobs[recipientId]?.characterDefender + ? romPriestVowOfSilenceDurationMs(true) + : durationMs; + const auraDefinition = auraDefinitionForAbility(recipientAura, ability, recipientDurationMs); + if (effect.aura.utilityTags?.includes(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG)) { + work.auras = work.auras.filter((aura) => !( + aura.sourceId === PLAYER_AURA_ENTITY_ID + && aura.definition.utilityTags?.includes(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG) + )); + } const previousAuras = work.auras; const family = DEFAULT_PARTY_BUFF_FAMILY.get(ability.name.toLowerCase()) ?? ability.id; if (previousAuras.some((aura) => aura.targetId === recipientId @@ -11409,7 +14347,16 @@ export const useCombatStore = create((set, get) => ({ targetId: recipientId, now, }); - work.auras = [...auraResult.auras]; + const startsAtZeroStacks = isRomMageDruidPair({ + classId: state.classId, + secondaryClassId: state.secondaryClassId, + }) && auraDefinition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG) + && recipientId === PLAYER_AURA_ENTITY_ID; + work.auras = startsAtZeroStacks + ? auraResult.auras.map((aura) => aura.instanceId === auraResult.aura.instanceId + ? { ...aura, stacks: 0 } + : aura) + : [...auraResult.auras]; if (state.classId === "mage" && ability.name === "Presence of Mind" && wow335MageArcanePotencyCanProc( mageArcanePotencyRank, @@ -11576,10 +14523,13 @@ export const useCombatStore = create((set, get) => ({ for (const id of affectedMobIds) { const mob = work.mobs[id]; if (mob) { + const lockoutMs = ability.dbcSpellId === 490275 + ? romPriestVowOfSilenceDurationMs(Boolean(mob.characterDefender)) + : effect.lockoutMs; const next = applyStatus(mob, { kind: "status", status: "interrupt", - durationMs: effect.lockoutMs, + durationMs: lockoutMs, }, ability.id, now); if (state.classId === "rogue" && ability.name === "Kick" && mob.activeCast?.interruptible && !next.activeCast) improvedKickInterruptLanded = true; @@ -11589,13 +14539,27 @@ export const useCombatStore = create((set, get) => ({ ability.name, ) : 0; - work.mobs[id] = silenceDurationMs > 0 && next.activeCast === null + let resolved = silenceDurationMs > 0 && next.activeCast === null ? applyStatus(next, { kind: "status", status: "silence", durationMs: silenceDurationMs, }, ability.id, now, PLAYER_AGGRO_ID) : next; + const kickSilenceDurationMs = state.classId === "rogue" && ability.name === "Kick" + ? wow335RogueImprovedKickSilenceDurationMs( + work.talentRanks[WOW335_ROGUE_IMPROVED_KICK_TALENT_ID] ?? 0, + stableCombatUnit(`${PLAYER_AGGRO_ID}:${ability.id}:${id}:${now}:wow335-rogue-improved-kick-silence`), + ) + : 0; + if (kickSilenceDurationMs > 0) { + resolved = applyStatus(resolved, { + kind: "status", + status: "silence", + durationMs: kickSilenceDurationMs, + }, ability.id, now, PLAYER_AGGRO_ID); + } + work.mobs[id] = resolved; } } } else if (effect.kind === "pull") { @@ -11643,7 +14607,10 @@ export const useCombatStore = create((set, get) => ({ ?? (resource === activeResourceType ? work.maxResource : defaultResourceMaximum(resource)); const drainAmount = effect.percentage ? maximum * effect.amount / 100 : effect.amount; if (effect.recipient === "caster") { - work.resourcePools[resource] = Math.max(0, (work.resourcePools[resource] ?? 0) - drainAmount); + const currentResource = work.resourcePools[resource] ?? 0; + const actualDrain = Math.min(currentResource, drainAmount); + work.resourcePools[resource] = Math.max(0, currentResource - drainAmount); + if (resource === "nature-power") applyRomDruidMageInspirationSpend(actualDrain); if (resource === activeResourceType) work.resource = work.resourcePools[resource] ?? work.resource; } else if (ability.target === "hostile") { let drainedFromPlayers = 0; @@ -11696,7 +14663,20 @@ export const useCombatStore = create((set, get) => ({ }; } } else if (effect.kind === "movement") { - if (ability.dbcSpellId === 54785 && targetPosition) { + if (ability.id === "wow335-mage-blink") { + const spatialYaw = combatSpatialActor(PLAYER_AURA_ENTITY_ID)?.yaw; + const gameYaw = useGameStore.getState().cameraYaw; + const yaw = typeof spatialYaw === "number" && Number.isFinite(spatialYaw) + ? spatialYaw + : Number.isFinite(gameYaw) ? gameYaw : 0; + const destination = forwardMovementDestination(state.playerPosition, yaw, effect.distance ?? 0); + if (destination && Math.hypot( + destination[0] - state.playerPosition[0], destination[2] - state.playerPosition[2], + ) > 0.05) { + playerPositionAfterEffects = destination; + playerRelocationAfterEffects = { position: destination, yaw }; + } + } else if (ability.dbcSpellId === 54785 && targetPosition) { const dx = targetPosition[0] - playerOrigin[0]; const dz = targetPosition[2] - playerOrigin[2]; const length = Math.max(0.001, Math.hypot(dx, dz)); @@ -11778,25 +14758,63 @@ export const useCombatStore = create((set, get) => ({ } } else if (effect.kind === "pet") { if (["summon", "call", "recall", "resurrect", "tame"].includes(effect.action)) { - summonSequence += 1; const existingPet = work.summons.find((summon) => summon.id.startsWith("player-pet-")); - if (!existingPet) { + const isHunterPet = state.classId === "hunter" && ability.classId === "hunter"; + const hunterPetOwnerBaseStats = isHunterPet + ? playerCharacterStats( + work.classId, + work.progression.level, + work.gearStats, + work.raceId, + work.secondaryClassId, + work.talentModifiers, + ) + : undefined; + const hunterPetOwnerStats = hunterPetOwnerBaseStats + ? applyAuraStats(hunterPetOwnerBaseStats, aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID)) + : undefined; + const hunterPetProfile = hunterPetOwnerStats + ? wow335HunterPetProfileForLevel(work.progression.level, "wolf", hunterPetOwnerStats) + : undefined; + const hunterPetEffectiveStats = hunterPetProfile?.effectiveStats; + const tameTarget = effect.action === "tame" && targetId ? work.mobs[targetId] : undefined; + if (isHunterPet && effect.action === "resurrect" && existingPet && existingPet.health <= 0) { + work.summons = work.summons.map((summon) => summon.id === existingPet.id + ? { + ...summon, + maxHealth: hunterPetEffectiveStats?.maxHealth ?? summon.maxHealth, + health: Math.max(1, Math.round((hunterPetEffectiveStats?.maxHealth ?? summon.maxHealth) * 0.15)), + attackDamage: hunterPetEffectiveStats?.averageAutoAttackDamage ?? summon.attackDamage, + position: playerOrigin, + targetId: hunterPetProfile ? null : targetId, + nextActionAt: now + 1_000, + ...(hunterPetProfile ? initialHunterPetCombatRuntime(hunterPetProfile, now) : {}), + } + : summon); + } else if (isHunterPet && effect.action === "call" && existingPet && existingPet.health > 0) { + work.summons = work.summons.map((summon) => summon.id === existingPet.id + ? { ...summon, position: playerOrigin, targetId: null } + : summon); + } else if (!existingPet) { + summonSequence += 1; work.summons.push({ id: `player-pet-${summonSequence}`, sourceAbilityId: ability.id, - creatureId: effect.creatureId ?? 1, - targetId, + creatureId: tameTarget?.serverEntry ?? effect.creatureId ?? 1, + targetId: isHunterPet ? null : targetId, expiresAt: Number.MAX_SAFE_INTEGER, kind: "pet", - name: ability.name, + name: isHunterPet ? tameTarget?.name ?? "Wolf" : ability.name, ownerActorId: PLAYER_AGGRO_ID, - health: Math.max(1, Math.round(work.maxHealth * 0.5)), - maxHealth: Math.max(1, Math.round(work.maxHealth * 0.5)), + health: hunterPetEffectiveStats?.maxHealth ?? Math.max(1, Math.round(work.maxHealth * 0.5)), + maxHealth: hunterPetEffectiveStats?.maxHealth ?? Math.max(1, Math.round(work.maxHealth * 0.5)), position: playerOrigin, nextActionAt: now + 1_000, pulseIntervalMs: 2_000, - attackDamage: Math.max(1, Math.round(playerCombatPower(work.progression.level) * 0.35)), + attackDamage: hunterPetEffectiveStats?.averageAutoAttackDamage + ?? Math.max(1, Math.round(playerCombatPower(work.progression.level) * 0.35)), ...initialSummonCombatRuntime(), + ...(hunterPetProfile ? initialHunterPetCombatRuntime(hunterPetProfile, now) : {}), exclusiveGroup: "combat-pet", }); } @@ -11855,6 +14873,36 @@ export const useCombatStore = create((set, get) => ({ attackDamage: 0, ...initialSummonCombatRuntime(), }); + } else if (effect.action === "class-script" + && ability.source === "runewaker" + && ability.dbcSpellId === 494321 + && work.classId === "rom-druid" + && work.secondaryClassId === "rom-rogue" + && effect.triggerSpellId === 494024) { + const poisonAbility = abilityById("rom-druid-rom-rogue-elite-25"); + const poisonEffect = poisonAbility?.effects.find((candidate): candidate is Extract => ( + candidate.kind === "dot" + )); + if (poisonAbility && poisonEffect) { + for (const poisonTargetId of affectedMobIds) { + work.effects = work.effects.filter((active) => !(active.kind === "dot" + && active.targetId === poisonTargetId + && active.tag === poisonEffect.tag)); + work.effects.push(timedEffect( + "dot", + poisonAbility.id, + castThreatSource.actorId, + poisonTargetId, + poisonEffect, + poisonEffect.ticks, + poisonEffect.intervalMs, + now, + poisonEffect.tag, + "shadow", + work.gearStats.spellPenetration, + )); + } + } } else if (effect.action === "class-script" && ability.name === "Tricks of the Trade" && targetId) { const durationMs = Math.max(1_000, effect.durationMs); const targetAura = { @@ -11988,15 +15036,18 @@ export const useCombatStore = create((set, get) => ({ state.classId, work, nextTargetId, amount, now, source, "melee", "physical", seed, ability, ); } else { + const saintsBlessingMultiplier = romPriestScoutSaintsBlessingMultiplierForHit( + work, state.classId, source.actorId, mob, + ); const modifiedAmount = resolveAuraDamageValue(amount, aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID), { direction: "dealt", school: "physical", attackKind: "melee", - }); + }) * saintsBlessingMultiplier; const result = resolvePlayerDamageResult( - state.classId, work, PLAYER_AURA_ENTITY_ID, mob, modifiedAmount, "melee", "physical", seed, ability, + state.classId, work, PLAYER_AURA_ENTITY_ID, now, mob, modifiedAmount, "melee", "physical", seed, ability, ); damageMobInWork( state.classId, work, nextTargetId, amount, now, source, "physical", - work.gearStats.spellPenetration, result, + work.gearStats.spellPenetration, result, undefined, true, ); } } @@ -12017,8 +15068,10 @@ export const useCombatStore = create((set, get) => ({ && diseaseTags.has(entry.tag) && entry.remainingTicks > 0 )); + let didSpreadDisease = false; for (const recipientId of affectedMobIds) { if (recipientId === targetId) continue; + didSpreadDisease = diseases.length > 0 || didSpreadDisease; for (const disease of diseases) { work.effects = work.effects.filter((entry) => !( entry.kind === "dot" @@ -12034,6 +15087,13 @@ export const useCombatStore = create((set, get) => ({ }); } } + if (didSpreadDisease && state.classId === "death-knight") { + // The generated Pestilence action has a class-script utility + // effect, not a damage packet. A successful disease transfer is + // its landed event for Reaping; the per-cast guard prevents one + // proc for every destination enemy. + attemptDeathKnightReapingOnLandedTrigger(targetId); + } } else if (effect.action === "class-script" && ability.name === "Divine Intervention") { work.health = 1; work.progression.health = 1; @@ -12048,8 +15108,26 @@ export const useCombatStore = create((set, get) => ({ } } + if (state.classId === "death-knight" && ability.id === WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID) { + // Keep the sourced 12-second activation without fabricating a separate + // summon's health, attack power, or weapon. Eligible hits below mirror + // the owner's resolved attack payload instead. + work.summons = work.summons.filter((summon) => !( + summon.ownerActorId === PLAYER_AGGRO_ID + && summon.sourceAbilityId === WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID + )); + work.auras = [...applyCombatAura(work.auras, { + definition: WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA, + sourceId: PLAYER_AURA_ENTITY_ID, + targetId: PLAYER_AURA_ENTITY_ID, + now, + }).auras]; + } + if (improvedKickInterruptLanded) { - const kickBonus = wow335RogueImprovedKickAuraEffectForRank(work.talentRanks["talent-206"] ?? 0); + const kickBonus = wow335RogueImprovedKickAuraEffectForRank( + work.talentRanks[WOW335_ROGUE_IMPROVED_KICK_TALENT_ID] ?? 0, + ); if (kickBonus) { work.auras = [...applyCombatAura(work.auras, { definition: kickBonus.aura, @@ -12257,40 +15335,6 @@ export const useCombatStore = create((set, get) => ({ critical: false, outcome: "completed", }); - if (state.classId === "rom-priest" && state.secondaryClassId === "rom-mage" - && ability.source === "runewaker" - && ability.dbcSpellId === ROM_PRIEST_MAGE_ENLIGHTENMENT.triggerSpellId) { - const passiveSource = work.abilities.find((candidate) => candidate.source === "runewaker" - && candidate.classId === "rom-priest" - && candidate.secondaryClassId === "rom-mage" - && candidate.passive - && candidate.dbcSpellId === ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId); - const passive = passiveSource - ? learnedAbilityForBuild(passiveSource, work.progression.level, work.talentRanks) - : null; - if (passive) { - const readyAt = romPriestMageEnlightenmentReadyAt(work.auras, PLAYER_AURA_ENTITY_ID, now); - const proc = romPriestMageEnlightenmentProc( - state.classId, - state.secondaryClassId, - ability, - [ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId], - true, - readyAt, - now, - ); - if (proc.effect?.kind === "apply-aura") { - for (const effect of [proc.effect, ROM_PRIEST_MAGE_ENLIGHTENMENT_COOLDOWN_EFFECT]) { - work.auras = [...applyCombatAura(work.auras, { - definition: auraDefinitionForAbility(effect.aura, ability), - sourceId: PLAYER_AURA_ENTITY_ID, - targetId: PLAYER_AURA_ENTITY_ID, - now, - }).auras]; - } - } - } - } if (romMageWarriorMeditationPathCanProc( state.classId, state.secondaryClassId, @@ -12450,6 +15494,30 @@ export const useCombatStore = create((set, get) => ({ }).auras]; } + if (completingCast?.mode === "channel" + && state.classId === "rom-priest" && state.secondaryClassId === "rom-champion") { + const rageControlGain = romPriestChampionRageControlGain( + learnedRomPriestChampionPassiveSpellIds.includes(498610), + { + kind: "channel", + durationMs: Math.max(0, Math.min(now, completingCast.completesAt) - completingCast.startedAt), + }, + ); + if (rageControlGain > 0) { + const rage = gainRomRage( + state.classId, + state.secondaryClassId, + rageControlGain, + work.resource, + work.maxResource, + work.resourcePools, + work.maxResourcePools, + ); + work.resource = rage.resource; + work.resourcePools = rage.resourcePools; + } + } + const primaryCombatResult = work.combatResults.length === 1 ? work.combatResults[0] : null; const levelMessage = work.progression.levelsGained > 0 ? levelUpMessage(state.classId, state.level, work.progression.level) @@ -12483,6 +15551,8 @@ export const useCombatStore = create((set, get) => ({ mobs: work.mobs, auras: work.auras, combatEvents: work.combatEvents, + romPriestHolyCandleLastChargeAt: work.romPriestHolyCandleLastChargeAt + ?? state.romPriestHolyCandleLastChargeAt, actors: work.actors, effects: work.effects.length === state.effects.length && work.effects.every((effect, index) => effect === state.effects[index]) @@ -12506,6 +15576,16 @@ export const useCombatStore = create((set, get) => ({ { abilityId: ability.id, targetId: targetId ?? undefined, amount: work.totalDamage || work.totalHealing }, ), }); + if (ability.target === "hostile" && targetId && ability.name !== "Hunter's Mark" + && ability.effects.some((effect) => ["damage", "dot", "finisher-damage", "execute"].includes(effect.kind))) { + get().notifyOwnerHostileAction(PLAYER_AGGRO_ID, targetId); + } + if (playerRelocationAfterEffects) { + useGameStore.getState().relocatePlayer({ + footPosition: playerRelocationAfterEffects.position, + yaw: playerRelocationAfterEffects.yaw, + }); + } emitPlayerAbilityResolutionPresentation( ability, now, @@ -12565,7 +15645,7 @@ export const useCombatStore = create((set, get) => ({ damageMob: (id, amount, now = combatNow(), source, school = "physical", rollContext) => { const state = get(); - const threatSource = source ?? playerThreatSource(state); + const threatSource = withCurrentCoaThreatFactor(state, source ?? playerThreatSource(state), now); const progression = progressionFromState(state); const work: MutableCastWork = { classId: state.classId, @@ -12615,6 +15695,8 @@ export const useCombatStore = create((set, get) => ({ rollContext.periodic, rollContext.rules, rollContext.criticalChanceBonusPercent, + rollContext.weaponSpeedMs, + rollContext.dbcSpellId, ) : damageMobInWork( state.classId, @@ -12630,6 +15712,7 @@ export const useCombatStore = create((set, get) => ({ mobs: work.mobs, effects: work.effects, auras: work.auras, + summons: work.summons, combatEvents: work.combatEvents, actors: work.actors, cooldowns: work.cooldowns, @@ -12640,6 +15723,7 @@ export const useCombatStore = create((set, get) => ({ maxHealth: progression.maxHealth, resource: clamp(work.resource, 0, work.maxResource), ...(state.classId === "death-knight" || state.classId === "druid" + || work.resourcePools.psi !== state.resourcePools.psi ? { resourcePools: { ...work.resourcePools } } : {}), maxResource: work.maxResource, talentModifiers: work.talentModifiers, @@ -12904,15 +15988,16 @@ export const useCombatStore = create((set, get) => ({ }, addHealingThreat: (source, effectiveHealing) => set((state) => { + const threatSource = withCurrentCoaThreatFactor(state, source, combatNow()); const engagedIds = Object.values(state.mobs) .filter((mob) => mob.engaged && !mob.dead) .map((mob) => mob.id); const perMob = threatFromHealing(effectiveHealing, engagedIds.length) - * (source.threatScale ?? 1) - * resolveAuraStatValue(1, aurasForEntity(state.auras, source.actorId), "threat"); + * (threatSource.threatScale ?? 1) + * resolveAuraStatValue(1, aurasForEntity(state.auras, threatSource.actorId), "threat"); if (perMob <= 0) return state; const mobs = { ...state.mobs }; - const threatActorId = activeTricksThreatRecipient(state.auras, source.actorId, combatNow()) ?? source.actorId; + const threatActorId = activeTricksThreatRecipient(state.auras, threatSource.actorId, combatNow()) ?? threatSource.actorId; for (const id of engagedIds) { const mob = mobs[id]; mobs[id] = { @@ -13027,7 +16112,7 @@ export const useCombatStore = create((set, get) => ({ return interrupted; }, - controlMob: (id, sourceAbilityId, status, durationMs, now = combatNow(), breakOnDamage = false, sourceActorId) => { + controlMob: (id, sourceAbilityId, status, durationMs, now = combatNow(), breakOnDamage = false, sourceActorId, magnitude) => { let controlled = false; set((state) => { const mob = state.mobs[id]; @@ -13038,6 +16123,7 @@ export const useCombatStore = create((set, get) => ({ status, durationMs: Math.max(1, durationMs), breakOnDamage, + ...(magnitude === undefined ? {} : { magnitude }), }, sourceAbilityId, now, sourceActorId); controlled = next.statuses.some((entry) => ( entry.sourceAbilityId === sourceAbilityId @@ -13104,15 +16190,91 @@ export const useCombatStore = create((set, get) => ({ return removedCount; }, + triggerRomPriestHolyCandle: (ownerActorId, healingAbilityId, now = combatNow()) => { + const state = get(); + const partyMember = ownerActorId === PLAYER_AURA_ENTITY_ID + ? null + : usePartyStore.getState().members.find((member) => member.id === ownerActorId) ?? null; + const isPlayerPriest = ownerActorId === PLAYER_AURA_ENTITY_ID + && state.classId === "rom-priest" && state.secondaryClassId === null; + const isCompanionPriest = partyMember?.classId === "rom-priest" + && !partyMember.secondaryClassId; + if (!isPlayerPriest && !isCompanionPriest) return 0; + + const activeAuras = aurasForEntity(state.auras, ownerActorId, now); + const actor = isPlayerPriest ? null : partyMember + ? companionActorFromMember(partyMember, entityAbsorbAmount(state.auras, ownerActorId), state.actors[ownerActorId]) + : null; + const maximumHealth = isPlayerPriest ? state.maxHealth : actor?.maxHealth ?? 0; + const currentHealth = isPlayerPriest ? state.health : actor?.health ?? 0; + const amount = romPriestHolyCandleSelfDamageAmount( + maximumHealth, + romPriestHolyCandleIsActive(activeAuras), + now, + state.romPriestHolyCandleLastChargeAt[ownerActorId] ?? null, + ); + const applied = Math.min(currentHealth, amount); + if (applied <= 0) return 0; + + const health = currentHealth - applied; + const nextActor: CombatActorState = isPlayerPriest + ? { ...state.actors[ownerActorId]!, health, alive: health > 0 } + : { ...actor!, health, alive: health > 0, cast: health > 0 ? actor!.cast : null }; + if (!isPlayerPriest) { + mirrorCompanionActor(nextActor); + if (health <= 0) usePartyStore.setState((party) => ({ + members: party.members.map((member) => member.id === ownerActorId + ? { ...member, status: "down", activeCast: null, activeCastTargetId: null } + : member), + })); + } + set((current) => ({ + ...(isPlayerPriest ? { health } : {}), + actors: { ...current.actors, [ownerActorId]: nextActor }, + romPriestHolyCandleLastChargeAt: { + ...current.romPriestHolyCandleLastChargeAt, + [ownerActorId]: now, + }, + combatEvents: recordCombatEvent(current.combatEvents, { + occurredAt: now, + kind: "damage", + sourceActorId: ownerActorId, + targetActorId: ownerActorId, + abilityId: healingAbilityId, + school: "holy", + rawAmount: amount, + effectiveAmount: applied, + overheal: 0, + absorbed: 0, + critical: false, + }), + })); + return applied; + }, + healActor: (id, amount, request) => { const now = request.now ?? combatNow(); const state = get(); const sourceAuras = aurasForEntity(state.auras, request.sourceActorId); const targetAuras = aurasForEntity(state.auras, id); + const sourcePartyMember = usePartyStore.getState().members.find((member) => member.id === request.sourceActorId); + const sourceClassId = sourcePartyMember?.classId + ?? (request.sourceActorId === PLAYER_AURA_ENTITY_ID ? state.classId : null); + const sourceTalentRanks = sourcePartyMember?.talentRanks + ?? (request.sourceActorId === PLAYER_AURA_ENTITY_ID ? state.talentRanks : {}); + const masterShapeshifterHealingModifiers = sourceClassId === "druid" + ? wow335DruidMasterShapeshifterModifiersForForm( + sourceTalentRanks[WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID] ?? 0, + wow335DruidShapeshiftFormForAuras(state.auras, request.sourceActorId, now), + ).filter((modifier) => modifier.kind === "healing-percent") + : []; + const masterShapeshifterAdjustedAmount = request.amountAlreadyModified + ? amount + : applyTalentModifierValue(amount, masterShapeshifterHealingModifiers, "healing-percent"); const modified = request.amountAlreadyModified ? amount : resolveAuraHealingValue( - resolveAuraHealingValue(amount, sourceAuras, "done"), + resolveAuraHealingValue(masterShapeshifterAdjustedAmount, sourceAuras, "done"), targetAuras, "taken", ); @@ -13353,6 +16515,11 @@ export const useCombatStore = create((set, get) => ({ applyActorAura: (sourceActorId, targetActorId, ability, effect, now = combatNow()) => { const state = get(); if (!state.actors[sourceActorId] || (!state.actors[targetActorId] && !state.mobs[targetActorId])) return false; + const isRomPriestChampionBeacon = effect.aura.utilityTags?.includes( + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG, + ) ?? false; + if (isRomPriestChampionBeacon && targetActorId !== PLAYER_AURA_ENTITY_ID + && !usePartyStore.getState().members.some((member) => member.id === targetActorId)) return false; if (ability.name === "Power Word: Shield" && hasWeakenedSoul(state.auras, targetActorId, now)) return false; const family = DEFAULT_PARTY_BUFF_FAMILY.get(ability.name.toLowerCase()) ?? ability.id; const gmGroup = `gm-party-buff:${family}`; @@ -13360,24 +16527,77 @@ export const useCombatStore = create((set, get) => ({ aura.targetId === targetActorId && aura.definition.exclusiveGroup === gmGroup ))) return true; const durationMs = effect.aura.durationMs; - const definition = auraDefinitionForAbility(effect.aura, ability, durationMs); - const applied = applyCombatAura(state.auras, { + const sourceMember = usePartyStore.getState().members.find((member) => member.id === sourceActorId); + const sourceShamanRanks = sourceActorId === PLAYER_AURA_ENTITY_ID + ? state.classId === "shaman" ? state.talentRanks : null + : sourceMember?.classId === "shaman" ? sourceMember.talentRanks : null; + const improvedEarthShieldRank = sourceShamanRanks && ability.name === "Earth Shield" + ? shamanTalentRankFromRanks(sourceShamanRanks, "Improved Earth Shield", 3) + : 0; + const sourceAura = improvedEarthShieldAuraDefinition(effect.aura, ability, improvedEarthShieldRank); + const definition = auraDefinitionForAbility(sourceAura, ability, durationMs); + const existingAuras = isRomPriestChampionBeacon + ? state.auras.filter((aura) => !(aura.sourceId === sourceActorId + && aura.definition.utilityTags?.includes(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG))) + : state.auras; + const applied = applyCombatAura(existingAuras, { definition, sourceId: sourceActorId, targetId: targetActorId, now, }); - const result = ability.name === "Power Word: Shield" + const shieldAdjusted = ability.name === "Power Word: Shield" ? { ...applied, auras: applyCombatAura(applied.auras, { definition: WEAKENED_SOUL_AURA, sourceId: sourceActorId, targetId: targetActorId, now, }).auras } : applied; + const sourceClassId = sourceActorId === PLAYER_AURA_ENTITY_ID ? state.classId : sourceMember?.classId; + const sourceSecondaryClassId = sourceActorId === PLAYER_AURA_ENTITY_ID + ? state.secondaryClassId + : sourceMember?.secondaryClassId ?? undefined; + const startsAtZeroStacks = sourceActorId === targetActorId + && isRomMageDruidPair({ classId: sourceClassId, secondaryClassId: sourceSecondaryClassId }) + && definition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG); + const result = startsAtZeroStacks + ? { + ...shieldAdjusted, + aura: { ...shieldAdjusted.aura, stacks: 0 }, + auras: shieldAdjusted.auras.map((aura) => aura.instanceId === shieldAdjusted.aura.instanceId + ? { ...aura, stacks: 0 } + : aura), + } + : shieldAdjusted; const grantedAbsorb = result.aura.absorbs.reduce((total, absorb) => total + absorb.remaining, 0); let health = state.health; let maxHealth = state.maxHealth; + let resource = state.resource; + let maxResource = state.maxResource; + let resourcePools = { ...state.resourcePools }; + let maxResourcePools = { ...state.maxResourcePools }; const actors = { ...state.actors }; let companionActor: CombatActorState | null = null; if (targetActorId === PLAYER_AURA_ENTITY_ID) { + const currentEnergyMaximum = maxResourcePools.energy ?? defaultResourceMaximum("energy"); + const nextEnergyMaximum = romRogueEnergyMaximumAfterAuraTransition( + currentEnergyMaximum, state.auras, result.auras, targetActorId, + ); + if (nextEnergyMaximum !== currentEnergyMaximum) { + resourcePools.energy = Math.min(nextEnergyMaximum, resourcePools.energy ?? 0); + maxResourcePools.energy = nextEnergyMaximum; + if (resourceProfileForClass(state.classId).type === "energy") { + resource = resourcePools.energy; + maxResource = nextEnergyMaximum; + } + const actor = actors[targetActorId]; + const pool = actor?.resources.energy; + if (actor && pool) actors[targetActorId] = { + ...actor, + resources: { + ...actor.resources, + energy: { ...pool, current: resourcePools.energy ?? pool.current, maximum: nextEnergyMaximum }, + }, + }; + } const nextMaxHealth = auraAdjustedPlayerMaxHealth( state.classId, state.level, @@ -13400,15 +16620,34 @@ export const useCombatStore = create((set, get) => ({ state.actors[targetActorId], ) : null; if (member && actor) { + let nextActor = actor; + const energyPool = actor.resources.energy; + if (energyPool) { + const energyMaximum = romRogueEnergyMaximumAfterAuraTransition( + energyPool.maximum, state.auras, result.auras, targetActorId, + ); + if (energyMaximum !== energyPool.maximum) nextActor = Object.freeze({ + ...nextActor, + resources: { + ...nextActor.resources, + energy: { + ...energyPool, + maximum: energyMaximum, + current: Math.min(energyMaximum, energyPool.current), + }, + }, + }); + } const base = deriveCharacterStats(member.classId, member.level, member.gearStats, member.raceId); const delta = auraMaximumHealthBonus(base, result.auras, targetActorId) - auraMaximumHealthBonus(base, state.auras, targetActorId); if (delta) { - const actorMaxHealth = Math.max(1, actor.maxHealth + delta); - const actorHealth = actor.health <= 0 ? 0 : clamp(actor.health + delta, 1, actorMaxHealth); - companionActor = Object.freeze({ ...actor, health: actorHealth, maxHealth: actorMaxHealth }); - actors[targetActorId] = companionActor; + const actorMaxHealth = Math.max(1, nextActor.maxHealth + delta); + const actorHealth = nextActor.health <= 0 ? 0 : clamp(nextActor.health + delta, 1, actorMaxHealth); + nextActor = Object.freeze({ ...nextActor, health: actorHealth, maxHealth: actorMaxHealth }); } + if (nextActor !== actor) companionActor = nextActor; + if (companionActor) actors[targetActorId] = companionActor; } } let combatEvents = recordCombatEvent(state.combatEvents, { @@ -13443,6 +16682,10 @@ export const useCombatStore = create((set, get) => ({ auras: result.auras, health, maxHealth, + resource, + maxResource, + resourcePools, + maxResourcePools, actors, combatEvents, }); @@ -13465,11 +16708,58 @@ export const useCombatStore = create((set, get) => ({ } const sourceActor = state.actors[sourceActorId]; const sourceMember = usePartyStore.getState().members.find((member) => member.id === sourceActorId); - const amount = selfDrainPercent > 0 + const sourceClassId = sourceMember?.classId ?? (sourceActorId === PLAYER_AURA_ENTITY_ID ? state.classId : null); + const sourceBaseStats = sourceMember + ? playerCharacterStats( + sourceMember.classId, + sourceMember.level, + sourceMember.gearStats, + sourceMember.raceId, + sourceMember.secondaryClassId ?? null, + talentModifiersForRanks(sourceMember.talentRanks, sourceMember.classId), + ) + : sourceActorId === PLAYER_AURA_ENTITY_ID + ? playerCharacterStats( + state.classId, + state.level, + state.gearStats, + state.raceId, + state.secondaryClassId, + state.talentModifiers, + ) + : null; + const holyBlessingSpellPowerBonus = sourceClassId === "rom-priest" && sourceBaseStats + ? romPriestHolyBlessingStats( + sourceBaseStats, + aurasForEntity(state.auras, sourceActorId, now), + ).spellPowerBonus + : 0; + const baseAmount = selfDrainPercent > 0 ? Math.max(1, Math.round((sourceMember?.maxHealth ?? sourceActor.maxHealth) * selfDrainPercent / 100)) : sourceMember - ? equipmentAdjustedCombatAmount(effect, sourceMember.level, sourceMember.gearStats, sourceMember.classId, ability) - : Math.max(1, Math.round((effect.basePoints ?? 0) + Math.max(0.1, effect.coefficient) * sourceActor.level * 4)); + ? equipmentAdjustedCombatAmount( + effect, sourceMember.level, sourceMember.gearStats, sourceMember.classId, ability, holyBlessingSpellPowerBonus, + ) + : Math.max(1, Math.round((effect.basePoints ?? 0) + + Math.max(0.1, effect.coefficient) * (sourceActor.level * 4 + holyBlessingSpellPowerBonus))); + const masterShapeshifterHealingModifiers = sourceMember?.classId === "druid" + ? wow335DruidMasterShapeshifterModifiersForForm( + sourceMember.talentRanks[WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID] ?? 0, + wow335DruidShapeshiftFormForAuras(state.auras, sourceActorId, now), + ).filter((modifier) => modifier.kind === "healing-percent") + : []; + const amount = sourceMember?.classId === "druid" && effect.kind === "hot" + ? talentAdjustedAmount( + baseAmount, + [ + ...talentModifiersForRanks(sourceMember.talentRanks, sourceMember.classId), + ...masterShapeshifterHealingModifiers, + ], + "healing-percent", + ability, + true, + ) + : baseAmount; const next = state.effects.filter((entry) => !( entry.kind === effect.kind && entry.sourceAbilityId === ability.id @@ -13499,18 +16789,69 @@ export const useCombatStore = create((set, get) => ({ if (!owner?.alive) return null; summonSequence += 1; const isTotem = /totem/i.test(ability.name); + const isHunterPet = ability.classId === "hunter" && ability.effects.some((candidate) => ( + candidate.kind === "pet" && ["summon", "call", "resurrect", "tame"].includes(candidate.action) + )); + const hunterPetAction = ability.effects.find((candidate): candidate is Extract => ( + candidate.kind === "pet" + ))?.action; + const ownerMember = isHunterPet + ? usePartyStore.getState().members.find((member) => member.id === ownerActorId) + : undefined; + const hunterPetOwnerBaseStats = ownerMember + ? playerCharacterStats( + ownerMember.classId, + ownerMember.level, + ownerMember.gearStats, + ownerMember.raceId, + ownerMember.secondaryClassId ?? null, + talentModifiersForRanks(ownerMember.talentRanks, ownerMember.classId), + ) + : undefined; + const hunterPetOwnerStats = ownerMember && hunterPetOwnerBaseStats + ? applyAuraStats(hunterPetOwnerBaseStats, aurasForEntity(state.auras, ownerActorId)) + : undefined; + const hunterPetProfile = isHunterPet + ? wow335HunterPetProfileForLevel(owner.level, "wolf", hunterPetOwnerStats) + : undefined; + const hunterPetEffectiveStats = hunterPetProfile?.effectiveStats; + const existingHunterPet = isHunterPet + ? state.summons.find((summon) => summon.ownerActorId === ownerActorId && summon.hunterPet) + : undefined; + if (existingHunterPet) { + if (hunterPetAction === "resurrect" && existingHunterPet.health <= 0) { + const revived = { + ...existingHunterPet, + maxHealth: hunterPetEffectiveStats?.maxHealth ?? existingHunterPet.maxHealth, + health: Math.max(1, Math.round((hunterPetEffectiveStats?.maxHealth ?? existingHunterPet.maxHealth) * 0.15)), + attackDamage: hunterPetEffectiveStats?.averageAutoAttackDamage ?? existingHunterPet.attackDamage, + position, + targetId: hunterPetProfile ? null : targetId, + nextActionAt: now + 1_000, + ...(hunterPetProfile ? initialHunterPetCombatRuntime(hunterPetProfile, now) : {}), + }; + set({ summons: state.summons.map((summon) => summon.id === revived.id ? revived : summon) }); + get().synchronizeActors(); + } else if (hunterPetAction === "call" && existingHunterPet.health > 0) { + set({ summons: state.summons.map((summon) => summon.id === existingHunterPet.id + ? { ...summon, position, targetId: null } + : summon) }); + get().synchronizeActors(); + } + return existingHunterPet.id; + } const id = `${ownerActorId}:${isTotem ? "totem" : "summon"}-${summonSequence}`; const maxHealth = effect.healingPulse ? 5 - : Math.max(1, Math.round(owner.maxHealth * (isTotem ? 0.1 : 0.3))); + : hunterPetEffectiveStats?.maxHealth ?? Math.max(1, Math.round(owner.maxHealth * (isTotem ? 0.1 : 0.3))); const summon: CombatSummon = { id, sourceAbilityId: ability.id, creatureId: effect.creatureId, - targetId, + targetId: hunterPetProfile ? null : targetId, expiresAt: now + effect.durationMs, kind: isTotem ? "totem" : "summon", - name: ability.name, + name: isHunterPet ? "Wolf" : ability.name, ownerActorId, health: maxHealth, maxHealth, @@ -13520,10 +16861,12 @@ export const useCombatStore = create((set, get) => ({ ?? (ability.name === "Shadowfiend" ? 1_500 : isTotem ? 2_000 : 2_200), attackDamage: effect.healingPulse || ability.name === "Lightwell" ? 0 - : Math.max(1, Math.round(owner.level * 4 * Math.max(0.15, effect.coefficient))), + : hunterPetEffectiveStats?.averageAutoAttackDamage + ?? Math.max(1, Math.round(owner.level * 4 * Math.max(0.15, effect.coefficient))), ...(ability.name === "Lightwell" ? { clickCharges: 10 } : {}), ...(effect.healingPulse ? { healingPulse: effect.healingPulse } : {}), ...initialSummonCombatRuntime(), + ...(hunterPetProfile ? initialHunterPetCombatRuntime(hunterPetProfile, now) : {}), ...(isTotem ? { exclusiveGroup: `${ownerActorId}:totem` } : {}), }; const summons = isTotem @@ -13534,6 +16877,110 @@ export const useCombatStore = create((set, get) => ({ return id; }, + commandHunterPet: (summonId, command) => { + const state = get(); + const pet = state.summons.find((summon) => summon.id === summonId + && summon.hunterPet && summon.ownerActorId === PLAYER_AGGRO_ID + && summon.health > 0); + if (!pet) return false; + if (command === "attack") { + const targetId = state.selectedTargetId; + const target = targetId ? state.mobs[targetId] : null; + if (!target || target.dead || target.despawned || (target.navigationEvadeUntil ?? 0) > combatNow()) return false; + set((current) => ({ + summons: current.summons.map((summon) => summon.id === summonId ? { + ...summon, + targetId, + hunterPetCommand: "attack", + hunterPetCommandTargetId: targetId, + hunterPetIsCommandAttack: true, + hunterPetIsCommandFollow: false, + hunterPetIsReturning: false, + hunterPetIsFollowing: false, + } : summon), + })); + return true; + } + if (command === "follow") { + const isReturning = distanceSquared(state.playerPosition, pet.position) > 9; + set((current) => ({ + summons: current.summons.map((summon) => summon.id === summonId ? { + ...summon, + targetId: null, + hunterPetCommand: "follow", + hunterPetCommandTargetId: null, + hunterPetStayPosition: null, + hunterPetIsCommandAttack: false, + hunterPetIsCommandFollow: true, + hunterPetIsReturning: isReturning, + hunterPetIsFollowing: !isReturning, + hunterPetPendingOwnerAttackTargetId: null, + } : summon), + })); + return true; + } + set((current) => ({ + summons: current.summons.map((summon) => summon.id === summonId ? { + ...summon, + hunterPetCommand: "stay", + hunterPetCommandTargetId: null, + hunterPetStayPosition: summon.position, + hunterPetIsCommandAttack: false, + hunterPetIsCommandFollow: false, + hunterPetIsReturning: false, + hunterPetIsFollowing: false, + } : summon), + })); + return true; + }, + + setHunterPetReactMode: (summonId, reactMode) => { + const state = get(); + const pet = state.summons.find((summon) => summon.id === summonId + && summon.hunterPet && summon.ownerActorId === PLAYER_AGGRO_ID); + if (!pet) return false; + set((current) => ({ + summons: current.summons.map((summon) => { + if (summon.id !== summonId) return summon; + const stoppedManualAttack = reactMode === "passive" && summon.hunterPetCommand === "attack"; + return { + ...summon, + hunterPetReactMode: reactMode, + ...(reactMode === "passive" ? { + targetId: null, + hunterPetCommand: stoppedManualAttack ? "follow" as const : summon.hunterPetCommand, + hunterPetCommandTargetId: null, + hunterPetIsCommandAttack: false, + hunterPetPendingOwnerAttackTargetId: null, + } : {}), + }; + }), + })); + return true; + }, + + setHunterPetGrowlAutocast: (summonId, enabled) => { + const state = get(); + if (!state.summons.some((summon) => summon.id === summonId + && summon.hunterPet)) return false; + set((current) => ({ summons: current.summons.map((summon) => summon.id === summonId + ? { ...summon, hunterPetGrowlAutocastEnabled: enabled } + : summon) })); + return true; + }, + + notifyOwnerHostileAction: (ownerActorId, targetId) => { + const state = get(); + const target = state.mobs[targetId]; + if (!target || target.dead || target.despawned || (target.navigationEvadeUntil ?? 0) > combatNow()) return; + if (!state.summons.some((summon) => summon.hunterPet && summon.ownerActorId === ownerActorId)) return; + set((current) => ({ + summons: current.summons.map((summon) => summon.hunterPet && summon.ownerActorId === ownerActorId + ? { ...summon, hunterPetPendingOwnerAttackTargetId: targetId } + : summon), + })); + }, + clickLightwell: (summonId, targetActorId, now = combatNow()) => { const state = get(); const well = state.summons.find((summon) => summon.id === summonId @@ -13744,7 +17191,11 @@ export const useCombatStore = create((set, get) => ({ mitigated, state.classId, state.talentRanks, state.activeCast, school, now, ); const playerAuras = aurasForEntity(state.auras, PLAYER_AURA_ENTITY_ID); - const damageTransferPet = activeWardenDamageTransferPet(state.summons, now, state.playerPosition); + const defensiveStanceActive = state.classId === "warrior" + && wow335WarriorHasDefensiveStance(playerAuras, PLAYER_AURA_ENTITY_ID, now); + const damageTransferPet = activeWardenDamageTransferPet( + state.summons, PLAYER_AGGRO_ID, now, state.playerPosition, + ); const damageTransferActive = Boolean(damageTransferPet && playerAuras.some((aura) => ( (aura.expiresAt === null || aura.expiresAt > now) && aura.definition.utilityTags?.includes(ROM_WARDEN_DAMAGE_TRANSFER_TAG) @@ -13753,14 +17204,28 @@ export const useCombatStore = create((set, get) => ({ !aura.definition.utilityTags?.includes(ROM_WARDEN_DAMAGE_TRANSFER_TAG) )); const damageTransferContext = { direction: "taken" as const, school, attackKind: "spell" as const }; - const damageBeforeTransfer = damageTransferActive + const damageBeforeTransferBase = damageTransferActive ? resolveAuraDamageValue(priestMitigated, damageTransferAuras, damageTransferContext) : 0; - const incoming = resolveAuraDamageValue( + const damageBeforeTransfer = damageTransferActive + ? wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage( + priestMitigated, + damageBeforeTransferBase, + state.talentRanks[WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID] ?? 0, + defensiveStanceActive, + ) + : 0; + const incomingBase = resolveAuraDamageValue( priestMitigated, damageTransferActive ? playerAuras : damageTransferAuras, damageTransferContext, ); + const incoming = wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage( + priestMitigated, + incomingBase, + state.talentRanks[WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID] ?? 0, + defensiveStanceActive, + ); const soulLinkDamage = resolveWarlockSoulLinkDamage( incoming, state.classId, @@ -14128,13 +17593,14 @@ export const useCombatStore = create((set, get) => ({ return true; }, - cancelCast: (message = "Casting interrupted.") => { + cancelCast: (message = "Casting interrupted.", now = combatNow()) => { const cast = get().activeCast; if (!cast) return false; set((state) => ({ activeCast: null, + ...romPriestChampionRageControlAwardPatch(state, cast, now), combatEvents: recordCombatEvent(state.combatEvents, { - occurredAt: combatNow(), + occurredAt: now, kind: "interrupt", sourceActorId: PLAYER_AURA_ENTITY_ID, targetActorId: PLAYER_AURA_ENTITY_ID, @@ -14150,7 +17616,7 @@ export const useCombatStore = create((set, get) => ({ playerAnimationEvent: nextAnimationEvent("ability-cancel", cast.abilityId), feedback: nextFeedback("error", message, { abilityId: cast.abilityId, targetId: cast.targetId ?? undefined }), })); - emitPlayerAbilityCancellation(cast.abilityId, combatNow(), get().playerPosition); + emitPlayerAbilityCancellation(cast.abilityId, now, get().playerPosition); return true; }, @@ -14658,11 +18124,18 @@ export const useCombatStore = create((set, get) => ({ aura.definition.utilityTags?.includes(WOW335_WARLOCK_METAMORPHOSIS_AURA_TAG) && (aura.expiresAt === null || aura.expiresAt > now) )); - const controlDurationMs = wow335WarlockMetamorphosisControlDuration( + const metamorphosisAdjustedDuration = wow335WarlockMetamorphosisControlDuration( effect.durationMs, effect.mechanic, hasMetamorphosis, ); + const controlDurationMs = wow335PaladinAuraMasterySelfControlDuration( + namedAuras, + auraTargetId, + effect.mechanic, + metamorphosisAdjustedDuration, + now, + ); const control = { mechanic: effect.mechanic, endsAt: now + controlDurationMs }; if (actorId === PLAYER_AGGRO_ID) playerControl = control; else memberControls.push({ memberId: actorId, ...control }); @@ -14858,6 +18331,9 @@ export const useCombatStore = create((set, get) => ({ auras: namedAuras, ...(playerControl ? { + ...(state.activeCast + ? romPriestChampionRageControlAwardPatch(state, state.activeCast, now) + : {}), controlledUntil: Math.max(state.controlledUntil, playerControl.endsAt), controlMechanic: playerControl.mechanic, schoolLockedUntil: state.activeCast @@ -14930,28 +18406,52 @@ export const useCombatStore = create((set, get) => ({ }; if (hit.actorId === PLAYER_AGGRO_ID) { const current = get(); - const defender = paladinRedoubtBlockStats( - applyAuraStats( - playerCharacterStats( - current.classId, - current.level, - current.gearStats, - current.raceId, - current.secondaryClassId, - current.talentModifiers, - ), - aurasForEntity(current.auras, PLAYER_AURA_ENTITY_ID), + const playerImpactAuras = aurasForEntity(current.auras, PLAYER_AURA_ENTITY_ID); + const learnedCoaPassives = learnedRomCoaPassives( + current.classId, current.secondaryClassId, current.level, current.talentRanks, + ); + const blockingStanceAuraActive = activeLocalBlockingStance(playerImpactAuras, PLAYER_AURA_ENTITY_ID, now); + const coaBlockingModifiers = romCurrentCoaBlockingStanceModifiers({ + classId: current.classId as AbilityDefinition["classId"], + ...(current.secondaryClassId ? { secondaryClassId: current.secondaryClassId as AbilityDefinition["secondaryClassId"] } : {}), + learnedPassiveSpellIds: learnedCoaPassives, + blockingStanceAuraActive, + }); + const baseDefender = applyAuraStats( + playerCharacterStats( + current.classId, + current.level, + current.gearStats, + current.raceId, + current.secondaryClassId, + current.talentModifiers, ), + playerImpactAuras, + ); + const defender = paladinRedoubtBlockStats( + { + ...baseDefender, + parryPercent: baseDefender.parryPercent + coaBlockingModifiers.parryRateBonusPercent, + }, current.classId, current.talentRanks, paladinShieldEquipped(current), ); + const predatoryInstinctsIncomingMultiplier = druidPredatoryInstinctsIncomingMultiplier( + current.classId, + current.talentRanks, + current.auras, + PLAYER_AURA_ENTITY_ID, + hit.attack, + now, + ); const resolvedCombatResult = resolveEnemyDamageResult( hit.mob, hit.attack, defender, talentAdjustedIncomingDamage( - Math.round(hit.amount * raceAffixMobDamageMultiplier(hit.mob.id, now)), + Math.round(hit.amount * raceAffixMobDamageMultiplier(hit.mob.id, now) + * predatoryInstinctsIncomingMultiplier), current.talentModifiers, hit.attack.school, ), @@ -14967,6 +18467,26 @@ export const useCombatStore = create((set, get) => ({ resolvedCombatResult.finalDamage, current.auras, hit.mob.id, hit.attack, now, ), }; + combatResult.finalDamage = romCoaIncomingDamageAfterPassives({ + amount: combatResult.finalDamage, + classId: current.classId, + secondaryClassId: current.secondaryClassId, + level: current.level, + talentRanks: current.talentRanks, + auras: current.auras, + actorId: PLAYER_AURA_ENTITY_ID, + school: hit.attack.school, + now, + }); + if (current.classId === "warrior") { + combatResult.finalDamage = wow335WarriorCriticalBlockDamage( + combatResult.finalDamage, + current.talentRanks[WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID] ?? 0, + resolvedCombatResult.blocked, + Boolean(hit.mob.characterDefender), + current.talentRanks[WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID] ?? 0, + ); + } commitMeleeAutoProc(combatResult.landed); const blessedLifeDamage = paladinBlessedLifeDamageAfterIncomingHit( combatResult.finalDamage, @@ -14988,7 +18508,11 @@ export const useCombatStore = create((set, get) => ({ now, ); const playerAuras = aurasForEntity(current.auras, PLAYER_AURA_ENTITY_ID); - const damageTransferPet = activeWardenDamageTransferPet(current.summons, now, current.playerPosition); + const defensiveStanceActive = current.classId === "warrior" + && wow335WarriorHasDefensiveStance(playerAuras, PLAYER_AURA_ENTITY_ID, now); + const damageTransferPet = activeWardenDamageTransferPet( + current.summons, PLAYER_AGGRO_ID, now, current.playerPosition, + ); const damageTransferActive = Boolean(damageTransferPet && playerAuras.some((aura) => ( (aura.expiresAt === null || aura.expiresAt > now) && aura.definition.utilityTags?.includes(ROM_WARDEN_DAMAGE_TRANSFER_TAG) @@ -15001,16 +18525,62 @@ export const useCombatStore = create((set, get) => ({ school: hit.attack.school, attackKind: enemyAttackKind(hit.attack), }; - const damageBeforeTransfer = damageTransferActive + const damageBeforeTransferBase = damageTransferActive ? resolveAuraDamageValue(priestMitigated, damageTransferAuras, damageTransferContext) : 0; - const auraAdjustedDamage = resolveAuraDamageValue( + const damageBeforeTransfer = damageTransferActive + ? wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage( + priestMitigated, + damageBeforeTransferBase, + current.talentRanks[WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID] ?? 0, + defensiveStanceActive, + ) + : 0; + const auraAdjustedDamageBase = resolveAuraDamageValue( priestMitigated, damageTransferActive ? playerAuras : damageTransferAuras, damageTransferContext, ); + const auraAdjustedDamage = wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage( + priestMitigated, + auraAdjustedDamageBase, + current.talentRanks[WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID] ?? 0, + defensiveStanceActive, + ); + const spellDeflectionRank = current.classId === "death-knight" + ? current.talentRanks[WOW335_DEATH_KNIGHT_SPELL_DEFLECTION_TALENT_ID] ?? 0 + : 0; + const spellDeflectionProc = combatResult.landed && wow335DeathKnightSpellDeflectionShouldProc( + spellDeflectionRank, + { + directDamageSpell: enemyAttackKind(hit.attack) === "spell", + schoolMask: wow335DeathKnightSpellDeflectionSchoolMask(hit.attack.school), + parryChancePercent: defender.parryPercent, + roll: stableCombatUnit( + `${hit.actorId}:${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}:wow335-death-knight-spell-deflection`, + ), + damage: auraAdjustedDamage, + }, + ); + const spellDeflectionDamage = spellDeflectionProc + ? wow335DeathKnightSpellDeflectionDamage(auraAdjustedDamage, spellDeflectionRank) + : auraAdjustedDamage; + const spellDeflectionAbsorbed = Math.max(0, auraAdjustedDamage - spellDeflectionDamage); + const frostWarding = combatResult.landed + ? mageFrostWardingIncomingReduction({ + classId: current.classId, + talentRank: current.talentRanks[WOW335_MAGE_FROST_WARDING_TALENT_ID] ?? 0, + auras: current.auras, + targetId: PLAYER_AURA_ENTITY_ID, + attackKind: enemyAttackKind(hit.attack), + damageSchool: hit.attack.school, + spellDamage: spellDeflectionDamage, + roll: stableCombatUnit(`${hit.actorId}:${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}:wow335-frost-warding`), + now, + }) + : null; const soulLinkDamage = resolveWarlockSoulLinkDamage( - auraAdjustedDamage, + frostWarding?.damageAfterReduction ?? spellDeflectionDamage, current.classId, current.talentRanks, current.auras, @@ -15142,6 +18712,27 @@ export const useCombatStore = create((set, get) => ({ raceId: current.raceId, secondaryClassId: current.secondaryClassId, }; + if (frostWarding && frostWarding.manaRefund > 0) { + const maximumMana = procWork.maxResourcePools.mana ?? defaultResourceMaximum("mana"); + const currentMana = procWork.resourcePools.mana ?? 0; + const restoredMana = Math.min(frostWarding.manaRefund, Math.max(0, maximumMana - currentMana)); + if (restoredMana > 0) { + procWork.resourcePools.mana = currentMana + restoredMana; + if (resourceProfileForClass(procWork.classId).type === "mana") procWork.resource = currentMana + restoredMana; + recordCombatEventInWork(procWork, { + occurredAt: now, + kind: "resource", + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: PLAYER_AURA_ENTITY_ID, + abilityId: frostWarding.wardAbilityId, + rawAmount: frostWarding.manaRefund, + effectiveAmount: restoredMana, + overheal: frostWarding.manaRefund - restoredMana, + absorbed: 0, + critical: false, + }); + } + } if (soulLinkDamage.demon && soulLinkDamage.demonDamage > 0) { const updatedDemon = nextSummons.find((summon) => summon.id === soulLinkDamage.demon!.id); if (updatedDemon) procWork.actors[updatedDemon.id] = combatActorFromSummon( @@ -15270,6 +18861,26 @@ export const useCombatStore = create((set, get) => ({ now, }).auras]; } + if (current.classId === "warrior" && avoidTrigger) { + procWork.auras = maybeProcWarriorImprovedDefensiveStance( + procWork.auras, + PLAYER_AURA_ENTITY_ID, + current.talentRanks[WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID] ?? 0, + avoidTrigger, + `${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}:${hit.actorId}`, + now, + ); + } + if (current.classId === "warrior" && avoidTrigger === "parry") { + procWork.auras = maybeProcWarriorImprovedVictoryRushOnParry( + procWork.auras, + PLAYER_AURA_ENTITY_ID, + current.talentRanks[WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID] ?? 0, + true, + `${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}:${hit.actorId}`, + now, + ); + } const focusedWillRank = current.talentRanks[WOW335_PRIEST_FOCUSED_WILL_TALENT_ID] ?? 0; const focusedWillAura = current.classId === "priest" ? wow335PriestFocusedWillAuraDefinition(focusedWillRank) @@ -15303,7 +18914,9 @@ export const useCombatStore = create((set, get) => ({ procWork.auras = consumeInnerFireCharges( procWork.auras, PLAYER_AURA_ENTITY_ID, combatResult.landed, enemyAttackKind(hit.attack), ); - if (procEvent) evaluateProcsInWork(procWork, procEvent, now); + if (procEvent) evaluateProcsInWork(procWork, procEvent, now, (sourceActorId) => ( + paladinAuraSourceSpellPower(sourceActorId, current, procWork.auras, now) + )); const incomingAttackKind = enemyAttackKind(hit.attack); const briarShieldActive = procWork.auras.some((aura) => ( aura.targetId === PLAYER_AURA_ENTITY_ID @@ -15366,6 +18979,27 @@ export const useCombatStore = create((set, get) => ({ now, ); maybeProcPaladinEyeForAnEyeInWork(procWork, hit.mob.id, healthDamage, combatResult.critical, now); + const warriorDamageShield = current.classId === "warrior" + ? wow335WarriorDamageShieldReflectDamage( + defender.blockValue, + current.talentRanks[WOW335_WARRIOR_DAMAGE_SHIELD_TALENT_ID] ?? 0, + enemyAttackKind(hit.attack) === "melee" && combatResult.landed && combatResult.rawDamage > 0, + ) + : 0; + if (warriorDamageShield > 0 && procWork.mobs[hit.mob.id]) { + damageMobInWork( + procWork.classId, + procWork, + hit.mob.id, + warriorDamageShield, + now, + playerThreatSource( + { talentModifiers: procWork.talentModifiers }, + WOW335_WARRIOR_DAMAGE_SHIELD_ABILITY_ID, + ), + "physical", + ); + } recordCombatEventInWork(procWork, { occurredAt: now, kind: "damage", @@ -15376,7 +19010,7 @@ export const useCombatStore = create((set, get) => ({ rawAmount: combatResult.rawDamage, effectiveAmount: healthDamage, overheal: 0, - absorbed: namedAbsorb.absorbed + absorbed, + absorbed: spellDeflectionAbsorbed + namedAbsorb.absorbed + absorbed, critical: combatResult.critical, outcome: combatResult.outcome, }); @@ -15461,6 +19095,23 @@ export const useCombatStore = create((set, get) => ({ outcome: "hit", }); } + procWork.auras = [...updateRomLeopardInstinctStacks( + procWork.auras, + PLAYER_AURA_ENTITY_ID, + learnedCoaPassives.includes(ROM_COA_LEOPARD_INSTINCT_ID), + combatResult.dodged ? "dodge" : combatResult.landed && combatResult.rawDamage > 0 ? "hit" : "other", + now, + )]; + const playerPushbackReduction = healthDamage > 0 + ? paladinConcentrationAuraPushbackReductionForTarget( + procWork.auras, + PLAYER_AURA_ENTITY_ID, + now, + current.classId, + current.talentRanks, + usePartyStore.getState().members, + ) + : 0; set({ auras: procWork.auras, effects: procWork.effects, @@ -15477,7 +19128,12 @@ export const useCombatStore = create((set, get) => ({ activeCast: procWork.health <= 0 ? null : healthDamage > 0 - ? applyWrathCastPushback(current.activeCast, now, `${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}`) + ? applyWrathCastPushback( + current.activeCast, + now, + `${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}`, + playerPushbackReduction, + ) : current.activeCast, autoAttackTargetId: procWork.health <= 0 ? null : current.autoAttackTargetId, nextAutoAttackAt: procWork.health <= 0 ? 0 : current.nextAutoAttackAt, @@ -15505,8 +19161,28 @@ export const useCombatStore = create((set, get) => ({ incomingAmount, current.auras, hit.mob.id, hit.attack, now, ); commitMeleeAutoProc(true); + const hunterPetDefender = hunterPetIncomingDefender(current, summon, now); + const damageAfterHunterPetDefense = hunterPetDefender + ? resolveCombatResult({ + amount: wardenAdjustedAmount, + attackKind: enemyAttackKind(hit.attack), + damageSchool: hit.attack.school, + attacker: { level: hit.mob.level }, + defender: hunterPetDefender, + rules: { + canMiss: false, + canCrit: false, + canDodge: false, + canParry: false, + canBlock: false, + }, + roll: stableCombatRoll( + `${hit.mob.id}:${hit.attack.id}:${summon.id}:${hit.attackRevision}:${now}:wow335-hunter-pet-defense`, + ), + }).finalDamage + : wardenAdjustedAmount; const adjusted = resolveAuraDamageValue( - wardenAdjustedAmount, + damageAfterHunterPetDefense, aurasForEntity(current.auras, summon.id), { direction: "taken", school: hit.attack.school, attackKind: enemyAttackKind(hit.attack) }, ); @@ -15701,20 +19377,52 @@ export const useCombatStore = create((set, get) => ({ ); const member = memberFromCompanionActor(storedMember, authoritativeActor); if (member.health <= 0) continue; - const defender = applyAuraStats( + const memberImpactAuras = aurasForEntity(currentBeforeHit.auras, member.id); + const learnedMemberCoaPassives = learnedRomCoaPassives( + member.classId, member.secondaryClassId, member.level, member.talentRanks, + ); + const memberBlockingStanceActive = activeLocalBlockingStance(memberImpactAuras, member.id, now); + const memberBlockingModifiers = romCurrentCoaBlockingStanceModifiers({ + classId: member.classId as AbilityDefinition["classId"], + ...(member.secondaryClassId ? { secondaryClassId: member.secondaryClassId as AbilityDefinition["secondaryClassId"] } : {}), + learnedPassiveSpellIds: learnedMemberCoaPassives, + blockingStanceAuraActive: memberBlockingStanceActive, + }); + const baseMemberDefender = applyAuraStats( deriveCharacterStats( member.classId, member.level, member.gearStats, member.raceId, ), - aurasForEntity(get().auras, member.id), + memberImpactAuras, + ); + const defender = { + ...baseMemberDefender, + parryPercent: baseMemberDefender.parryPercent + memberBlockingModifiers.parryRateBonusPercent, + }; + const predatoryInstinctsIncomingMultiplier = druidPredatoryInstinctsIncomingMultiplier( + member.classId, + member.talentRanks, + currentBeforeHit.auras, + member.id, + hit.attack, + now, ); const resolvedCombatResult = resolveEnemyDamageResult( hit.mob, hit.attack, defender, - Math.round(hit.amount * raceAffixMobDamageMultiplier(hit.mob.id, now)), + talentAdjustedIncomingDamage( + Math.round(hit.amount * raceAffixMobDamageMultiplier(hit.mob.id, now) + * predatoryInstinctsIncomingMultiplier), + member.classId === "shaman" + ? talentModifiersForRanks(member.talentRanks, member.classId).filter((modifier) => ( + modifier.sourceTalentId === WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID + )) + : [], + hit.attack.school, + ), hit.actorId, hit.attackRevision, now, @@ -15727,25 +19435,114 @@ export const useCombatStore = create((set, get) => ({ resolvedCombatResult.finalDamage, get().auras, hit.mob.id, hit.attack, now, ), }; + combatResult.finalDamage = romCoaIncomingDamageAfterPassives({ + amount: combatResult.finalDamage, + classId: member.classId, + secondaryClassId: member.secondaryClassId, + level: member.level, + talentRanks: member.talentRanks, + auras: currentBeforeHit.auras, + actorId: member.id, + school: hit.attack.school, + now, + }); + if (member.classId === "warrior") { + combatResult.finalDamage = wow335WarriorCriticalBlockDamage( + combatResult.finalDamage, + member.talentRanks[WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID] ?? 0, + resolvedCombatResult.blocked, + Boolean(hit.mob.characterDefender), + member.talentRanks[WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID] ?? 0, + ); + } commitMeleeAutoProc(combatResult.landed); const currentAuras = get().auras; - const auraAdjustedDamage = resolveAuraDamageValue( - paladinBlessedLifeDamageAfterIncomingHit( - combatResult.finalDamage, - member.classId, - member.talentRanks, - combatResult.landed, - hit.actorId, - hit.mob.id, - hit.attack.id, - hit.attackRevision, - now, - ), - aurasForEntity(currentAuras, hit.actorId), - { direction: "taken", school: hit.attack.school, attackKind: enemyAttackKind(hit.attack) }, + const memberAuras = aurasForEntity(currentAuras, hit.actorId); + const damageTransferPet = activeWardenDamageTransferPet( + currentBeforeHit.summons, + member.id, + now, + getPartyRuntimePosition(member.id), ); + const damageTransferActive = Boolean(damageTransferPet && memberAuras.some((aura) => ( + (aura.expiresAt === null || aura.expiresAt > now) + && aura.definition.utilityTags?.includes(ROM_WARDEN_DAMAGE_TRANSFER_TAG) + ))); + const damageTransferAuras = memberAuras.filter((aura) => ( + !aura.definition.utilityTags?.includes(ROM_WARDEN_DAMAGE_TRANSFER_TAG) + )); + const damageBeforeAuras = paladinBlessedLifeDamageAfterIncomingHit( + combatResult.finalDamage, + member.classId, + member.talentRanks, + combatResult.landed, + hit.actorId, + hit.mob.id, + hit.attack.id, + hit.attackRevision, + now, + ); + const damageTransferContext = { + direction: "taken" as const, + school: hit.attack.school, + attackKind: enemyAttackKind(hit.attack), + }; + const damageBeforeTransferBase = damageTransferActive + ? resolveAuraDamageValue(damageBeforeAuras, damageTransferAuras, damageTransferContext) + : 0; + const damageBeforeTransfer = damageTransferActive + ? wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage( + damageBeforeAuras, + damageBeforeTransferBase, + member.talentRanks[WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID] ?? 0, + member.classId === "warrior" && wow335WarriorHasDefensiveStance(memberAuras, hit.actorId, now), + ) + : 0; + const auraAdjustedDamageBase = resolveAuraDamageValue( + damageBeforeAuras, + damageTransferActive ? memberAuras : damageTransferAuras, + damageTransferContext, + ); + const auraAdjustedDamage = wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage( + damageBeforeAuras, + auraAdjustedDamageBase, + member.talentRanks[WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID] ?? 0, + member.classId === "warrior" && wow335WarriorHasDefensiveStance(memberAuras, hit.actorId, now), + ); + const spellDeflectionRank = member.classId === "death-knight" + ? member.talentRanks[WOW335_DEATH_KNIGHT_SPELL_DEFLECTION_TALENT_ID] ?? 0 + : 0; + const spellDeflectionProc = combatResult.landed && wow335DeathKnightSpellDeflectionShouldProc( + spellDeflectionRank, + { + directDamageSpell: enemyAttackKind(hit.attack) === "spell", + schoolMask: wow335DeathKnightSpellDeflectionSchoolMask(hit.attack.school), + parryChancePercent: defender.parryPercent, + roll: stableCombatUnit( + `${hit.actorId}:${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}:wow335-death-knight-spell-deflection`, + ), + damage: auraAdjustedDamage, + }, + ); + const spellDeflectionDamage = spellDeflectionProc + ? wow335DeathKnightSpellDeflectionDamage(auraAdjustedDamage, spellDeflectionRank) + : auraAdjustedDamage; + const spellDeflectionAbsorbed = Math.max(0, auraAdjustedDamage - spellDeflectionDamage); + const frostWarding = combatResult.landed + ? mageFrostWardingIncomingReduction({ + classId: member.classId, + talentRank: member.talentRanks[WOW335_MAGE_FROST_WARDING_TALENT_ID] ?? 0, + auras: currentAuras, + targetId: member.id, + attackKind: enemyAttackKind(hit.attack), + damageSchool: hit.attack.school, + spellDamage: spellDeflectionDamage, + roll: stableCombatUnit(`${member.id}:${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}:wow335-frost-warding`), + now, + }) + : null; const soulLinkDamage = resolveWarlockSoulLinkDamage( - auraAdjustedDamage, + frostWarding?.damageAfterReduction ?? spellDeflectionDamage, member.classId, member.talentRanks, currentAuras, @@ -15754,6 +19551,9 @@ export const useCombatStore = create((set, get) => ({ actorPosition(currentBeforeHit, member.id), now, ); + const damageTransferredToPet = damageTransferActive + ? Math.round(damageBeforeTransfer * ROM_WARDEN_DAMAGE_TRANSFER_FRACTION) + : 0; const namedAbsorb = absorbAuraDamage(currentAuras, { targetId: hit.actorId, amount: soulLinkDamage.casterDamage, @@ -15783,6 +19583,24 @@ export const useCombatStore = create((set, get) => ({ ), } : authoritativeActor.resources; + const existingManaPool = resourcesAfterAntiMagicShell.mana ?? authoritativeActor.resources.mana; + const frostWardingManaRefund = frostWarding?.manaRefund ?? 0; + const currentMana = existingManaPool?.current ?? member.resourcePools.mana ?? 0; + const maximumMana = existingManaPool?.maximum + ?? (member.resourceType === "mana" ? member.maxResource : defaultResourceMaximum("mana")); + const restoredMana = Math.min(frostWardingManaRefund, Math.max(0, maximumMana - currentMana)); + const resourcesAfterFrostWarding = restoredMana > 0 + ? { + ...resourcesAfterAntiMagicShell, + mana: normalizeActorResourcePool( + "mana", + currentMana + restoredMana, + maximumMana, + existingManaPool?.regenerationPerSecond ?? 0, + existingManaPool?.lastSpentAt ?? 0, + ), + } + : resourcesAfterAntiMagicShell; const redirectAura = aurasForEntity(namedAbsorb.auras, hit.actorId) .find((aura) => (aura.definition.redirectDamagePercent ?? 0) > 0); const redirectFraction = Math.min(1, Math.max(0, redirectAura?.definition.redirectDamagePercent ?? 0)); @@ -15811,28 +19629,56 @@ export const useCombatStore = create((set, get) => ({ if (redirected > 0 && redirectAura?.definition.utilityTags?.includes("rom-disregard-danger-one-hit")) { aurasAfterRedirect = aurasAfterRedirect.filter((aura) => aura.instanceId !== redirectAura.instanceId); } + const petAbsorb = damageTransferPet && damageTransferredToPet > 0 + ? absorbAuraDamage(aurasAfterRedirect, { + targetId: damageTransferPet.id, + amount: damageTransferredToPet, + school: hit.attack.school, + now, + countsAsAttack: true, + }) + : null; + const petHealthDamage = damageTransferPet && petAbsorb + ? Math.min(damageTransferPet.health, Math.max(0, Math.round(petAbsorb.remainingDamage))) + : 0; + const wardenUpdatedSummons = damageTransferPet && petAbsorb && petHealthDamage > 0 + ? currentBeforeHit.summons.flatMap((summon) => summon.id !== damageTransferPet.id + ? [summon] + : summon.health - petHealthDamage > 0 + ? [{ ...summon, health: summon.health - petHealthDamage }] + : []) + : currentBeforeHit.summons; const damaged = Math.min( authoritativeActor.health, Math.max(0, Math.round(namedAbsorb.remainingDamage - redirected)), ); const nextSummons = soulLinkDamage.demon && soulLinkDamage.demonDamage > 0 - ? currentBeforeHit.summons.flatMap((summon) => summon.id !== soulLinkDamage.demon!.id + ? wardenUpdatedSummons.flatMap((summon) => summon.id !== soulLinkDamage.demon!.id ? [summon] : summon.health - soulLinkDamage.demonDamage > 0 ? [{ ...summon, health: summon.health - soulLinkDamage.demonDamage }] : []) - : currentBeforeHit.summons; + : wardenUpdatedSummons; let nextCast = authoritativeActor.cast; if (damaged > 0 && nextCast && nextCast.pushbackHits < 2) { const castingAbility = abilityById(nextCast.abilityId); const resistance = castingAbility ? abilityPushbackResistance(castingAbility) : 0; if (stableCombatUnit(`${member.id}:${hit.attack.id}:${hit.attackRevision}:pushback`) >= resistance) { + const pushbackReduction = paladinConcentrationAuraPushbackReductionForTarget( + aurasAfterRedirect, + member.id, + now, + currentBeforeHit.classId, + currentBeforeHit.talentRanks, + partyState.members, + ); + const remainingPenalty = 1 - pushbackReduction; nextCast = { ...nextCast, pushbackHits: nextCast.pushbackHits + 1, completesAt: nextCast.mode === "channel" - ? Math.max(now, nextCast.completesAt - nextCast.originalDurationMs * 0.25) - : nextCast.completesAt + 500, + ? Math.max(now, nextCast.completesAt - nextCast.originalDurationMs * 0.25 * remainingPenalty) + : nextCast.completesAt + Math.round(500 * remainingPenalty), }; } } @@ -15844,13 +19690,13 @@ export const useCombatStore = create((set, get) => ({ cast: authoritativeActor.health - damaged > 0 ? nextCast : null, resources: damaged > 0 && ragePool ? { - ...resourcesAfterAntiMagicShell, + ...resourcesAfterFrostWarding, rage: { ...ragePool, current: Math.min(ragePool.maximum, ragePool.current + RAGE_PER_HIT_TAKEN), }, } - : resourcesAfterAntiMagicShell, + : resourcesAfterFrostWarding, }; const partyShieldOfValorCooldownReduction = romKnightShieldOfValorCooldownReductionMs( member.classId === "rom-knight" && aurasAfterRedirect.some((aura) => aura.targetId === member.id @@ -15909,7 +19755,10 @@ export const useCombatStore = create((set, get) => ({ appliedDamage += damaged; const procState = get(); let aurasAfterHit = consumeInnerFireCharges( - aurasAfterRedirect, member.id, combatResult.landed, enemyAttackKind(hit.attack), + petAbsorb?.auras ?? aurasAfterRedirect, + member.id, + combatResult.landed, + enemyAttackKind(hit.attack), ); const focusedWillRank = member.talentRanks[WOW335_PRIEST_FOCUSED_WILL_TALENT_ID] ?? 0; const focusedWillAura = member.classId === "priest" @@ -15947,7 +19796,44 @@ export const useCombatStore = create((set, get) => ({ ); aurasAfterHit = [...scentOfBlood.auras]; } + const partyAvoidTrigger: Wow335WarriorAvoidanceTrigger | null = combatResult.dodged + ? "dodge" + : combatResult.parried + ? "parry" + : combatResult.blocked + ? "block" + : null; + if (member.classId === "warrior" && partyAvoidTrigger) { + aurasAfterHit = maybeProcWarriorImprovedDefensiveStance( + aurasAfterHit, + member.id, + member.talentRanks[WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID] ?? 0, + partyAvoidTrigger, + `${member.id}:${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}`, + now, + ); + } + if (member.classId === "warrior" && combatResult.parried) { + aurasAfterHit = maybeProcWarriorImprovedVictoryRushOnParry( + aurasAfterHit, + member.id, + member.talentRanks[WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID] ?? 0, + true, + `${member.id}:${hit.mob.id}:${hit.attack.id}:${hit.attackRevision}`, + now, + ); + } let actorsAfterHit = { ...procState.actors, [nextActor.id]: nextActor }; + if (damageTransferPet && petAbsorb && damageTransferredToPet > 0) { + const updatedPet = nextSummons.find((summon) => summon.id === damageTransferPet.id); + if (updatedPet) { + actorsAfterHit[updatedPet.id] = combatActorFromSummon( + updatedPet, + currentBeforeHit.actors[updatedPet.id]?.level ?? member.level, + petAbsorb.auras, + ); + } else delete actorsAfterHit[damageTransferPet.id]; + } let aurasAfterProcs = aurasAfterHit; let eventsAfterHit = recordCombatEvent(procState.combatEvents, { occurredAt: now, @@ -15959,10 +19845,38 @@ export const useCombatStore = create((set, get) => ({ rawAmount: combatResult.rawDamage, effectiveAmount: damaged, overheal: 0, - absorbed: namedAbsorb.absorbed, + absorbed: spellDeflectionAbsorbed + namedAbsorb.absorbed, critical: combatResult.critical, outcome: combatResult.outcome, }); + if (restoredMana > 0 && frostWarding) eventsAfterHit = recordCombatEvent(eventsAfterHit, { + occurredAt: now, + kind: "resource", + sourceActorId: member.id, + targetActorId: member.id, + abilityId: frostWarding.wardAbilityId, + rawAmount: frostWardingManaRefund, + effectiveAmount: restoredMana, + overheal: frostWardingManaRefund - restoredMana, + absorbed: 0, + critical: false, + }); + if (damageTransferPet && petAbsorb && damageTransferredToPet > 0) { + eventsAfterHit = recordCombatEvent(eventsAfterHit, { + occurredAt: now, + kind: "damage", + sourceActorId: hit.mob.id, + targetActorId: damageTransferPet.id, + abilityId: hit.attack.id, + school: hit.attack.school, + rawAmount: damageTransferredToPet, + effectiveAmount: petHealthDamage, + overheal: 0, + absorbed: petAbsorb.absorbed, + critical: combatResult.critical, + outcome: petHealthDamage > 0 ? "hit" : "absorb", + }); + } if (soulLinkDamage.demon && soulLinkDamage.demonDamage > 0) { eventsAfterHit = recordCombatEvent(eventsAfterHit, { occurredAt: now, @@ -16044,7 +19958,12 @@ export const useCombatStore = create((set, get) => ({ critical: false, outcome: markOfBloodHealing > 0 ? "hit" : "overheal", }); - if (damaged > 0 && aurasAfterHit.some((aura) => aura.targetId === member.id && isPrayerOfMendingAura(aura))) { + let partyRetributionAuraProcs: readonly TriggeredAuraProc[] = []; + const hasPartyDamageTakenProcAura = aurasAfterHit.some((aura) => aura.targetId === member.id + && (isPrayerOfMendingAura(aura) || aura.definition.procs?.some((proc) => ( + proc.id.endsWith(":lightning-shield") || proc.id.endsWith(":earth-shield") + )))); + if (damaged > 0 && hasPartyDamageTakenProcAura) { const procProgression = progressionFromState(procState); const procWork: MutableCastWork = { classId: procState.classId, @@ -16079,7 +19998,7 @@ export const useCombatStore = create((set, get) => ({ raceId: procState.raceId, secondaryClassId: procState.secondaryClassId, }; - evaluatePrayerOfMendingInWork(procWork, { + const damageTakenEvent: ProcEvent = { trigger: "damage-taken", subjectId: member.id, otherId: hit.mob.id, @@ -16087,11 +20006,38 @@ export const useCombatStore = create((set, get) => ({ amount: damaged, school: hit.attack.school, attackKind: enemyAttackKind(hit.attack), - }, now); + }; + evaluatePrayerOfMendingInWork(procWork, damageTakenEvent, now); + evaluatePartyShamanShieldProcsInWork(procWork, damageTakenEvent, now); actorsAfterHit = procWork.actors; aurasAfterProcs = procWork.auras; eventsAfterHit = procWork.combatEvents; } + if (combatResult.landed && combatResult.rawDamage > 0) { + const retributionResult = evaluatePartyRetributionAuraInWork(aurasAfterProcs, { + trigger: "damage-taken", + subjectId: member.id, + otherId: hit.mob.id, + abilityId: hit.attack.id, + amount: damaged, + school: hit.attack.school, + attackKind: enemyAttackKind(hit.attack), + }, now, (sourceActorId) => paladinAuraSourceSpellPower( + sourceActorId, + procState, + aurasAfterProcs, + now, + )); + aurasAfterProcs = retributionResult.auras; + partyRetributionAuraProcs = retributionResult.triggered; + } + aurasAfterProcs = [...updateRomLeopardInstinctStacks( + aurasAfterProcs, + member.id, + learnedMemberCoaPassives.includes(ROM_COA_LEOPARD_INSTINCT_ID), + combatResult.dodged ? "dodge" : combatResult.landed && combatResult.rawDamage > 0 ? "hit" : "other", + now, + )]; set({ actors: actorsAfterHit, summons: nextSummons, @@ -16106,6 +20052,34 @@ export const useCombatStore = create((set, get) => ({ { amount: damaged, abilityId: hit.attack.id }, ), }); + if (member.classId === "warrior") { + const warriorDamageShield = wow335WarriorDamageShieldReflectDamage( + defender.blockValue, + member.talentRanks[WOW335_WARRIOR_DAMAGE_SHIELD_TALENT_ID] ?? 0, + enemyAttackKind(hit.attack) === "melee" && combatResult.landed && combatResult.rawDamage > 0, + ); + if (warriorDamageShield > 0) { + const current = useCombatStore.getState(); + current.damageMob( + hit.mob.id, + warriorDamageShield, + now, + threatSourceForActor(current, member.id, WOW335_WARRIOR_DAMAGE_SHIELD_ABILITY_ID), + "physical", + ); + } + } + for (const proc of partyRetributionAuraProcs) { + if (proc.action.kind !== "damage" || !proc.event.otherId || proc.action.amount <= 0) continue; + const current = useCombatStore.getState(); + current.damageMob( + proc.event.otherId, + proc.action.amount, + now, + threatSourceForActor(current, proc.sourceId, proc.procId, true), + proc.action.school, + ); + } if (unfairAdvantagePartyShouldProc) { useCombatStore.getState().damageMob( hit.mob.id, @@ -16217,6 +20191,39 @@ export const useCombatStore = create((set, get) => ({ : 0; const auraExpiration = expireAuras(state.auras, now); let activeAuras = [...auraExpiration.active]; + const greenGuardianProgress: Record = {}; + const greenGuardianTargets = new Set(activeAuras + .filter((aura) => aura.definition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG)) + .map((aura) => aura.targetId)); + for (const targetId of greenGuardianTargets) { + const isPlayer = targetId === PLAYER_AURA_ENTITY_ID; + const partyMember = isPlayer + ? undefined + : usePartyStore.getState().members.find((member) => member.id === targetId); + const exactPair = isPlayer + ? isRomMageDruidPair({ classId: state.classId, secondaryClassId: state.secondaryClassId }) + : Boolean(partyMember && partyMember.health > 0 + && isRomMageDruidPair({ classId: partyMember.classId, secondaryClassId: partyMember.secondaryClassId ?? undefined })); + const position = isPlayer ? state.playerPosition : getPartyRuntimePosition(targetId); + if (!exactPair || !position || (isPlayer && state.health <= 0)) continue; + const advance = romMageDruidGreenGuardianAdvanceStationaryProgress( + state.romMageDruidGreenGuardianStationaryProgress[targetId], + position, + Math.round(delta * 1_000), + ); + greenGuardianProgress[targetId] = advance.progress; + if (advance.stacksGained > 0) { + activeAuras = activeAuras.map((aura) => { + if (aura.targetId !== targetId + || !aura.definition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG)) return aura; + let stacks = aura.stacks; + for (let gained = 0; gained < advance.stacksGained; gained += 1) { + stacks = romMageDruidGreenGuardianStacksAfterStationarySecond(stacks); + } + return stacks === aura.stacks ? aura : { ...aura, stacks }; + }); + } + } const hasChampionRuneOverload = state.classId === "rom-champion" && activeAuras.some((aura) => aura.targetId === PLAYER_AURA_ENTITY_ID && aura.definition.utilityTags?.includes(ROM_CHAMPION_RUNE_OVERLOAD_TAG)); @@ -16440,20 +20447,26 @@ export const useCombatStore = create((set, get) => ({ && (!autoAttackSource || isPositionInFacingArc(autoAttackSource, autoAttackTargetPosition ?? state.playerPosition, Math.PI)) ); if (canAutoAttack) { - const supportsPlayerOffhandSwings = state.classId === "rogue" || state.classId === "shaman"; + const offHandWeapon = state.classId === "rogue" || state.classId === "rom-rogue" + || state.classId === "shaman" || state.classId === "death-knight" + ? playerEquippedMeleeWeapon(state, "off-hand") + : null; + const supportsPlayerOffhandSwings = state.classId === "rogue" || state.classId === "rom-rogue" + || state.classId === "shaman" + || (state.classId === "death-knight" && Boolean(offHandWeapon)); const mainHandWeapon = supportsPlayerOffhandSwings ? playerEquippedMeleeWeapon(state, "main-hand") : null; - const offHandWeapon = supportsPlayerOffhandSwings - ? playerEquippedMeleeWeapon(state, "off-hand") - : null; const profile = playerAutoAttackProfile( state, aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID), - state.classId === "rogue" && offHandWeapon && !mainHandWeapon + (state.classId === "rogue" || state.classId === "rom-rogue") && offHandWeapon && !mainHandWeapon ? null : mainHandWeapon ?? undefined, ); + const flurryActiveBeforeMainHand = wow335ShamanFlurryIsActive( + work.auras, PLAYER_AURA_ENTITY_ID, now, + ); if (hasRomChampionRagePool(state.classId, state.secondaryClassId)) { const rage = gainRomRage( state.classId, @@ -16475,6 +20488,13 @@ export const useCombatStore = create((set, get) => ({ const autoAttackSchool = mainHandWeapon?.damageSchool ?? (offHandWeapon ? "physical" : state.gearStats.meleeWeapon?.damageSchool) ?? "physical"; + const mainHandAutoAttackSeed = `${PLAYER_AGGRO_ID}:auto:${autoAttackTargetId}:${now}`; + if (autoAttackTargetId && state.classId === "hunter") { + work.summons = work.summons.map((summon) => summon.hunterPet + && summon.ownerActorId === PLAYER_AGGRO_ID + ? { ...summon, hunterPetPendingOwnerAttackTargetId: autoAttackTargetId } + : summon); + } const result = resolveAndDamageMobInWork( state.classId, work, @@ -16484,64 +20504,33 @@ export const useCombatStore = create((set, get) => ({ playerThreatSource(state), "melee", autoAttackSchool, - `${PLAYER_AGGRO_ID}:auto:${autoAttackTargetId}:${now}`, + mainHandAutoAttackSeed, undefined, false, { isAutoAttack: true, isDualWielding }, 0, mainHandSpeedMs, ); - let autoAttackKilled = result.killed; - const enchantedThrowActive = work.auras.some((aura) => ( - aura.targetId === PLAYER_AURA_ENTITY_ID - && (aura.expiresAt === null || aura.expiresAt > now) - && aura.definition.utilityTags?.includes(ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG) - )); - if (romRogueEnchantedThrowShouldProc({ - classId: state.classId, - secondaryClassId: state.secondaryClassId, - sourceActorId: PLAYER_AGGRO_ID, - playerActorId: PLAYER_AGGRO_ID, - attackKind: "melee", - isAutoAttack: true, - attackLanded: Boolean(result.combatResult?.landed), - enchantedThrowActive, - }) && !result.killed) { - // The generated 491178 row points to hidden child 491185, and its - // tooltip explicitly defines that child as Throw (490309) damage. - // Reuse the local Throw payload so both paths share its damage and - // physical-school semantics without inventing projectile inventory. - const throwAbility = abilityById("rom-rogue-general-1"); - const throwDamage = throwAbility?.effects.find((effect) => effect.kind === "damage"); - if (throwAbility?.source === "runewaker" && throwDamage?.kind === "damage") { - const throwAmount = talentAdjustedAmount( - equipmentAdjustedCombatAmount( - throwDamage, - work.progression.level, - work.gearStats, - state.classId, - throwAbility, - ), - work.talentModifiers, - "damage-percent", - throwAbility, - ); - const throwSchool = throwDamage.school ?? abilityDamageSchool(state.classId, throwAbility); - const throwResult = resolveAndDamageMobInWork( - state.classId, - work, - autoAttackTargetId!, - throwAmount, - now, - playerThreatSource(state, throwAbility.id), - abilityAttackKind(state.classId, throwAbility), - throwSchool, - `${PLAYER_AGGRO_ID}:rom-enchanted-throw:${autoAttackTargetId}:${now}`, - throwAbility, - ); - autoAttackKilled = throwResult.killed; - } - } + const runeWeaponMainHand = state.classId === "death-knight" + && result.combatResult?.landed + && result.amount > 0 + ? maybeMirrorDeathKnightDancingRuneWeaponMeleeInWork( + work, + autoAttackTargetId!, + result.combatResult.rawDamage, + now, + playerThreatSource(state, "player-auto-attack"), + autoAttackSchool, + ) + : null; + maybeProcWarriorUnbridledWrathInWork( + work, + mainHandSpeedMs, + Boolean(result.combatResult?.landed && result.amount > 0), + mainHandAutoAttackSeed, + now, + ); + const autoAttackKilled = result.killed || Boolean(runeWeaponMainHand?.killed); if (result.amount > 0 && ( hasNativeRomWarriorRage || (!hasRomRagePool(state.classId, state.secondaryClassId) && work.maxResourcePools.rage !== undefined) @@ -16576,7 +20565,19 @@ export const useCombatStore = create((set, get) => ({ targetPosition: targetPosition ?? state.playerPosition, }); } - nextAutoAttackAt = now + profile.intervalMs; + // Resolve the next swing interval from post-hit auras so a Flurry + // proc affects the three swings following the critical strike. + const flurryActiveAfterMainHand = wow335ShamanFlurryIsActive( + work.auras, PLAYER_AURA_ENTITY_ID, now, + ); + const nextMainHandIntervalMs = flurryActiveBeforeMainHand || flurryActiveAfterMainHand + ? playerAutoAttackProfile( + state, + aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID), + mainHandWeapon, + ).intervalMs + : profile.intervalMs; + nextAutoAttackAt = now + nextMainHandIntervalMs; if (autoAttackKilled) { autoAttackTargetId = null; nextAutoAttackAt = 0; @@ -16586,13 +20587,33 @@ export const useCombatStore = create((set, get) => ({ if (!supportsPlayerOffhandSwings || !offHandWeapon || !autoAttackTargetId) { nextOffhandAutoAttackAt = 0; } else if (now >= nextOffhandAutoAttackAt) { + const playerAuras = aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID); + const flurryActiveBeforeOffhand = wow335ShamanFlurryIsActive( + work.auras, PLAYER_AURA_ENTITY_ID, now, + ); + const offHandMasteryActive = state.classId === "rom-rogue" && playerAuras.some((aura) => ( + (aura.expiresAt === null || aura.expiresAt > now) + && aura.definition.utilityTags?.includes(ROM_ROGUE_OFF_HAND_MASTERY_TAG) + )); const offhandProfile = playerOffhandAutoAttackProfile( state, offHandWeapon, - aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID), + playerAuras, + offHandMasteryActive ? ROM_ROGUE_OFF_HAND_MASTERY_DAMAGE_PERCENT : 0, ); const offhandSchool = offHandWeapon.damageSchool; const offhandSeed = `${PLAYER_AGGRO_ID}:offhand-auto:${autoAttackTargetId}:${now}`; + const offhandRules: CombatResultRules = { + isAutoAttack: true, + isDualWielding: true, + ...(offHandMasteryActive + ? { + baseMissChancePercent: Math.max(0, + baseMissChancePercent("melee", state.level, autoAttackTarget.level, true) + - ROM_ROGUE_OFF_HAND_MASTERY_ACCURACY_PERCENT), + } + : {}), + }; const result = resolveAndDamageMobInWork( state.classId, work, @@ -16605,10 +20626,22 @@ export const useCombatStore = create((set, get) => ({ offhandSeed, undefined, false, - { isAutoAttack: true, isDualWielding: true }, + offhandRules, 0, offHandWeapon.speedMs, ); + const runeWeaponOffHand = state.classId === "death-knight" + && result.combatResult?.landed + && result.amount > 0 + ? maybeMirrorDeathKnightDancingRuneWeaponMeleeInWork( + work, + autoAttackTargetId, + result.combatResult.rawDamage, + now, + playerThreatSource(state, PLAYER_OFFHAND_AUTO_ATTACK_ID), + offhandSchool, + ) + : null; if (result.combatResult?.landed) { maybeProcRogueCombatPotencyInWork(work, offhandSeed, now); } @@ -16630,8 +20663,24 @@ export const useCombatStore = create((set, get) => ({ targetPosition: targetPosition ?? state.playerPosition, }); } - nextOffhandAutoAttackAt = now + offhandProfile.intervalMs; - if (result.killed) { + const postAttackAuras = aurasForEntity(work.auras, PLAYER_AURA_ENTITY_ID); + const postAttackOffHandMasteryActive = state.classId === "rom-rogue" && postAttackAuras.some((aura) => ( + (aura.expiresAt === null || aura.expiresAt > now) + && aura.definition.utilityTags?.includes(ROM_ROGUE_OFF_HAND_MASTERY_TAG) + )); + const flurryActiveAfterOffhand = wow335ShamanFlurryIsActive( + work.auras, PLAYER_AURA_ENTITY_ID, now, + ); + const nextOffhandIntervalMs = flurryActiveBeforeOffhand || flurryActiveAfterOffhand + ? playerOffhandAutoAttackProfile( + state, + offHandWeapon, + postAttackAuras, + postAttackOffHandMasteryActive ? ROM_ROGUE_OFF_HAND_MASTERY_DAMAGE_PERCENT : 0, + ).intervalMs + : offhandProfile.intervalMs; + nextOffhandAutoAttackAt = now + nextOffhandIntervalMs; + if (result.killed || runeWeaponOffHand?.killed) { autoAttackTargetId = null; nextAutoAttackAt = 0; nextOffhandAutoAttackAt = 0; @@ -16670,6 +20719,19 @@ export const useCombatStore = create((set, get) => ({ while (remainingTicks > 0 && nextTickAt <= now && timedEffectTargetAlive(effect)) { const warPrayerSealTick = effect.kind === "dot" && effect.tag === "rom-knight-war-prayer-seal"; const ability = abilityById(effect.sourceAbilityId); + const hotSourcePartyMember = effect.kind === "hot" + ? usePartyStore.getState().members.find((member) => member.id === effect.sourceActorId) + : undefined; + const hotSourceClassId = hotSourcePartyMember?.classId + ?? (effect.sourceActorId === PLAYER_AGGRO_ID ? state.classId : null); + const hotSourceTalentRanks = hotSourcePartyMember?.talentRanks + ?? (effect.sourceActorId === PLAYER_AGGRO_ID ? work.talentRanks : {}); + const hotMasterShapeshifterModifiers = hotSourceClassId === "druid" + ? wow335DruidMasterShapeshifterModifiersForForm( + hotSourceTalentRanks[WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID] ?? 0, + wow335DruidShapeshiftFormForAuras(work.auras, effect.sourceActorId, nextTickAt), + ).filter((modifier) => modifier.kind === "healing-percent") + : []; const immolationCasterMember = effect.kind === "dot" && effect.tag === WOW335_WARLOCK_METAMORPHOSIS_IMMOLATION_TAG ? usePartyStore.getState().members.find((member) => member.id === effect.sourceActorId) : null; @@ -16711,7 +20773,7 @@ export const useCombatStore = create((set, get) => ({ const unadjustedTickAmount = ability && effect.fixedAmount === undefined ? talentAdjustedAmount( baseAmount, - state.talentModifiers, + [...state.talentModifiers, ...hotMasterShapeshifterModifiers], effect.kind === "dot" ? "damage-percent" : "healing-percent", ability, true, @@ -17261,13 +21323,90 @@ export const useCombatStore = create((set, get) => ({ }); work.summons = work.summons.map((summon) => { - if ( - summon.health <= 0 - || summon.controlledUntil > now - || summon.cast - || (summon.attackDamage <= 0 && !summon.healingPulse && !summon.antiMagicZone) - ) return summon; + const hunterPetOwnerMember = summon.hunterPet && summon.ownerActorId !== PLAYER_AGGRO_ID + ? usePartyStore.getState().members.find((member) => member.id === summon.ownerActorId) + : undefined; + if (summon.hunterPet) { + const ownerBaseStats = summon.ownerActorId === PLAYER_AGGRO_ID + ? playerCharacterStats( + work.classId, + work.progression.level, + work.gearStats, + work.raceId, + work.secondaryClassId, + work.talentModifiers, + ) + : hunterPetOwnerMember + ? playerCharacterStats( + hunterPetOwnerMember.classId, + hunterPetOwnerMember.level, + hunterPetOwnerMember.gearStats, + hunterPetOwnerMember.raceId, + hunterPetOwnerMember.secondaryClassId ?? null, + talentModifiersForRanks(hunterPetOwnerMember.talentRanks, hunterPetOwnerMember.classId), + ) + : undefined; + const ownerAuraId = summon.ownerActorId === PLAYER_AGGRO_ID + ? PLAYER_AURA_ENTITY_ID + : summon.ownerActorId; + const ownerStats = ownerBaseStats + ? applyAuraStats(ownerBaseStats, aurasForEntity(work.auras, ownerAuraId)) + : undefined; + if (ownerStats) { + const profile = wow335HunterPetProfileForLevel( + hunterPetOwnerMember?.level ?? work.progression.level, + summon.hunterPet.family, + ownerStats, + ); + const effectiveStats = profile.effectiveStats; + if (effectiveStats.maxHealth !== summon.maxHealth + || effectiveStats.averageAutoAttackDamage !== summon.attackDamage + || effectiveStats.attackPower !== summon.hunterPet.effectiveStats.attackPower + || effectiveStats.inheritedStamina !== summon.hunterPet.effectiveStats.inheritedStamina + || effectiveStats.inheritedRangedAttackPower !== summon.hunterPet.effectiveStats.inheritedRangedAttackPower) { + summon = { + ...summon, + maxHealth: effectiveStats.maxHealth, + health: Math.min(summon.health, effectiveStats.maxHealth), + attackDamage: effectiveStats.averageAutoAttackDamage, + hunterPet: profile, + }; + } + } + } + if (summon.health <= 0) return summon; + if (summon.hunterPet) { + const focus = summon.resources.focus ?? normalizeActorResourcePool("focus", 100, 100, 5, now); + const elapsedMs = Math.max(0, now - (summon.hunterPetFocusUpdatedAt ?? now)); + const ownerIsHunter = summon.ownerActorId === PLAYER_AGGRO_ID + ? work.classId === "hunter" + : hunterPetOwnerMember?.classId === "hunter"; + const bestialDisciplineRank = ownerIsHunter + ? summon.ownerActorId === PLAYER_AGGRO_ID + ? work.talentRanks[WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID] ?? 0 + : hunterPetOwnerMember?.talentRanks[WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID] ?? 0 + : 0; + const focusRegenerationPerSecond = wow335HunterPetFocusRegenerationPerSecond( + WOW335_HUNTER_PET_BASE_FOCUS_REGENERATION_PER_SECOND, + bestialDisciplineRank, + ); + summon = { + ...summon, + resources: { + ...summon.resources, + focus: { + ...focus, + regenerationPerSecond: focusRegenerationPerSecond, + current: Math.min(focus.maximum, focus.current + focusRegenerationPerSecond * elapsedMs / 1_000), + }, + }, + hunterPetFocusUpdatedAt: now, + }; + } + if (summon.controlledUntil > now || summon.cast + || (summon.attackDamage <= 0 && !summon.healingPulse && !summon.antiMagicZone)) return summon; const readyToAct = summon.nextActionAt <= now && summon.globalCooldownEndsAt <= now; + const readyToSwing = summon.nextActionAt <= now; const summonAbility = abilityById(summon.sourceAbilityId); if (summon.antiMagicZone) { if (!readyToAct) return summon; @@ -17400,65 +21539,269 @@ export const useCombatStore = create((set, get) => ({ } return { ...summon, nextActionAt: now + Math.max(500, summon.pulseIntervalMs) }; } - const targetId = summon.targetId && work.mobs[summon.targetId] && !work.mobs[summon.targetId].dead - ? summon.targetId - : state.selectedTargetId && work.mobs[state.selectedTargetId] && !work.mobs[state.selectedTargetId].dead - ? state.selectedTargetId - : Object.values(work.mobs).find((mob) => mob.engaged && !mob.dead)?.id ?? null; - if (!targetId) return readyToAct - ? { ...summon, nextActionAt: now + Math.max(500, summon.pulseIntervalMs) } - : summon; + let hunterPetDecision: ReturnType | null = null; + if (summon.hunterPet) { + const eligible = Object.values(work.mobs).filter((mob) => !mob.dead && !mob.despawned + && (mob.navigationEvadeUntil ?? 0) <= now && Boolean(getMobPosition(mob.id))); + const eligibleTargetIds = new Set(eligible.map((mob) => mob.id)); + const inMeleeRangeTargetIds = new Set(eligible.flatMap((mob) => { + const mobPosition = getMobPosition(mob.id); + return mobPosition && distanceSquared(summon.position, mobPosition) <= 25 ? [mob.id] : []; + })); + const ownerTargetId = summon.hunterPetPendingOwnerAttackTargetId ?? null; + const ownerPosition = summon.ownerActorId === PLAYER_AGGRO_ID + ? state.playerPosition + : getPartyRuntimePosition(summon.ownerActorId); + const petAtStayPosition = Boolean(summon.hunterPetStayPosition + && distanceSquared(summon.position, summon.hunterPetStayPosition) <= 1); + hunterPetDecision = wow335HunterPetTargetPolicy({ + command: summon.hunterPetCommand ?? WOW335_HUNTER_PET_DEFAULT_COMMAND, + reactMode: summon.hunterPetReactMode ?? WOW335_HUNTER_PET_DEFAULT_REACT_MODE, + eligibleTargetIds, + commandTargetId: summon.hunterPetCommandTargetId, + isCommandAttack: summon.hunterPetIsCommandAttack, + currentTargetId: summon.targetId, + petAttackerTargetIds: eligible.filter((mob) => mob.targetActorId === summon.id).map((mob) => mob.id), + ownerAttackerTargetIds: eligible.filter((mob) => mob.targetActorId === summon.ownerActorId).map((mob) => mob.id), + ownerTargetId, + ambientTargetIds: eligible.filter((mob) => { + const mobPosition = getMobPosition(mob.id); + return mobPosition && distanceSquared(summon.position, mobPosition) <= Math.max(5, mob.aggroRange) ** 2; + }).map((mob) => mob.id), + petAtStayPosition, + isReturning: summon.hunterPetIsReturning, + isCommandFollow: summon.hunterPetIsCommandFollow, + isFollowing: summon.hunterPetIsFollowing, + inMeleeRangeTargetIds, + }); + summon = { ...summon, hunterPetPendingOwnerAttackTargetId: null }; + } + const targetId = hunterPetDecision + ? hunterPetDecision.targetId + : summon.targetId && work.mobs[summon.targetId] && !work.mobs[summon.targetId].dead + ? summon.targetId + : state.selectedTargetId && work.mobs[state.selectedTargetId] && !work.mobs[state.selectedTargetId].dead + ? state.selectedTargetId + : Object.values(work.mobs).find((mob) => mob.engaged && !mob.dead)?.id ?? null; + if (!targetId) { + let position = summon.position; + let isReturning = Boolean(summon.hunterPetIsReturning); + let isFollowing = Boolean(summon.hunterPetIsFollowing); + const ownerPosition = summon.ownerActorId === PLAYER_AGGRO_ID + ? state.playerPosition + : getPartyRuntimePosition(summon.ownerActorId); + const returnTarget = hunterPetDecision?.movement === "return-to-stay" + ? summon.hunterPetStayPosition + : hunterPetDecision?.movement === "follow-owner" ? ownerPosition : null; + if (returnTarget) { + const dx = returnTarget[0] - position[0]; + const dz = returnTarget[2] - position[2]; + const length = Math.hypot(dx, dz); + const stopDistance = hunterPetDecision?.movement === "follow-owner" ? 3 : 0.5; + if (length > stopDistance) { + const step = Math.min(length - stopDistance, 4 * delta); + const requested: CombatPosition = [position[0] + dx / length * step, position[1], position[2] + dz / length * step]; + position = projectCombatGroundPoint(requested, step, position) ?? position; + } + if (hunterPetDecision?.movement === "follow-owner") { + isReturning = Math.hypot(returnTarget[0] - position[0], returnTarget[2] - position[2]) > stopDistance; + isFollowing = !isReturning; + } + } + const followStateChanged = isReturning !== Boolean(summon.hunterPetIsReturning) + || isFollowing !== Boolean(summon.hunterPetIsFollowing); + return readyToAct || position !== summon.position || followStateChanged + ? { ...summon, targetId: null, position, hunterPetIsReturning: isReturning, + hunterPetIsFollowing: isFollowing, + nextActionAt: readyToAct ? now + Math.max(500, summon.pulseIntervalMs) : summon.nextActionAt } + : summon; + } + const furiousHowl = summon.hunterPet?.furiousHowl; + const howlTarget = work.mobs[targetId]; + const howlFocus = summon.resources.focus ?? normalizeActorResourcePool("focus", 100, 100, 5, now); + if (furiousHowl + && howlTarget?.engaged + && !howlTarget.dead + && (summon.hunterPetFuriousHowlReadyAt ?? 0) <= now + && howlFocus.current >= furiousHowl.focusCost) { + const howlAura = wow335HunterPetFuriousHowlAura(furiousHowl); + const ownerAuraId = summon.ownerActorId === PLAYER_AGGRO_ID + ? PLAYER_AURA_ENTITY_ID + : summon.ownerActorId; + for (const recipientId of [summon.id, ownerAuraId]) { + work.auras = [...applyCombatAura(work.auras, { + definition: howlAura, + sourceId: summon.id, + targetId: recipientId, + now, + }).auras]; + } + summon = { + ...summon, + resources: { + ...summon.resources, + focus: { + ...howlFocus, + current: Math.max(0, howlFocus.current - furiousHowl.focusCost), + lastSpentAt: now, + }, + }, + hunterPetFuriousHowlReadyAt: now + furiousHowl.cooldownMs, + }; + } const targetPosition = getMobPosition(targetId); let position = summon.position; if (targetPosition) { const dx = targetPosition[0] - position[0]; const dz = targetPosition[2] - position[2]; const length = Math.hypot(dx, dz); - if (summon.kind !== "totem" && length > 4) { + if (summon.kind !== "totem" + && !(summon.hunterPet && hunterPetDecision?.movement === "hold-stay") + && length > 4) { const step = Math.min(length - 3, 4 * delta); const requested: CombatPosition = [position[0] + dx / length * step, position[1], position[2] + dz / length * step]; position = projectCombatGroundPoint(requested, step, position) ?? position; } - if ( - readyToAct - && Math.sqrt(distanceSquared(position, targetPosition)) <= (summon.kind === "totem" ? 30 : 5) - && combatHasLineOfSight(position, targetPosition) - ) { - const hunterPetAttack = state.classId === "hunter" - && summon.kind === "pet" - && summon.ownerActorId === PLAYER_AGGRO_ID; - const petAttackDamage = hunterPetAttack - ? Math.max(1, Math.round(resolveAuraDamageValue( - summon.attackDamage, - aurasForEntity(work.auras, summon.id), - { direction: "dealt", school: "physical", attackKind: "melee" }, - ))) - : summon.attackDamage; - const result = damageMobInWork( - state.classId, - work, - targetId, - petAttackDamage, - now, - { actorId: summonAbility?.name === "Shadowfiend" ? summon.id : summon.ownerActorId, - role: "damage", abilityId: summon.sourceAbilityId }, - summonAbility?.name === "Shadowfiend" ? "shadow" : "physical", - ); - if (hunterPetAttack && result.amount > 0) { - evaluateProcsInWork(work, { - trigger: "hit", - subjectId: summon.id, - otherId: targetId, - abilityId: summon.sourceAbilityId, - amount: result.amount, - school: "physical", - attackKind: "melee", - }, now); + const inAttackRange = Math.sqrt(distanceSquared(position, targetPosition)) <= (summon.kind === "totem" ? 30 : 5); + const hasLineOfSight = combatHasLineOfSight(position, targetPosition); + const hunterPetCanAttack = !summon.hunterPet + || (summon.hunterPetCommand ?? WOW335_HUNTER_PET_DEFAULT_COMMAND) !== "stay" + || summon.hunterPetIsCommandAttack + || Boolean(summon.hunterPetStayPosition && distanceSquared(position, summon.hunterPetStayPosition) <= 1); + if (inAttackRange && hasLineOfSight && hunterPetCanAttack) { + if (summon.hunterPet + && summon.hunterPetGrowlAutocastEnabled + && (summon.hunterPetGrowlReadyAt ?? 0) <= now) { + const growl = wow335HunterPetGrowlProfileForLevel(summon.hunterPet.baseStats.level); + const growlFocus = summon.resources.focus ?? normalizeActorResourcePool("focus", 100, 100, 5, now); + const growlTarget = work.mobs[targetId]; + if (growlTarget && !growlTarget.dead && (growlTarget.navigationEvadeUntil ?? 0) <= now + && growlFocus.current >= growl.focusCost) { + if (!growlTarget.engaged) engageMobGroupInWork(work, targetId, now, summon.id); + const currentTarget = work.mobs[targetId]; + if (currentTarget) { + work.mobs[targetId] = { + ...currentTarget, + threatByActor: addActorThreat(currentTarget.threatByActor, summon.id, growl.threatAmount), + }; + } + summon = { + ...summon, + resources: { + ...summon.resources, + focus: { ...growlFocus, current: Math.max(0, growlFocus.current - growl.focusCost), lastSpentAt: now }, + }, + hunterPetGrowlReadyAt: now + growl.cooldownMs, + }; + } } - if (summonAbility?.name === "Shadowfiend" && result.amount > 0) { - shadowfiendManaRestores.push({ - ownerActorId: summon.ownerActorId, summonId: summon.id, abilityId: summon.sourceAbilityId, - }); + if (summon.hunterPet && (summon.hunterPetSpecialReadyAt ?? 0) <= now) { + const focus = summon.resources.focus ?? normalizeActorResourcePool("focus", 100, 100, 5, now); + if (focus.current >= summon.hunterPet.focusCost) { + const target = work.mobs[targetId]; + const specialExecuted = Boolean(target && !target.dead && (target.navigationEvadeUntil ?? 0) <= now); + const killCommandAura = work.auras.find((aura) => ( + aura.targetId === summon.id + && aura.definition.utilityTags?.includes(WOW335_HUNTER_PET_KILL_COMMAND_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + )); + const killCommandBonus = killCommandAura + ? wow335HunterPetKillCommandBonusPercent(killCommandAura.stacks) + : 0; + const petAuras = aurasForEntity(work.auras, summon.id); + const petAttackPower = resolveAuraStatValue( + summon.hunterPet.effectiveStats.attackPower, + petAuras, + "attack-power", + ); + const baseSpecialDamage = resolveAuraDamageValue( + wow335HunterPetBiteDamage( + summon.hunterPet, + petAttackPower - summon.hunterPet.effectiveStats.attackPower, + ), + petAuras, + { direction: "dealt", school: "physical", attackKind: "melee" }, + ); + const specialDamage = Math.max(1, Math.round(baseSpecialDamage * (1 + killCommandBonus / 100))); + const specialResult = damageMobInWork( + state.classId, + work, + targetId, + specialDamage, + now, + { actorId: summon.ownerActorId, role: "damage", abilityId: summon.hunterPet.abilityId }, + "physical", + ); + if (specialResult.amount > 0) { + evaluateProcsInWork(work, { + trigger: "hit", + subjectId: summon.id, + otherId: targetId, + abilityId: summon.hunterPet.abilityId, + amount: specialResult.amount, + school: "physical", + attackKind: "melee", + }, now); + } + if (specialExecuted && killCommandAura) { + work.auras = work.auras.flatMap((aura) => { + if (aura.instanceId !== killCommandAura.instanceId) return [aura]; + return aura.stacks > 1 ? [{ ...aura, stacks: aura.stacks - 1 }] : []; + }); + } + summon = { + ...summon, + resources: { + ...summon.resources, + focus: { ...focus, current: Math.max(0, focus.current - summon.hunterPet.focusCost), lastSpentAt: now }, + }, + hunterPetSpecialReadyAt: now + summon.hunterPet.globalCooldownMs, + }; + } + } + const petAutoAttackReady = summon.hunterPet ? readyToSwing : readyToAct; + if (petAutoAttackReady) { + const hunterPetAttack = Boolean(summon.hunterPet); + const furiousHowlDamageBonus = summon.hunterPet && work.auras.some((aura) => ( + aura.targetId === summon.id + && aura.definition.utilityTags?.includes(WOW335_HUNTER_PET_FURIOUS_HOWL_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + )) + ? wow335HunterPetFuriousHowlAutoAttackDamageBonus(summon.hunterPet.furiousHowl) + : 0; + const petAttackDamage = hunterPetAttack + ? Math.max(1, Math.round(resolveAuraDamageValue( + summon.attackDamage, + aurasForEntity(work.auras, summon.id), + { direction: "dealt", school: "physical", attackKind: "melee" }, + ) + furiousHowlDamageBonus)) + : summon.attackDamage; + const result = damageMobInWork( + state.classId, + work, + targetId, + petAttackDamage, + now, + { actorId: summonAbility?.name === "Shadowfiend" ? summon.id : summon.ownerActorId, + role: "damage", abilityId: summon.sourceAbilityId }, + summonAbility?.name === "Shadowfiend" ? "shadow" : "physical", + ); + if (hunterPetAttack && result.amount > 0) { + evaluateProcsInWork(work, { + trigger: "hit", + subjectId: summon.id, + otherId: targetId, + abilityId: summon.sourceAbilityId, + amount: result.amount, + school: "physical", + attackKind: "melee", + }, now); + } + if (summonAbility?.name === "Shadowfiend" && result.amount > 0) { + shadowfiendManaRestores.push({ + ownerActorId: summon.ownerActorId, summonId: summon.id, abilityId: summon.sourceAbilityId, + }); + } } } } @@ -17466,6 +21809,10 @@ export const useCombatStore = create((set, get) => ({ ...summon, targetId, position, + ...(summon.hunterPet ? { + hunterPetIsReturning: false, + hunterPetIsFollowing: false, + } : {}), nextActionAt: readyToAct ? now + Math.max(500, summon.pulseIntervalMs) : summon.nextActionAt, }; }); @@ -17540,6 +21887,7 @@ export const useCombatStore = create((set, get) => ({ summons: work.summons, areaEffects: work.areaEffects, combatEvents: work.combatEvents, + romMageDruidGreenGuardianStationaryProgress: greenGuardianProgress, actors: work.actors, cooldowns: work.cooldowns, schoolLockedUntil: Object.fromEntries( @@ -17614,6 +21962,7 @@ export const useCombatStore = create((set, get) => ({ : null; let ticksCompleted = cast.ticksCompleted; let nextTickAt = cast.nextTickAt; + let romPriestHolyCandleCharged = cast.romPriestHolyCandleCharged ?? false; while (ability && ticksCompleted < cast.totalTicks && nextTickAt <= now && nextTickAt <= cast.completesAt) { const channelTargeting = targetingRulesForAbility(ability); const groundChannel = channelTargeting.shape === "ground"; @@ -17640,7 +21989,7 @@ export const useCombatStore = create((set, get) => ({ if (targetUnavailable || distance < minimumRange || (cast.targetId !== null && distance > maximumRange)) { get().cancelCast((target?.dead || friendlyTarget?.health === 0) ? "Channel ended: the target was defeated." - : "Channel interrupted: target unavailable."); + : "Channel interrupted: target unavailable.", now); return; } const channelEffects = channelAmountEffects(ability, cast.totalTicks); @@ -17690,6 +22039,14 @@ export const useCombatStore = create((set, get) => ({ nextTickAt, ) : damageAmount; + const maelstromWeaponPvpDamageReductionPercent = channelTarget?.characterDefender + && abilityAttackKind(latest.classId, ability) === "spell" + ? wow335ShamanMaelstromWeaponPvpDamageReductionPercent( + cast.maelstromWeaponRank ?? 0, + cast.maelstromWeaponStacksConsumed ?? 0, + ability.name, + ) + : 0; get().damageMob( channelTargetId, talentAdjustedAmount( @@ -17697,7 +22054,7 @@ export const useCombatStore = create((set, get) => ({ latest.talentModifiers, "damage-percent", ability, - ), + ) * (1 - maelstromWeaponPvpDamageReductionPercent / 100), nextTickAt, playerThreatSource(get(), ability.id, true), abilityDamageSchool(get().classId, ability), @@ -17719,6 +22076,14 @@ export const useCombatStore = create((set, get) => ({ } } if (healingAmount > 0 && !(ability.target === "any" && channelHostile)) { + if (!romPriestHolyCandleCharged && get().classId === "rom-priest" + && get().secondaryClassId === null) { + romPriestHolyCandleCharged = get().triggerRomPriestHolyCandle( + PLAYER_AURA_ENTITY_ID, + ability.id, + nextTickAt, + ) > 0; + } const perTargetHealing = talentAdjustedAmount( healingAmount, get().talentModifiers, @@ -17845,7 +22210,12 @@ export const useCombatStore = create((set, get) => ({ if (ability) get().castAbility(cast.abilityId, cast.origin, now, cast); else set({ activeCast: null }); } else if (ticksCompleted !== cast.ticksCompleted) { - set({ activeCast: { ...cast, ticksCompleted, nextTickAt } }); + set({ activeCast: { + ...cast, + ticksCompleted, + nextTickAt, + ...(romPriestHolyCandleCharged ? { romPriestHolyCandleCharged: true } : {}), + } }); } return; } diff --git a/src/game/deathKnightSourceRuntime.test.ts b/src/game/deathKnightSourceRuntime.test.ts index 5a7cb9cf..e13e61e4 100644 --- a/src/game/deathKnightSourceRuntime.test.ts +++ b/src/game/deathKnightSourceRuntime.test.ts @@ -140,6 +140,18 @@ describe("Death Knight source-backed runtime mechanics", () => { expect(attempts.every((result) => result.healing === 0)).toBe(true); }); + it("extends Blood Plague and Frost Fever by Epidemic's generated duration", () => { + registerTarget(); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, "talent-1963": 2 }, + })); + const icyTouch = ability("Icy Touch"); + expect(useCombatStore.getState().castAbility(icyTouch.id, { targetActorId: "dk-target", now }).ok).toBe(true); + expect(useCombatStore.getState().effects.find((effect) => ( + effect.kind === "dot" && effect.tag === "frost-fever" && effect.targetId === "dk-target" + ))).toMatchObject({ remainingTicks: 7, intervalMs: 3_000 }); + }); + it("absorbs three quarters of magical damage up to half of maximum health", () => { const shell = ability("Anti-Magic Shell"); expect(useCombatStore.getState().castAbility(shell.id, { now }).ok).toBe(true); diff --git a/src/game/floatingCombatText.test.ts b/src/game/floatingCombatText.test.ts new file mode 100644 index 00000000..a278ab8f --- /dev/null +++ b/src/game/floatingCombatText.test.ts @@ -0,0 +1,153 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import type { OnlineRelayEvent, OnlineSessionSnapshot } from "../app/onlineSessionTypes"; +import { damageTextClassName } from "../ui/FloatingDamageText"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { appendCombatEvent, type CombatEventInput } from "./combatEvents"; +import { + DAMAGE_TEXT_LIFETIME_MS, + MAX_DAMAGE_TEXT_PER_TARGET, + MAX_DAMAGE_TEXT_TOTAL, + clearDamageText, + connectFloatingCombatText, + damageTextCategory, + formatDamageText, + ingestRelayDamageText, + useDamageTextStore, + withSuppressedReplayDamageText, +} from "./floatingCombatText"; + +let disconnect: (() => void) | null = null; + +function damage(id: number, overrides: Partial = {}): void { + appendCombatEvent([], { + occurredAt: id * 100, + kind: "damage", + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: "target", + abilityId: "priest-smite", + rawAmount: 500, + effectiveAmount: 18, + overheal: 0, + absorbed: 0, + critical: false, + ...overrides, + }, id); +} + +beforeEach(() => { + vi.useFakeTimers(); + useCombatStore.getState().initializeCharacter({ classId: "priest", level: 20 }); + useCombatStore.getState().registerMob("target", { name: "Target", maxHealth: 1_000 }); + disconnect = connectFloatingCombatText(); +}); + +afterEach(() => { + disconnect?.(); + disconnect = null; + clearDamageText(); + vi.useRealTimers(); +}); + +describe("floating damage text", () => { + it("classifies own, ally, and incoming hits independently", () => { + const mobs = new Set(["target"]); + const party = new Set(["companion"]); + const online = new Set(["online-player:local", "online-player:friend"]); + expect(damageTextCategory(PLAYER_AGGRO_ID, "target", mobs, party, online, "online-player:local")).toBe("own"); + expect(damageTextCategory("companion", "target", mobs, party, online, "online-player:local")).toBe("ally"); + expect(damageTextCategory("online-player:friend", "target", mobs, party, online, "online-player:local")).toBe("ally"); + expect(damageTextCategory("target", PLAYER_AGGRO_ID, mobs, party, online, "online-player:local")).toBe("incoming"); + expect(damageTextCategory("target", "companion", mobs, party, online, "online-player:local")).toBe("incoming"); + }); + + it("shows effective Smite damage, preserves crit, and expires after 1.5 seconds", () => { + damage(1, { effectiveAmount: 17.6, critical: true }); + expect(useDamageTextStore.getState().byTarget.target).toEqual([ + expect.objectContaining({ amount: 18, critical: true, category: "own" }), + ]); + expect(formatDamageText(1_234.4)).toBe("1,234"); + expect(damageTextClassName(useDamageTextStore.getState().byTarget.target[0]!)).toContain("is-critical"); + vi.advanceTimersByTime(DAMAGE_TEXT_LIFETIME_MS); + expect(useDamageTextStore.getState().byTarget.target).toBeUndefined(); + }); + + it("honors each switch and removes a category immediately when disabled", () => { + damage(1); + expect(useDamageTextStore.getState().byTarget.target).toHaveLength(1); + useCombatStore.getState().updateSettings({ showOwnDamageText: false, showIncomingDamageText: true }); + expect(useDamageTextStore.getState().byTarget.target).toBeUndefined(); + damage(2); + expect(useDamageTextStore.getState().byTarget.target).toBeUndefined(); + damage(3, { sourceActorId: "target", targetActorId: PLAYER_AGGRO_ID }); + expect(useDamageTextStore.getState().byTarget[PLAYER_AGGRO_ID]).toEqual([ + expect.objectContaining({ category: "incoming", amount: 18 }), + ]); + damage(4, { sourceActorId: "target", targetActorId: PLAYER_AGGRO_ID, effectiveAmount: 0 }); + expect(useDamageTextStore.getState().byTarget[PLAYER_AGGRO_ID]).toHaveLength(1); + }); + + it("bounds bursts per target and across the scene", () => { + for (let id = 1; id <= 7; id += 1) damage(id); + expect(useDamageTextStore.getState().byTarget.target).toHaveLength(MAX_DAMAGE_TEXT_PER_TARGET); + const target = useCombatStore.getState().mobs.target; + useCombatStore.setState({ mobs: Object.fromEntries(Array.from({ length: 90 }, (_, index) => [`mob-${index}`, { ...target, id: `mob-${index}` }])) }); + for (let id = 0; id < 90; id += 1) damage(100 + id, { targetActorId: `mob-${id}` }); + expect(Object.values(useDamageTextStore.getState().byTarget).flat()).toHaveLength(MAX_DAMAGE_TEXT_TOTAL); + }); + + it("shows periodic and area hits on their own targets, including a killing hit", () => { + const first = useCombatStore.getState().mobs.target; + useCombatStore.setState({ mobs: { + target: { ...first, dead: true, health: 0 }, + second: { ...first, id: "second", health: 50 }, + } }); + damage(1, { targetActorId: "target", abilityId: "priest-shadow-word-pain", effectiveAmount: 9 }); + damage(2, { targetActorId: "second", abilityId: "priest-holy-nova", effectiveAmount: 14 }); + expect(useDamageTextStore.getState().byTarget.target?.[0]?.amount).toBe(9); + expect(useDamageTextStore.getState().byTarget.second?.[0]?.amount).toBe(14); + }); + + it("uses one relayed online crit and suppresses damage generated during replay", () => { + useCombatStore.getState().updateSettings({ showAllyDamageText: true }); + const snapshot = { + localAccountId: "local", + players: [{ accountId: "local" }, { accountId: "friend" }], + } as unknown as OnlineSessionSnapshot; + const relay = { + id: 40, + kind: "damage", + sourceAccountId: "friend", + sourceActorId: "online-player:friend", + targetActorId: "target", + effectiveAmount: 61, + critical: true, + } as OnlineRelayEvent; + withSuppressedReplayDamageText(() => damage(40, { sourceActorId: "online-player:friend", effectiveAmount: 61 })); + ingestRelayDamageText(relay, snapshot); + ingestRelayDamageText(relay, snapshot); + expect(useDamageTextStore.getState().byTarget.target).toEqual([ + expect.objectContaining({ amount: 61, critical: true, category: "ally", key: "relay:40" }), + ]); + }); + + it("maps relayed damage to the local player's party frame with its original crit", () => { + useCombatStore.getState().updateSettings({ showIncomingDamageText: true }); + const snapshot = { + localAccountId: "local", + players: [{ accountId: "local" }, { accountId: "friend" }], + } as unknown as OnlineSessionSnapshot; + ingestRelayDamageText({ + id: 41, + kind: "damage", + sourceAccountId: "friend", + sourceActorId: "target", + targetActorId: "online-player:local", + effectiveAmount: 36, + critical: true, + } as OnlineRelayEvent, snapshot); + expect(useDamageTextStore.getState().byTarget[PLAYER_AGGRO_ID]).toEqual([ + expect.objectContaining({ amount: 36, critical: true, category: "incoming" }), + ]); + }); +}); diff --git a/src/game/floatingCombatText.ts b/src/game/floatingCombatText.ts new file mode 100644 index 00000000..ff583286 --- /dev/null +++ b/src/game/floatingCombatText.ts @@ -0,0 +1,211 @@ +import { create } from "zustand"; +import type { OnlineRelayEvent, OnlineSessionSnapshot } from "../app/onlineSessionTypes"; +import { useOnlineSessionStore } from "../app/onlineSessionStore"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { subscribeCombatEvents, type StructuredCombatEvent } from "./combatEvents"; +import { isOnlinePlayerActorId, onlinePlayerActorId } from "./onlineSessionRuntime"; +import { usePartyStore } from "./partyStore"; +import { useGameStore } from "./store"; + +export type DamageTextCategory = "own" | "ally" | "incoming"; + +export interface DamageTextPopup { + readonly key: string; + readonly targetActorId: string; + readonly amount: number; + readonly critical: boolean; + readonly category: DamageTextCategory; + readonly slot: number; + readonly sequence: number; +} + +export const DAMAGE_TEXT_LIFETIME_MS = 1_500; +export const MAX_DAMAGE_TEXT_PER_TARGET = 4; +export const MAX_DAMAGE_TEXT_TOTAL = 80; +export const EMPTY_DAMAGE_TEXT_POPUPS: readonly DamageTextPopup[] = Object.freeze([]); + +interface DamageTextState { + readonly byTarget: Readonly>; +} + +export const useDamageTextStore = create(() => ({ byTarget: {} })); + +let sequence = 0; +let replayDepth = 0; +const expiryTimers = new Map>(); +const seenRelayIds = new Set(); + +export function formatDamageText(amount: number): string { + return Math.max(1, Math.round(amount)).toLocaleString("en-US"); +} + +function sourceOwner(sourceId: string): string { + const combat = useCombatStore.getState(); + const visited = new Set(); + let id = sourceId; + while (!visited.has(id)) { + visited.add(id); + if (id === PLAYER_AGGRO_ID || isOnlinePlayerActorId(id) + || usePartyStore.getState().members.some((member) => member.id === id)) break; + const owner = combat.actors[id]?.ownerId + ?? combat.summons.find((summon) => summon.id === id)?.ownerActorId; + if (!owner) break; + id = owner; + } + return id; +} + +export function damageTextCategory( + sourceActorId: string, + targetActorId: string, + mobs: ReadonlySet, + party: ReadonlySet, + online: ReadonlySet, + localOnlineId: string | null, +): DamageTextCategory | null { + if (mobs.has(targetActorId)) { + if (sourceActorId === PLAYER_AGGRO_ID || sourceActorId === localOnlineId) return "own"; + if (party.has(sourceActorId) || online.has(sourceActorId)) return "ally"; + return null; + } + if (targetActorId === PLAYER_AGGRO_ID || targetActorId === localOnlineId + || party.has(targetActorId) || online.has(targetActorId)) return "incoming"; + return null; +} + +function enabled(category: DamageTextCategory): boolean { + const settings = useCombatStore.getState().settings; + return category === "own" ? settings.showOwnDamageText + : category === "ally" ? settings.showAllyDamageText + : settings.showIncomingDamageText; +} + +function removePopup(key: string, targetActorId: string): void { + expiryTimers.delete(key); + useDamageTextStore.setState((state) => { + const current = state.byTarget[targetActorId]; + if (!current?.some((popup) => popup.key === key)) return state; + const next = current.filter((popup) => popup.key !== key); + const byTarget = { ...state.byTarget }; + if (next.length) byTarget[targetActorId] = next; + else delete byTarget[targetActorId]; + return { byTarget }; + }); +} + +function addPopup(popup: Omit): void { + sequence += 1; + const nextPopup = { ...popup, slot: sequence % MAX_DAMAGE_TEXT_PER_TARGET, sequence }; + useDamageTextStore.setState((state) => { + const byTarget = { ...state.byTarget }; + const old = byTarget[popup.targetActorId] ?? EMPTY_DAMAGE_TEXT_POPUPS; + const target = [...old, nextPopup]; + for (const dropped of target.slice(0, -MAX_DAMAGE_TEXT_PER_TARGET)) { + clearTimeout(expiryTimers.get(dropped.key)); + expiryTimers.delete(dropped.key); + } + byTarget[popup.targetActorId] = target.slice(-MAX_DAMAGE_TEXT_PER_TARGET); + const all = Object.values(byTarget).flat(); + if (all.length > MAX_DAMAGE_TEXT_TOTAL) { + const oldest = all.reduce((left, right) => left.sequence < right.sequence ? left : right); + const remaining = byTarget[oldest.targetActorId].filter((item) => item.key !== oldest.key); + if (remaining.length) byTarget[oldest.targetActorId] = remaining; + else delete byTarget[oldest.targetActorId]; + clearTimeout(expiryTimers.get(oldest.key)); + expiryTimers.delete(oldest.key); + } + return { byTarget }; + }); + expiryTimers.set(nextPopup.key, setTimeout(() => removePopup(nextPopup.key, nextPopup.targetActorId), DAMAGE_TEXT_LIFETIME_MS)); +} + +export function clearDamageText(): void { + for (const timer of expiryTimers.values()) clearTimeout(timer); + expiryTimers.clear(); + seenRelayIds.clear(); + useDamageTextStore.setState({ byTarget: {} }); +} + +function ingestDamage(input: { + readonly key: string; + readonly sourceActorId: string; + readonly targetActorId: string; + readonly effectiveAmount: number; + readonly critical: boolean; +}, onlineOverride?: OnlineSessionSnapshot): void { + if (!Number.isFinite(input.effectiveAmount) || input.effectiveAmount <= 0) return; + const combat = useCombatStore.getState(); + const onlineSnapshot = onlineOverride ?? useOnlineSessionStore.getState().snapshot; + const localOnlineId = onlineSnapshot ? onlinePlayerActorId(onlineSnapshot.localAccountId) : null; + const party = new Set(usePartyStore.getState().members.map((member) => member.id)); + const online = new Set((onlineSnapshot?.players ?? []).map((player) => onlinePlayerActorId(player.accountId))); + const mobs = new Set(Object.keys(combat.mobs)); + const category = damageTextCategory(sourceOwner(input.sourceActorId), input.targetActorId, mobs, party, online, localOnlineId); + if (!category || !enabled(category)) return; + addPopup({ + key: input.key, + targetActorId: input.targetActorId === localOnlineId ? PLAYER_AGGRO_ID : input.targetActorId, + amount: Math.max(1, Math.round(input.effectiveAmount)), + critical: input.critical, + category, + }); +} + +export function withSuppressedReplayDamageText(run: () => T): T { + replayDepth += 1; + try { return run(); } finally { replayDepth -= 1; } +} + +export function ingestRelayDamageText(event: OnlineRelayEvent, snapshot: OnlineSessionSnapshot): void { + if (event.kind !== "damage" || event.sourceAccountId === snapshot.localAccountId || seenRelayIds.has(event.id)) return; + seenRelayIds.add(event.id); + if (seenRelayIds.size > 1_000) seenRelayIds.delete(seenRelayIds.values().next().value!); + ingestDamage({ + key: `relay:${event.id}`, + sourceActorId: event.sourceActorId, + targetActorId: event.targetActorId, + effectiveAmount: event.effectiveAmount ?? 0, + critical: event.critical ?? false, + }, snapshot); +} + +export function connectFloatingCombatText(): () => void { + clearDamageText(); + const onCombatEvent = (event: StructuredCombatEvent) => { + if (replayDepth || event.kind !== "damage") return; + ingestDamage({ + key: `local:${event.id}`, + sourceActorId: event.sourceActorId, + targetActorId: event.targetActorId, + effectiveAmount: event.effectiveAmount, + critical: event.critical, + }); + }; + const unsubscribeEvents = subscribeCombatEvents(onCombatEvent); + const unsubscribeCombat = useCombatStore.subscribe((state, previous) => { + if (state.combatEvents.length === 0 && previous.combatEvents.length > 0) clearDamageText(); + if (state.settings === previous.settings) return; + useDamageTextStore.setState((current) => { + const byTarget: Record = {}; + for (const [id, popups] of Object.entries(current.byTarget)) { + const kept = popups.filter((popup) => enabled(popup.category)); + for (const dropped of popups.filter((popup) => !enabled(popup.category))) { + clearTimeout(expiryTimers.get(dropped.key)); + expiryTimers.delete(dropped.key); + } + if (kept.length) byTarget[id] = kept.length === popups.length ? popups : kept; + } + return { byTarget }; + }); + }); + const unsubscribeGame = useGameStore.subscribe((state, previous) => { + if (state.sessionRevision !== previous.sessionRevision) clearDamageText(); + }); + return () => { + unsubscribeEvents(); + unsubscribeCombat(); + unsubscribeGame(); + clearDamageText(); + }; +} diff --git a/src/game/graphicsSettings.test.ts b/src/game/graphicsSettings.test.ts new file mode 100644 index 00000000..2ef53805 --- /dev/null +++ b/src/game/graphicsSettings.test.ts @@ -0,0 +1,31 @@ +import { describe, expect, it } from "vitest"; +import { + DEFAULT_GRAPHICS_SETTINGS, + ambientFillMultiplier, + nextGraphicsChoice, + normalizeGraphicsSettings, + RENDER_SCALES, +} from "./graphicsSettings"; + +describe("dungeon graphics settings", () => { + it("keeps known choices and rejects invalid saved values", () => { + expect(normalizeGraphicsSettings(DEFAULT_GRAPHICS_SETTINGS, { + renderScale: 2, + textureFiltering: 16, + shadowQuality: "high", + ambientFill: "low", + })).toEqual({ renderScale: 2, textureFiltering: 16, shadowQuality: "high", ambientFill: "low" }); + expect(normalizeGraphicsSettings(DEFAULT_GRAPHICS_SETTINGS, { + renderScale: 5 as 2, + textureFiltering: 8 as 16, + shadowQuality: "ultra" as "high", + })).toEqual(DEFAULT_GRAPHICS_SETTINGS); + }); + + it("cycles all resolution choices and keeps authored ambient fill unchanged", () => { + expect(nextGraphicsChoice(2, RENDER_SCALES)).toBe("adaptive"); + expect(ambientFillMultiplier("authored")).toBe(1); + expect(ambientFillMultiplier("low")).toBeLessThan(1); + expect(ambientFillMultiplier("high")).toBeGreaterThan(1); + }); +}); diff --git a/src/game/graphicsSettings.ts b/src/game/graphicsSettings.ts new file mode 100644 index 00000000..3cbd635d --- /dev/null +++ b/src/game/graphicsSettings.ts @@ -0,0 +1,47 @@ +export type RenderScale = "adaptive" | 1 | 1.5 | 2; +export type TextureFiltering = 1 | 4 | 16; +export type ShadowQuality = "off" | "standard" | "high"; +export type AmbientFill = "low" | "authored" | "high"; + +export interface GraphicsSettings { + readonly renderScale: RenderScale; + readonly textureFiltering: TextureFiltering; + readonly shadowQuality: ShadowQuality; + readonly ambientFill: AmbientFill; +} + +export const DEFAULT_GRAPHICS_SETTINGS: GraphicsSettings = Object.freeze({ + renderScale: "adaptive", + textureFiltering: 1, + shadowQuality: "standard", + ambientFill: "authored", +}); + +export const RENDER_SCALES: readonly RenderScale[] = ["adaptive", 1, 1.5, 2]; +export const TEXTURE_FILTERING_LEVELS: readonly TextureFiltering[] = [1, 4, 16]; +export const SHADOW_QUALITIES: readonly ShadowQuality[] = ["off", "standard", "high"]; +export const AMBIENT_FILL_LEVELS: readonly AmbientFill[] = ["low", "authored", "high"]; + +export function normalizeGraphicsSettings( + current: GraphicsSettings, + patch: Partial, +): GraphicsSettings { + return { + renderScale: RENDER_SCALES.includes(patch.renderScale as RenderScale) + ? patch.renderScale! : current.renderScale, + textureFiltering: TEXTURE_FILTERING_LEVELS.includes(patch.textureFiltering as TextureFiltering) + ? patch.textureFiltering! : current.textureFiltering, + shadowQuality: SHADOW_QUALITIES.includes(patch.shadowQuality as ShadowQuality) + ? patch.shadowQuality! : current.shadowQuality, + ambientFill: AMBIENT_FILL_LEVELS.includes(patch.ambientFill as AmbientFill) + ? patch.ambientFill! : current.ambientFill, + }; +} + +export function ambientFillMultiplier(fill: AmbientFill): number { + return fill === "low" ? 0.6 : fill === "high" ? 1.4 : 1; +} + +export function nextGraphicsChoice(current: T, choices: readonly T[]): T { + return choices[(choices.indexOf(current) + 1) % choices.length]; +} diff --git a/src/game/mageBlinkRuntime.test.ts b/src/game/mageBlinkRuntime.test.ts index c93ef7bc..94e97c64 100644 --- a/src/game/mageBlinkRuntime.test.ts +++ b/src/game/mageBlinkRuntime.test.ts @@ -1,15 +1,35 @@ import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilitiesForClass } from "./abilityCatalog"; +import { + registerCombatSpatialProvider, + resetCombatSpatialProvider, +} from "./combatSpatial"; import { PLAYER_AURA_ENTITY_ID, useCombatStore } from "./combatStore"; import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { useGameStore } from "./store"; describe("Mage Blink runtime", () => { beforeEach(() => { clearMobRuntimeRegistry(); + resetCombatSpatialProvider(); + useGameStore.getState().resetAtEntrance(); + useGameStore.getState().updatePlayerSnapshot({ position: [0, 0, 0], yaw: 0 }); useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); useCombatStore.getState().setPlayerPosition([0, 0, 0]); }); - it.each(["root", "stun"] as const)("clears active %s control on a successful cast", (mechanic) => { + it("uses the generated DBC radius as its forward travel distance", () => { + const blink = abilitiesForClass("mage").find((ability) => ability.id === "wow335-mage-blink"); + + expect(blink?.effects).toContainEqual(expect.objectContaining({ + kind: "movement", + movement: "teleport", + distance: 20, + })); + }); + + it.each(["root", "stun"] as const)("moves forward and clears active %s control", (mechanic) => { useCombatStore.setState({ controlledUntil: 10_000, controlMechanic: mechanic }); const result = useCombatStore.getState().castAbility("wow335-mage-blink", { @@ -18,6 +38,9 @@ describe("Mage Blink runtime", () => { }); expect(result).toMatchObject({ ok: true, abilityId: "wow335-mage-blink" }); + expect(useCombatStore.getState().playerPosition).toEqual([0, 0, 20]); + expect(useGameStore.getState().playerPosition).toEqual([0, 0, 20]); + expect(useGameStore.getState().activeSpawn.footPosition).not.toEqual([0, 0, 20]); expect(useCombatStore.getState()).toMatchObject({ controlledUntil: 0, controlMechanic: null }); expect(useCombatStore.getState().auras.filter((aura) => aura.targetId === PLAYER_AURA_ENTITY_ID)) .toEqual(expect.arrayContaining([ @@ -32,13 +55,14 @@ describe("Mage Blink runtime", () => { ])); }); - it("does not move away from a target when forward facing is unavailable", () => { + it("uses the player's facing rather than moving relative to the selected target", () => { + useGameStore.getState().updatePlayerSnapshot({ position: [0, 0, 0], yaw: Math.PI / 2 }); useCombatStore.getState().registerMob("blink-target", { name: "Blink target", maxHealth: 100, xpReward: 0, }); - setMobPosition("blink-target", [5, 0, 0]); + setMobPosition("blink-target", [0, 0, 5]); useCombatStore.getState().selectMob("blink-target"); const result = useCombatStore.getState().castAbility("wow335-mage-blink", { @@ -46,7 +70,60 @@ describe("Mage Blink runtime", () => { now: 1_000, }); + expect(result.ok).toBe(true); + expect(useCombatStore.getState().playerPosition[0]).toBeCloseTo(20); + expect(useCombatStore.getState().playerPosition[2]).toBeCloseTo(0); + }); + + it("projects the destination to ground and stops at the first line-of-sight blocker", () => { + const projectedRequests: Array<{ distance: number; origin: readonly number[] }> = []; + registerCombatSpatialProvider({ + actor: (actorId) => actorId === PLAYER_AGGRO_ID + ? { id: actorId, position: [0, 0, 0], yaw: 0 } + : null, + hasLineOfSight: (origin, target) => Math.hypot(target[0] - origin[0], target[2] - origin[2]) < 6, + projectGroundPoint: (requested, distance, origin = [0, 0, 0]) => { + projectedRequests.push({ + distance, + origin: [...origin], + }); + return [requested[0], 2, requested[2]]; + }, + }); + + const result = useCombatStore.getState().castAbility("wow335-mage-blink", { + origin: [0, 0, 0], + now: 1_000, + }); + + expect(result.ok).toBe(true); + expect(useCombatStore.getState().playerPosition[1]).toBe(2); + expect(useCombatStore.getState().playerPosition[2]).toBeLessThan(6); + expect(useCombatStore.getState().playerPosition[2]).toBeGreaterThan(5.9); + expect(useGameStore.getState().playerPosition).toEqual(useCombatStore.getState().playerPosition); + expect(projectedRequests.length).toBeGreaterThan(1); + expect(projectedRequests[0].distance).toBe(20); + expect(projectedRequests.every((entry) => entry.distance <= 20 && entry.origin[2] === 0)).toBe(true); + }); + + it("does not relocate when no reachable ground destination exists", () => { + registerCombatSpatialProvider({ + actor: (actorId) => actorId === PLAYER_AGGRO_ID + ? { id: actorId, position: [0, 0, 0], yaw: 0 } + : null, + hasLineOfSight: () => false, + projectGroundPoint: () => null, + }); + useCombatStore.setState({ controlledUntil: 10_000, controlMechanic: "root" }); + + const result = useCombatStore.getState().castAbility("wow335-mage-blink", { + origin: [0, 0, 0], + now: 1_000, + }); + expect(result.ok).toBe(true); expect(useCombatStore.getState().playerPosition).toEqual([0, 0, 0]); + expect(useGameStore.getState().playerPosition).toEqual([0, 0, 0]); + expect(useCombatStore.getState()).toMatchObject({ controlledUntil: 0, controlMechanic: null }); }); }); diff --git a/src/game/partyAbilityAi.test.ts b/src/game/partyAbilityAi.test.ts index c7de92ec..17478e23 100644 --- a/src/game/partyAbilityAi.test.ts +++ b/src/game/partyAbilityAi.test.ts @@ -1,9 +1,15 @@ import { beforeEach, describe, expect, it } from "vitest"; -import { abilitiesForClass, abilityAtLevel, resourceProfileForClass } from "./abilityCatalog"; +import { + abilitiesForCharacter, + abilitiesForClass, + abilityAtLevel, + resourceProfileForClass, +} from "./abilityCatalog"; import { aiHintsForAbility } from "./abilityRules"; +import { createDeathKnightRunes } from "./combatActors"; import { useCombatStore } from "./combatStore"; import { EMPTY_ITEM_STATS } from "./itemStats"; -import { commitPartyAbilityUse, choosePartyAbility, partyAbilityIsReady, partyAbilityAmount } from "./partyAbilityAi"; +import { commitPartyAbilityUse, choosePartyAbility, partyAbilityHasDepletedPartyResource, partyAbilityIsReady, partyAbilityAmount, partyAbilityCosts } from "./partyAbilityAi"; import { usePartyStore, type PartyMember } from "./partyStore"; import { deriveCharacterStats } from "./wotlkStats"; import { runtimePartyTalentRanksForLevel } from "./partyTalentRuntime"; @@ -58,6 +64,20 @@ describe("catalog-driven party rotations", () => { })); }); + it("applies Coerce's five-Energy Low Blow reduction to generated Rogue/Scout companions only", () => { + const rogueScout = { + ...memberFor("rom-rogue", "damage"), + secondaryClassId: "rom-scout" as const, + }; + const roguePriest = { ...rogueScout, secondaryClassId: "rom-priest" as const }; + const lowBlow = abilitiesForCharacter("rom-rogue", "rom-scout") + .find((ability) => ability.dbcSpellId === 490323)!; + + expect(partyAbilityCosts(rogueScout, lowBlow)).toEqual([{ resource: "energy", amount: 25 }]); + expect(partyAbilityCosts(roguePriest, lowBlow)).toEqual([{ resource: "energy", amount: 30 }]); + expect(commitPartyAbilityUse(rogueScout, lowBlow, 2_000)?.resourcePools.energy).toBe(75); + }); + it("prioritizes an interrupt over ordinary damage deterministically", () => { const member = memberFor("rogue", "damage"); const context = { now: 2_000, target: useCombatStore.getState().mobs.caster }; @@ -67,6 +87,57 @@ describe("catalog-driven party rotations", () => { expect(first && aiHintsForAbility(first).categories).toContain("interrupt"); }); + it("adds Blood Strike as a Reaping-only Blood rotation fallback when a base Blood rune is ready", () => { + const abilities = abilitiesForCharacter("death-knight", null); + const strike = abilities.find((ability) => ability.name === "Blood Strike")!; + const cooldowns = Object.fromEntries(abilities + .filter((ability) => ability.id !== strike.id) + .map((ability) => [ability.id, 60_000])); + const base = { + ...memberFor("death-knight", "damage"), + specialization: "Blood", + specializationId: "death-knight:blood", + runes: createDeathKnightRunes(2_000), + cooldowns, + }; + const target = { ...useCombatStore.getState().mobs.caster, activeCast: null }; + + expect(choosePartyAbility({ ...base, talentRanks: {} }, { now: 2_000, target })).toBeNull(); + expect(choosePartyAbility({ + ...base, + talentRanks: { "talent-2001": 1 }, + }, { now: 2_000, target })?.name).toBe("Blood Strike"); + + const bloodRunesCooling = base.runes.map((rune) => rune.baseType === "blood" + ? { ...rune, readyAt: 60_000 } + : rune); + expect(choosePartyAbility({ + ...base, + talentRanks: { "talent-2001": 1 }, + runes: bloodRunesCooling, + }, { now: 2_000, target })).toBeNull(); + }); + + it("does not select Pestilence without a caster-owned disease available to spread", () => { + const abilities = abilitiesForCharacter("death-knight", null); + const pestilence = abilities.find((ability) => ability.name === "Pestilence")!; + const member = { + ...memberFor("death-knight", "damage"), + specialization: "Blood", + specializationId: "death-knight:blood", + talentRanks: { "talent-2001": 1 }, + runes: createDeathKnightRunes(2_000), + cooldowns: Object.fromEntries(abilities + .filter((ability) => ability.id !== pestilence.id) + .map((ability) => [ability.id, 60_000])), + }; + expect(choosePartyAbility(member, { + now: 2_000, + target: { ...useCombatStore.getState().mobs.caster, activeCast: null }, + hostileCount: 2, + })).toBeNull(); + }); + it("selects a real healer catalog spell and spends its resource/GCD", () => { const member = memberFor("priest", "healer"); const ability = choosePartyAbility(member, { @@ -81,6 +152,29 @@ describe("catalog-driven party rotations", () => { expect(committed.globalCooldownEndsAt).toBeGreaterThan(2_000); }); + it("keeps Chain of Light cooldown after current CoA Priest/Champion Rage Control rework", () => { + const pairAbilities = abilitiesForCharacter("rom-priest", "rom-champion"); + const chain = pairAbilities.map((ability) => abilityAtLevel(ability, 80)) + .find((ability) => ability.dbcSpellId === 491164)!; + const rageControl = pairAbilities.find((ability) => ( + ability.source === "runewaker" + && ability.passive + && ability.classId === "rom-priest" + && ability.secondaryClassId === "rom-champion" + && ability.dbcSpellId === 498610 + ))!; + const member = { + ...memberFor("rom-priest", "healer"), + secondaryClassId: "rom-champion" as const, + cooldowns: { [chain.id]: 60_000 }, + }; + + expect(rageControl.unlockLevel).toBeLessThanOrEqual(member.level); + expect(partyAbilityIsReady(member, chain, 2_000)).toBe(false); + expect(commitPartyAbilityUse(member, chain, 2_000)).toBeNull(); + expect(partyAbilityIsReady({ ...member, secondaryClassId: "rom-warlock" }, chain, 2_000)).toBe(false); + }); + it("lets a companion use Inner Focus during a GCD while preserving that GCD", () => { const member = { ...memberFor("priest", "healer"), @@ -311,6 +405,32 @@ describe("catalog-driven party rotations", () => { expect(partyAbilityAmount(talented, wrath, damage)).toBe(partyAbilityAmount(base, wrath, damage)); }); + it("selects Sinister Request for a depleted in-range party pool even when its Druid/Rogue caster is full", () => { + const member = { + ...memberFor("rom-druid", "damage"), + secondaryClassId: "rom-rogue" as const, + resource: 100, + maxResource: 100, + resourcePools: { mana: 100 }, + }; + const request = abilitiesForCharacter(member.classId, member.secondaryClassId) + .find((ability) => ability.dbcSpellId === 494023)!; + const target = { ...useCombatStore.getState().mobs.caster, activeCast: null }; + const chooseWithPartyPools = (resources: readonly { resources: Record }[]) => ( + choosePartyAbility(member, { + now: 2_000, + target, + canUseAbility: ability => ability.id === request.id, + partyResourceDeficit: ability => partyAbilityHasDepletedPartyResource(ability, resources), + }) + ); + + expect(chooseWithPartyPools([{ resources: { energy: { current: 12, maximum: 100 } } }])?.id) + .toBe(request.id); + expect(chooseWithPartyPools([{ resources: { energy: { current: 100, maximum: 100 } } }])).toBeNull(); + expect(chooseWithPartyPools([{ resources: {} }])).toBeNull(); + }); + it("scales Envenom from consumed Deadly Poison doses", () => { const member = { ...memberFor("rogue", "damage"), diff --git a/src/game/partyAbilityAi.ts b/src/game/partyAbilityAi.ts index 72bce1da..22f9c0ea 100644 --- a/src/game/partyAbilityAi.ts +++ b/src/game/partyAbilityAi.ts @@ -14,9 +14,11 @@ import { } from "./combatRotation"; import { spendDeathKnightRunes } from "./combatResources"; import { resolveResourceValue } from "./combatAuras"; +import { combatHasLineOfSight } from "./combatSpatial"; import { equipmentAdjustedCombatAmount, useCombatStore, type MobCombatState } from "./combatStore"; +import { getMobPosition } from "./mobRuntimeRegistry"; import type { PartyMember } from "./partyStore"; -import { baseResourcesFor } from "./wotlkStats"; +import { baseResourcesFor, deriveCharacterStats } from "./wotlkStats"; import { companionResourceMaximum } from "./combatActorAuthority"; import { currentCompanionCooldownPolicy, type CompanionCooldownMechanicRule } from "./companionCooldownPolicy"; import { WOW335_MAGE_ARCANE_CONCENTRATION_TAG } from "./wow335MageTalentRuntime"; @@ -24,13 +26,28 @@ import { WOW335_MAGE_IMPROVED_COUNTERSPELL_TALENT_ID, wow335MageImprovedCounterspellCooldownReductionMs, } from "./wow335MageImprovedCounterspellRuntime"; +import { + WOW335_MAGE_IMPROVED_FIRE_BLAST_TALENT_ID, + wow335MageImprovedFireBlastCooldownReductionMs, + wow335MageImprovedFireBlastDamage, +} from "./wow335MageImprovedFireBlastRuntime"; import { WOW335_HUNTER_LOCK_AND_LOAD_READY_TAG } from "./wow335HunterRuntime"; import { romPriestWarriorStanceRequired, romPriestWarriorStanceUseAllowed, } from "./romPriestKnightOverrides"; -import { romKnightWarriorWhirlwindAdjustment } from "./romKnightOverrides"; +import { + romKnightCompassionWhirlwindShieldCooldownReductionMs, + romKnightWarriorWhirlwindAdjustment, +} from "./romKnightOverrides"; +import { romWarriorDruidWhirlwindAdjustment } from "./romWarriorDruidRageOfCalmness"; +import { + ROM_ROGUE_COERCE_PASSIVE_SPELL_ID, + romRogueCoerceAbilityAdjustment, +} from "./romRogueMechanics"; +import { romPriestChampionCooldownOverride } from "./romPriestChampionOverrides"; import { applyTalentModifierValue, talentModifiersForRanks } from "./talentModifiers"; +import { romWarlockMageSoulBrandStingHasWillpowerBladeState } from "./romWarlockMageSoulBrandSting"; export interface PartyAbilityContext { readonly now: number; @@ -52,6 +69,7 @@ export interface PartyAbilityContext { readonly activeAuraExclusiveGroups?: ReadonlySet; readonly activeSummonAbilityIds?: ReadonlySet; readonly hasActivePet?: boolean; + readonly partyResourceDeficit?: (ability: AbilityDefinition) => boolean; readonly availableConditionalAbilityNames?: ReadonlySet; readonly canUseAbility?: (ability: AbilityDefinition) => boolean; readonly incomingDefensiveMechanic?: CompanionCooldownMechanicRule | null; @@ -59,10 +77,52 @@ export interface PartyAbilityContext { readonly nextHealingSpellFree?: boolean; } +export interface PartyResourcePoolSnapshot { + readonly resources: Readonly>>; +} + +export function partyAbilityHasDepletedPartyResource( + ability: AbilityDefinition, + recipients: readonly PartyResourcePoolSnapshot[], +): boolean { + return ability.effects.some((effect) => { + if (effect.kind !== "resource" || effect.scope !== "party" || !effect.resource) return false; + return recipients.some(({ resources }) => { + const pool = resources[effect.resource!]; + return Boolean(pool && pool.current < pool.maximum); + }); + }); +} + function currentResource(member: PartyMember, type: ResourceType): number { return member.resourcePools[type] ?? (type === member.resourceType ? member.resource : 0); } +function partyRomPriestChampionCooldownOverride( + member: PartyMember, + ability: AbilityDefinition, +): number | null { + if (member.classId !== "rom-priest" || member.secondaryClassId !== "rom-champion") return null; + const infusedLightChain = abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( + candidate.source === "runewaker" + && candidate.classId === "rom-priest" + && candidate.secondaryClassId === "rom-champion" + && candidate.passive + && candidate.dbcSpellId === 498610 + )); + if (!infusedLightChain + || !learnedAbilityForBuild(infusedLightChain, member.level, member.talentRanks)) return null; + return romPriestChampionCooldownOverride(ability, [infusedLightChain.dbcSpellId]); +} + +function partyAbilityWithRomPriestChampionCooldown( + member: PartyMember, + ability: AbilityDefinition, +): AbilityDefinition { + const cooldownOverride = partyRomPriestChampionCooldownOverride(member, ability); + return cooldownOverride === null ? ability : { ...ability, cooldownMs: cooldownOverride }; +} + export function partyHunterLockAndLoadReady( member: PartyMember, ability: AbilityDefinition, @@ -112,27 +172,107 @@ function partyKnightWarriorWhirlwindAdjustment( ); } +function partyWarriorDruidWhirlwindAdjustment( + member: PartyMember, + ability: AbilityDefinition, +): ReturnType { + if (member.classId !== "rom-warrior" || member.secondaryClassId !== "rom-druid") { + return { rageCostReduction: 0, cooldownReductionMs: 0 }; + } + const learnedPassiveSpellIds = abilitiesForCharacter(member.classId, member.secondaryClassId) + .filter((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-warrior" + && candidate.secondaryClassId === "rom-druid" + && candidate.dbcSpellId === 494377 + && candidate.passive + && learnedAbilityForBuild(candidate, member.level, member.talentRanks) !== null) + .map((candidate) => candidate.dbcSpellId); + return romWarriorDruidWhirlwindAdjustment({ + classId: member.classId, + secondaryClassId: member.secondaryClassId, + learnedPassiveSpellIds, + ability, + }); +} + +function partyKnightCompassionCooldownReductionMs( + member: PartyMember, + ability: AbilityDefinition, +): number { + if (member.classId !== "rom-knight" || member.secondaryClassId !== "rom-priest") return 0; + const learnedPassiveSpellIds = abilitiesForCharacter(member.classId, member.secondaryClassId) + .filter((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-knight" + && candidate.secondaryClassId === "rom-priest" + && candidate.dbcSpellId === 491635 + && candidate.passive + && learnedAbilityForBuild(candidate, member.level, member.talentRanks) !== null) + .map((candidate) => candidate.dbcSpellId); + return romKnightCompassionWhirlwindShieldCooldownReductionMs( + member.classId, + member.secondaryClassId, + ability, + learnedPassiveSpellIds, + ); +} + function partyAbilityWithKnightWarriorWhirlwind( member: PartyMember, ability: AbilityDefinition, ): AbilityDefinition { - const adjustment = partyKnightWarriorWhirlwindAdjustment(member, ability); - if (adjustment.rageCostReduction <= 0 && adjustment.cooldownReductionMs <= 0) return ability; + const knightAdjustment = partyKnightWarriorWhirlwindAdjustment(member, ability); + const warriorDruidAdjustment = partyWarriorDruidWhirlwindAdjustment(member, ability); + const rageCostReduction = knightAdjustment.rageCostReduction + warriorDruidAdjustment.rageCostReduction; + const cooldownReductionMs = knightAdjustment.cooldownReductionMs + warriorDruidAdjustment.cooldownReductionMs; + if (rageCostReduction <= 0 && cooldownReductionMs <= 0) return ability; const costs = (ability.costs?.length ? ability.costs : [ability.cost]).map((cost) => ( cost.resource === "rage" && !cost.percentage - ? { ...cost, amount: Math.max(0, cost.amount - adjustment.rageCostReduction) } + ? { ...cost, amount: Math.max(0, cost.amount - rageCostReduction) } : cost )); return { ...ability, - cooldownMs: Math.max(0, ability.cooldownMs - adjustment.cooldownReductionMs), + cooldownMs: Math.max(0, ability.cooldownMs - cooldownReductionMs), cost: costs[0] ?? ability.cost, costs, }; } +function partyRogueCoerceEnergyCostReduction(member: PartyMember, ability: AbilityDefinition): number { + if (member.classId !== "rom-rogue" || member.secondaryClassId !== "rom-scout") return 0; + const passiveSpellIds = abilitiesForCharacter(member.classId, member.secondaryClassId) + .filter((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-rogue" + && candidate.secondaryClassId === "rom-scout" + && candidate.passive + && candidate.dbcSpellId === ROM_ROGUE_COERCE_PASSIVE_SPELL_ID + && learnedAbilityForBuild(candidate, member.level, member.talentRanks) !== null) + .map((candidate) => candidate.dbcSpellId); + return romRogueCoerceAbilityAdjustment( + member.classId, + member.secondaryClassId, + ability.source, + ability.dbcSpellId, + passiveSpellIds, + ).energyCostReduction; +} + +function partyAbilityWithRogueCoerce(member: PartyMember, ability: AbilityDefinition): AbilityDefinition { + const reduction = partyRogueCoerceEnergyCostReduction(member, ability); + if (reduction <= 0) return ability; + const costs = (ability.costs?.length ? ability.costs : [ability.cost]).map((cost) => ( + cost.resource === "energy" && !cost.percentage + ? { ...cost, amount: Math.max(0, cost.amount - reduction) } + : cost + )); + return { ...ability, cost: costs[0] ?? ability.cost, costs }; +} + export function partyAbilityCosts(member: PartyMember, ability: AbilityDefinition, now?: number): readonly { resource: ResourceType; amount: number }[] { - const adjustedAbility = partyAbilityWithKnightWarriorWhirlwind(member, ability); + const adjustedAbility = partyAbilityWithRogueCoerce( + member, + partyAbilityWithKnightWarriorWhirlwind(member, ability), + ); const auras = useCombatStore.getState().auras.filter((aura) => aura.targetId === member.id && (now === undefined || aura.expiresAt === null || aura.expiresAt > now)); const mageClearcasting = member.classId === "mage" && auras.some((aura) => ( @@ -165,14 +305,22 @@ export function partyAbilityIsReady( ignoreResourceCosts = false, ): boolean { if (ability.passive || !learnedAbilityForBuild(ability, member.level, member.talentRanks)) return false; + if (member.classId === "rom-warlock" && member.secondaryClassId === "rom-mage" + && ability.source === "runewaker" && ability.dbcSpellId === 498710 + && !romWarlockMageSoulBrandStingHasWillpowerBladeState(useCombatStore.getState().auras.filter((aura) => ( + aura.targetId === member.id && (aura.expiresAt === null || aura.expiresAt > now) + )))) return false; if (romPriestWarriorStanceRequired(ability)) { const activeAuraTags = useCombatStore.getState().auras .filter((aura) => aura.targetId === member.id && (aura.expiresAt === null || aura.expiresAt > now)) .flatMap((aura) => aura.definition.utilityTags ?? []); if (!romPriestWarriorStanceUseAllowed(ability, activeAuraTags)) return false; } + const hasRomPriestChampionCooldownOverride = partyRomPriestChampionCooldownOverride(member, ability) !== null; if ((ability.gcdMs > 0 && member.globalCooldownEndsAt > now) - || (!partyHunterLockAndLoadReady(member, ability, now) && (member.cooldowns[ability.id] ?? 0) > now)) return false; + || (!partyHunterLockAndLoadReady(member, ability, now) + && !hasRomPriestChampionCooldownOverride + && (member.cooldowns[ability.id] ?? 0) > now)) return false; if ((member.schoolLockedUntil[ability.castRules?.school ?? "physical"] ?? 0) > now) return false; if (aiHintsForAbility(ability).categories.includes("taunt") && member.tauntReadyAt > now) return false; if (!ignoreResourceCosts && partyAbilityCosts(member, ability, now).some(cost => cost.resource === "health" @@ -184,7 +332,8 @@ export function partyAbilityIsReady( function learnedAbilities(member: PartyMember): readonly AbilityDefinition[] { return abilitiesForCharacter(member.classId, member.secondaryClassId) .map((ability) => learnedAbilityForBuild(ability, member.level, member.talentRanks)) - .filter((ability): ability is AbilityDefinition => ability !== null); + .filter((ability): ability is AbilityDefinition => ability !== null) + .map((ability) => partyAbilityWithRomPriestChampionCooldown(member, ability)); } function isComboFinisher(ability: AbilityDefinition): boolean { @@ -244,6 +393,37 @@ export function choosePartyRotationDecision( .map((resource) => [resource, companionResourceMaximum(member, resource)]), ); const learned = learnedAbilities(member); + const reapingRank = member.classId === "death-knight" + ? Math.max(0, Math.trunc(member.talentRanks["talent-2001"] ?? 0)) + : 0; + const activeConditionalAbilityNames = new Set(context.availableConditionalAbilityNames ?? []); + const pestilence = learned.find((ability) => ability.name === "Pestilence"); + const targetPosition = context.target ? getMobPosition(context.target.id) : null; + const hasNearbyPestilenceTarget = Boolean(targetPosition && pestilence && reapingRank > 0 + && member.specializationId === "death-knight:blood" + && member.runes.some((rune) => rune.baseType === "blood" && rune.readyAt <= context.now) + && Object.values(useCombatStore.getState().mobs).some((mob) => { + if (mob.id === context.target?.id || !mob.engaged || mob.dead) return false; + const position = getMobPosition(mob.id); + if (!position) return false; + const dx = position[0] - targetPosition[0]; + const dy = position[1] - targetPosition[1]; + const dz = position[2] - targetPosition[2]; + const radius = pestilence!.radius ?? 10; + return dx * dx + dy * dy + dz * dz <= radius * radius + && combatHasLineOfSight(targetPosition, position); + })); + const hasCasterOwnedDiseaseOnAnchor = Boolean(context.target && useCombatStore.getState().effects.some((effect) => ( + effect.kind === "dot" + && effect.sourceActorId === member.id + && effect.targetId === context.target?.id + && (effect.tag === "blood-plague" || effect.tag === "frost-fever") + && effect.remainingTicks > 0 + && effect.nextTickAt + (effect.remainingTicks - 1) * effect.intervalMs > context.now + ))); + if (hasNearbyPestilenceTarget && hasCasterOwnedDiseaseOnAnchor) { + activeConditionalAbilityNames.add("Pestilence"); + } const decision = evaluateCombatRotation({ now: context.now, classId: member.classId, @@ -261,6 +441,7 @@ export function choosePartyRotationDecision( comboPoints: member.comboPoints, comboTargetId: member.comboTargetId, runes: member.runes, + deathKnightReapingRank: reapingRank, abilities: learned.filter((ability) => partyAbilityIsReady( member, ability, @@ -285,7 +466,10 @@ export function choosePartyRotationDecision( activeAuraExclusiveGroups: context.activeAuraExclusiveGroups, activeSummonAbilityIds: context.activeSummonAbilityIds, hasActivePet: context.hasActivePet, - availableConditionalAbilityNames: context.availableConditionalAbilityNames, + partyResourceDeficit: context.partyResourceDeficit, + availableConditionalAbilityNames: activeConditionalAbilityNames.size > 0 + ? activeConditionalAbilityNames + : undefined, canUseAbility: context.canUseAbility, cooldownPolicy: currentCompanionCooldownPolicy(), incomingDefensiveMechanic: context.incomingDefensiveMechanic, @@ -324,14 +508,24 @@ export function commitPartyAbilityUse( const runeCost = member.classId === "death-knight" ? runeCostForAbility(ability) : null; const runes = runeCost ? spendDeathKnightRunes(member.runes, runeCost, now) : member.runes; if (!runes) return null; + const romCooldownOverride = partyRomPriestChampionCooldownOverride(member, ability); const cooldownMs = member.classId === "mage" ? Math.max(0, ability.cooldownMs - wow335MageImprovedCounterspellCooldownReductionMs( member.talentRanks[WOW335_MAGE_IMPROVED_COUNTERSPELL_TALENT_ID] ?? 0, ability.name, + ) - wow335MageImprovedFireBlastCooldownReductionMs( + member.talentRanks[WOW335_MAGE_IMPROVED_FIRE_BLAST_TALENT_ID] ?? 0, + ability.name, )) - : ability.cooldownMs; + : romCooldownOverride ?? ability.cooldownMs; const knightWarriorCooldownReductionMs = partyKnightWarriorWhirlwindAdjustment(member, ability).cooldownReductionMs; - const adjustedCooldownMs = Math.max(0, cooldownMs - knightWarriorCooldownReductionMs); + const warriorDruidCooldownReductionMs = partyWarriorDruidWhirlwindAdjustment(member, ability).cooldownReductionMs; + const knightCompassionCooldownReductionMs = partyKnightCompassionCooldownReductionMs(member, ability); + const adjustedCooldownMs = Math.max(0, + cooldownMs - knightWarriorCooldownReductionMs - warriorDruidCooldownReductionMs - knightCompassionCooldownReductionMs); + const cooldowns = { ...member.cooldowns }; + if (romCooldownOverride !== null) delete cooldowns[ability.id]; + if (adjustedCooldownMs > 0) cooldowns[ability.id] = now + adjustedCooldownMs; return { ...member, health, @@ -339,9 +533,7 @@ export function commitPartyAbilityUse( resourcePools, lastResourceSpentAt, runes, - cooldowns: adjustedCooldownMs > 0 - ? { ...member.cooldowns, [ability.id]: now + adjustedCooldownMs } - : member.cooldowns, + cooldowns, globalCooldownEndsAt: ability.gcdMs > 0 ? now + ability.gcdMs : member.globalCooldownEndsAt, tauntReadyAt: aiHintsForAbility(ability).categories.includes("taunt") ? now + Math.max(8_000, ability.cooldownMs) @@ -354,7 +546,16 @@ export function partyAbilityAmount( ability: AbilityDefinition, effect: AbilityEffect, poisonDoses = 0, + intellectOverride?: number, ): number { + const sourceIntellect = intellectOverride ?? deriveCharacterStats( + member.classId, + member.level, + member.gearStats, + member.raceId, + {}, + member.secondaryClassId, + ).intellect; if (effect.kind === "finisher-damage" && effect.poison) { const consumedDoses = Math.max(0, Math.min( effect.poison.maximumDoses, @@ -371,6 +572,8 @@ export function partyAbilityAmount( member.gearStats, member.classId, ability, + 0, + sourceIntellect, ); } const coefficient = "coefficient" in effect @@ -384,6 +587,8 @@ export function partyAbilityAmount( member.gearStats, member.classId, ability, + 0, + sourceIntellect, ) + (effect.kind === "damage" ? effect.bonusFlat ?? 0 : 0); if (member.classId === "druid" && (effect.kind === "damage" || effect.kind === "dot")) { return applyTalentModifierValue( @@ -393,5 +598,12 @@ export function partyAbilityAmount( { abilityName: ability.name }, ); } + if (member.classId === "mage" && effect.kind === "damage") { + return wow335MageImprovedFireBlastDamage( + baseAmount, + member.talentRanks[WOW335_MAGE_IMPROVED_FIRE_BLAST_TALENT_ID] ?? 0, + ability.name, + ); + } return baseAmount; } diff --git a/src/game/partyRuntime.test.ts b/src/game/partyRuntime.test.ts index 059c8664..4422afc2 100644 --- a/src/game/partyRuntime.test.ts +++ b/src/game/partyRuntime.test.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe, expect, it } from "vitest"; +import { beforeAll, beforeEach, describe, expect, it } from "vitest"; import { useCombatStore, type EnemyActiveCast } from "./combatStore"; import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; import { @@ -16,18 +16,31 @@ import { partyAttackDamage, partyCombatRangeBand, partyCommandTargetId, + partyHunterPetRecipientIds, partyUsesRangedAttacks, + partyAbilityTargetIsValid, resetPartyRuntimeClock, } from "./partyRuntime"; import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { partyAbilityAmount } from "./partyAbilityAi"; +import { createDeathKnightRunes } from "./combatActors"; import { EMPTY_ITEM_STATS } from "./itemStats"; import { subscribeCombatPresentation, type CombatPresentationEvent } from "./combatPresentation"; import { subscribeCombatEvents, type StructuredCombatEvent } from "./combatEvents"; -import { abilitiesForClass, abilityAtLevel, abilityTalentNodeId } from "./abilityCatalog"; +import { abilitiesForCharacter, abilitiesForClass, abilityAtLevel, abilityTalentNodeId, learnedAbilityForBuild, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; import { runtimePartyTalentRanksForLevel } from "./partyTalentRuntime"; import { channelPulseAt, channelPulseCount } from "./combatChannelAmounts"; import { baseClassFor } from "../app/characterCatalog"; import { WOW335_GLYPH_OF_SWIFTMEND_ID } from "./wow335GlyphCatalog"; +import { ROM_ROGUE_OFF_HAND_MASTERY_TAG } from "./romRogueMechanics"; +import { + WOW335_HUNTER_PET_RANGED_AP_TO_SPELL_DAMAGE, + wow335HunterPetBaseStatsForLevel, +} from "./wow335HunterPetRuntime"; +import { + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID, +} from "./wow335DeathKnightDancingRuneWeaponRuntime"; function registerEngagedMob(id = "pack:a", maxHealth = 200): void { useCombatStore.getState().registerMob(id, { name: id, maxHealth, xpReward: 0 }); @@ -93,6 +106,10 @@ function registerFrostbiteTarget(id: string): void { } describe("party combat runtime", () => { + beforeAll(async () => { + await preloadAbilityCatalogsForClasses(["rom-druid"]); + }); + beforeEach(() => { clearMobRuntimeRegistry(); clearPartyRuntimeRegistry(); @@ -109,6 +126,398 @@ describe("party combat runtime", () => { expect(activePartyTargetId(mobs, null)).toBe("pack:a"); }); + it("extends a companion Druid's cast-time damage range with Nature's Reach", () => { + const seed = "druid-natures-reach-party"; + const druid = createConfiguredPartyMember({ + name: "Balance Druid", + classId: "druid", + specialization: "Balance", + specializationId: "druid:balance", + talentTreeId: "druid-balance", + talentRanks: { "talent-764": 3 }, + role: "damage", + }, 80, 0, seed); + const wrath = abilitiesForCharacter("druid", null).find((ability) => ability.name === "Wrath"); + if (!wrath) throw new Error("Druid Wrath is missing from the learned ability catalog."); + const learnedWrath = abilityAtLevel(wrath, 80); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ members: [druid] }); + registerPartyRuntimePosition(druid.id, [0, 0, 0]); + useCombatStore.getState().registerMob("druid-natures-reach-party-target", { + name: "Nature's Reach party target", + maxHealth: 100_000, + xpReward: 0, + }); + setMobPosition("druid-natures-reach-party-target", [35, 0, 0]); + updatePartyRuntimeTargetVisibility(druid.id, "druid-natures-reach-party-target", true); + useCombatStore.getState().synchronizeActors(); + + expect(partyAbilityTargetIsValid(druid, learnedWrath, "druid-natures-reach-party-target")).toBe(true); + expect(partyAbilityTargetIsValid({ ...druid, talentRanks: {} }, learnedWrath, + "druid-natures-reach-party-target")).toBe(false); + }); + + it("spreads a companion Druid/Rogue's current Corrosive Poison with Necrotic Wound", () => { + const seed = "druid-rogue-necrotic-wound-party"; + const druid = createConfiguredPartyMember({ + name: "Druid/Rogue", + classId: "rom-druid", + secondaryClassId: "rom-rogue", + raceId: "rom-elf", + specialization: "Druid/Rogue", + specializationId: "rom-druid:rom-rogue", + talentTreeId: "rom-druid-rom-rogue", + role: "damage", + }, 80, 0, seed); + const findPairAbility = (spellId: number) => { + const found = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId === spellId + && candidate.classId === "rom-druid" && candidate.secondaryClassId === "rom-rogue"); + if (!found) throw new Error(`Missing Druid/Rogue spell ${spellId}.`); + return found; + }; + const wound = learnedAbilityForBuild(findPairAbility(494321), 80, druid.talentRanks)!; + const poison = findPairAbility(494024); + const poisonDot = poison.effects.find((effect) => effect.kind === "dot"); + const sinisterRequest = findPairAbility(494023); + if (!poisonDot || poisonDot.kind !== "dot") throw new Error("Corrosive Poison has no current DoT."); + if (!wound) throw new Error("Companion Druid/Rogue did not learn Necrotic Wound."); + + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ members: [{ + ...druid, + resourcePools: { ...druid.resourcePools, mana: 960, energy: 75, "nature-power": 0 }, + cooldowns: { ...druid.cooldowns, [sinisterRequest.id]: 20_000 }, + activeCast: { + abilityId: wound.id, + school: "shadow", + mode: "channel", + startedAt: 1_000, + completesAt: 2_500, + originalDurationMs: 1_500, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: "druid-rogue-wound-primary", + channelTicksCompleted: 0, + }, + activeCastTargetId: "druid-rogue-wound-primary", + status: "attacking", + }] }); + registerPartyRuntimePosition(druid.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + const primary = "druid-rogue-wound-primary"; + const nearby = "druid-rogue-wound-nearby"; + const outside = "druid-rogue-wound-outside"; + for (const [id, position] of [ + [primary, [4, 0, 0]], + [nearby, [11, 0, 0]], + [outside, [13, 0, 0]], + ] as const) { + useCombatStore.getState().registerMob(id, { name: id, maxHealth: 1_000_000, xpReward: 0 }); + setMobPosition(id, position); + useCombatStore.getState().damageMob(id, 1, 100); + } + updatePartyRuntimeTargetVisibility(druid.id, primary, true); + expect(partyAbilityTargetIsValid(druid, wound, primary)).toBe(false); + expect(useCombatStore.getState().applyTimedActorEffect(druid.id, primary, poison, poisonDot, 1_000)).toBe(true); + expect(partyAbilityTargetIsValid(druid, wound, primary)).toBe(true); + usePartyStore.setState((state) => ({ members: state.members.map((member) => member.id === druid.id + ? { ...member, cooldowns: { ...member.cooldowns, [sinisterRequest.id]: 20_000 } } + : member) })); + + advanceDungeonPartyCombat(2_500); + + const poisonTargets = useCombatStore.getState().effects.filter((effect) => ( + effect.kind === "dot" && effect.tag === "rom-druid-corrosive-poison" && effect.remainingTicks === 12 + )).map((effect) => effect.targetId).sort(); + expect(poisonTargets).toEqual([nearby, primary].sort()); + expect(useCombatStore.getState().mobs[primary]!.health).toBeLessThan(999_999); + expect(useCombatStore.getState().mobs[nearby]!.health).toBeLessThan(999_999); + expect(useCombatStore.getState().mobs[outside]!.health).toBe(999_999); + expect(usePartyStore.getState().members[0]!.cooldowns[sinisterRequest.id]).toBe(19_000); + expect(useCombatStore.getState().mobs[primary]!.statuses.some((status) => status.kind === "root")).toBe(false); + }); + + it("extends a companion Death Knight's diseases with Epidemic", () => { + const seed = "death-knight-epidemic-party"; + const deathKnight = createConfiguredPartyMember({ + name: "Epidemic DK", + classId: "death-knight", + specialization: "Frost", + specializationId: "death-knight:frost", + talentTreeId: "death-knight-frost", + talentRanks: { "talent-1963": 2 }, + role: "damage", + }, 80, 0, seed); + const abilities = abilitiesForCharacter("death-knight", null); + const icyTouch = abilities.find((candidate) => candidate.name === "Icy Touch"); + if (!icyTouch) throw new Error("Missing Death Knight Icy Touch."); + const learnedIcyTouch = learnedAbilityForBuild(icyTouch, 80, deathKnight.talentRanks); + if (!learnedIcyTouch) throw new Error("Companion Death Knight did not learn Icy Touch."); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ + members: [{ + ...deathKnight, + gearStats: { ...EMPTY_ITEM_STATS, hitRating: 10_000, expertiseRating: 10_000 }, + resource: 100, + maxResource: 100, + resourcePools: { ...deathKnight.resourcePools, "runic-power": 100 }, + runes: createDeathKnightRunes(1_000), + globalCooldownEndsAt: 0, + nextActionAt: 0, + status: "ready", + }], + command: "attack", + activeMobId: "party-dk-epidemic-target", + }); + registerPartyRuntimePosition(deathKnight.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + registerEngagedMob("party-dk-epidemic-target", 1_000_000); + + for (const now of [1_000, 2_500, 4_000, 5_500]) advanceDungeonPartyCombat(now); + + expect(useCombatStore.getState().effects.find((effect) => ( + effect.kind === "dot" && effect.sourceActorId === deathKnight.id + && effect.tag === "frost-fever" && effect.targetId === "party-dk-epidemic-target" + ))).toMatchObject({ remainingTicks: 7, intervalMs: 3_000 }); + }); + + it("activates Dancing Rune Weapon for a companion and mirrors its direct spell and melee hits", () => { + useCombatStore.getState().initializeCharacter({ classId: "mage", role: "damage", level: 80 }); + const seed = "death-knight-dancing-rune-weapon-party"; + const deathKnight = createConfiguredPartyMember({ + name: "Rune Weapon DK", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + talentRanks: { "talent-1961": 1 }, + role: "damage", + }, 80, 0, seed); + const abilities = abilitiesForCharacter("death-knight", null); + const dancingRuneWeapon = abilities.find((ability) => ability.id === WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID); + const learnedDancingRuneWeapon = dancingRuneWeapon + ? learnedAbilityForBuild(dancingRuneWeapon, 80, deathKnight.talentRanks) + : null; + const deathCoil = abilities.find((ability) => ability.name === "Death Coil"); + if (!learnedDancingRuneWeapon || !deathCoil) { + throw new Error("Companion Death Knight is missing Dancing Rune Weapon or Death Coil."); + } + const learnedDeathCoil = learnedAbilityForBuild(deathCoil, 80, deathKnight.talentRanks); + if (!learnedDeathCoil) throw new Error("Companion Death Knight did not learn Death Coil."); + const targetId = "party-dk-dancing-rune-weapon-target"; + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ members: [{ + ...deathKnight, + talentRanks: { ...deathKnight.talentRanks, "talent-1961": 1 }, + gearStats: EMPTY_ITEM_STATS, + resource: 100, + maxResource: 100, + resourcePools: { ...deathKnight.resourcePools, "runic-power": 100 }, + runes: createDeathKnightRunes(1_000), + activeCast: { + abilityId: learnedDancingRuneWeapon.id, + school: "shadow", + mode: "cast", + startedAt: 1_000, + completesAt: 1_000, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: deathKnight.id, + }, + activeCastTargetId: deathKnight.id, + status: "attacking", + }] }); + registerPartyRuntimePosition(deathKnight.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + registerEngagedMob(targetId, 1_000_000); + + advanceDungeonPartyCombat(1_000); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: deathKnight.id, + targetId: deathKnight.id, + definition: expect.objectContaining({ name: "Dancing Rune Weapon", durationMs: 12_000 }), + appliedAt: 1_000, + expiresAt: 13_000, + })); + expect(useCombatStore.getState().summons.some((summon) => ( + summon.ownerActorId === deathKnight.id + && summon.sourceAbilityId === WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID + ))).toBe(false); + + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === deathKnight.id ? { + ...member, + activeCast: { + abilityId: learnedDeathCoil.id, + school: "shadow", + mode: "cast", + startedAt: 3_000, + completesAt: 3_000, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId, + }, + activeCastTargetId: targetId, + status: "attacking" as const, + } : member), + })); + useCombatStore.getState().commitCompanionActors(usePartyStore.getState().members); + advanceDungeonPartyCombat(3_000); + const spellHits = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" + && event.sourceActorId === deathKnight.id + && event.targetActorId === targetId + && event.abilityId === learnedDeathCoil.id + && event.occurredAt === 3_000 + )); + expect(spellHits).toHaveLength(2); + expect(spellHits[1].rawAmount).toBe(Math.floor(spellHits[0].rawAmount * 0.5)); + + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === deathKnight.id ? { + ...member, + activeCast: null, + activeCastTargetId: null, + nextActionAt: 100_000, + status: "attacking" as const, + } : member), + })); + useCombatStore.getState().commitCompanionActors(usePartyStore.getState().members); + advanceDungeonPartyCombat(5_000); + const meleeHits = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" + && event.sourceActorId === deathKnight.id + && event.targetActorId === targetId + && event.abilityId === "party-auto-attack" + && event.occurredAt === 5_000 + )); + expect(meleeHits).toHaveLength(2); + expect(meleeHits[1].rawAmount).toBe(Math.floor(meleeHits[0].rawAmount * 0.5)); + }); + + it("gives a RoM Rogue a separate off-hand swing and activates learned Off Hand Mastery", () => { + useCombatStore.getState().initializeCharacter({ classId: "mage", role: "damage", level: 80 }); + const rogue = createConfiguredPartyMember({ + name: "RoM Rogue", + classId: "rom-rogue", + secondaryClassId: "rom-warrior", + raceId: "rom-human", + specialization: "Rogue/Warrior", + role: "damage", + }, 80, 0, "rom-rogue-offhand-runtime"); + const targetId = "rom-rogue-offhand-target"; + usePartyStore.getState().initializeParty("rom-rogue-offhand-runtime", 80, + useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ + members: [{ ...rogue, gearStats: EMPTY_ITEM_STATS, nextActionAt: 100_000 }], + command: "attack", + activeMobId: targetId, + }); + registerPartyRuntimePosition(rogue.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + registerEngagedMob(targetId, 1_000_000); + const presentations: CombatPresentationEvent[] = []; + const unsubscribe = subscribeCombatPresentation((message) => { + if (message.kind === "event") presentations.push(message.event); + }); + + advanceDungeonPartyCombat(1_000); + + unsubscribe(); + expect(presentations).toContainEqual(expect.objectContaining({ + sourceActorId: rogue.id, + abilityId: "party-auto-attack-offhand", + name: "Off-hand Auto Attack", + phase: "impact", + })); + expect(useCombatStore.getState().auras.some((aura) => ( + aura.targetId === rogue.id + && aura.definition.utilityTags?.includes(ROM_ROGUE_OFF_HAND_MASTERY_TAG) + ))).toBe(true); + }); + + it("adds hand-specific CoA Chaos Dagger Fire packets to generated Rogue/Mage autos", () => { + useCombatStore.getState().initializeCharacter({ classId: "mage", role: "damage", level: 80 }); + const rogue = createConfiguredPartyMember({ + name: "RoM Rogue/Mage", + classId: "rom-rogue", + secondaryClassId: "rom-mage", + raceId: "rom-human", + specialization: "Rogue/Mage", + role: "damage", + }, 80, 0, "rom-rogue-mage-chaos-dagger-party"); + const mainHandWeapon = { damageMin: 100, damageMax: 100, damageSchool: "physical" as const, speedMs: 2_000 }; + const offHandWeapon = { damageMin: 40, damageMax: 40, damageSchool: "physical" as const, speedMs: 2_000 }; + const offHandId = "rom-chaos-dagger-party-offhand"; + const offHandItem = { + instanceId: offHandId, + itemId: 1, + itemKey: offHandId, + name: "Chaos Dagger Test Off-hand", + quality: "uncommon" as const, + inventorySlot: "off-hand", + armorType: null, + weaponType: "dagger", + itemLevel: 1, + sourceItemLevel: 1, + stats: { ...EMPTY_ITEM_STATS, meleeWeapon: offHandWeapon }, + quantity: 1, + sourceBossKey: "test", + sourceBossName: "Test", + acquiredAt: 1, + }; + usePartyStore.getState().initializeParty("rom-rogue-mage-chaos-dagger-party", 80, + useCombatStore.getState().health, "damage", 2, "rom"); + usePartyStore.setState({ members: [{ + ...rogue, + gearStats: { ...EMPTY_ITEM_STATS, hitRating: 1_000_000, meleeWeapon: mainHandWeapon }, + nextActionAt: 100_000, + }] }); + useCombatStore.setState((state) => ({ + inventory: [...state.inventory, offHandItem], + equipment: { ...state.equipment, [rogue.id]: { "off-hand": offHandId } }, + })); + registerPartyRuntimePosition(rogue.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + const targetId = "rom-rogue-mage-chaos-dagger-target"; + useCombatStore.getState().registerMob(targetId, { + name: "Chaos Dagger party target", + maxHealth: 1_000_000, + level: 80, + schoolImmunities: ["fire"], + }); + setMobPosition(targetId, [2, 0, 0]); + useCombatStore.getState().damageMob(targetId, 1, 100); + updatePartyRuntimeTargetVisibility(rogue.id, targetId, true); + usePartyStore.setState({ command: "attack", activeMobId: targetId }); + + advanceDungeonPartyCombat(1_000); + + const damage = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.targetActorId === targetId + )); + const firePackets = damage.filter((event) => event.school === "fire"); + expect(firePackets.map((event) => event.rawAmount).sort((a, b) => a - b)).toEqual([34, 85]); + expect(firePackets.every((event) => event.effectiveAmount === 0)).toBe(true); + expect(damage.some((event) => event.school === "physical" && event.effectiveAmount > 0)).toBe(true); + }); + + it("routes companion pet-targeted auras to that Hunter's live summoned pet", () => { + const callPet = abilitiesForClass("hunter").find((ability) => ability.name === "Call Pet")!; + const summons = [ + { id: "hunter-one-pet", ownerActorId: "hunter-one", health: 1, expiresAt: 10_000, kind: "summon" as const, sourceAbilityId: callPet.id }, + { id: "hunter-two-pet", ownerActorId: "hunter-two", health: 1, expiresAt: 10_000, kind: "summon" as const, sourceAbilityId: callPet.id }, + { id: "hunter-one-dead-pet", ownerActorId: "hunter-one", health: 0, expiresAt: 10_000, kind: "summon" as const, sourceAbilityId: callPet.id }, + { id: "hunter-one-expired-pet", ownerActorId: "hunter-one", health: 1, expiresAt: 1_000, kind: "summon" as const, sourceAbilityId: callPet.id }, + { id: "hunter-one-totem", ownerActorId: "hunter-one", health: 1, expiresAt: 10_000, kind: "totem" as const, sourceAbilityId: callPet.id }, + ]; + + expect(partyHunterPetRecipientIds(summons, "hunter-one", 2_000)).toEqual(["hunter-one-pet"]); + }); + it("maintains HoTs on separate injured allies without resetting pending ticks", () => { useCombatStore.getState().initializeCharacter({ classId: "mage", role: "damage", level: 8 }); usePartyStore.getState().initializeParty("party-hot-coverage", 8, useCombatStore.getState().health, "damage"); @@ -117,7 +526,7 @@ describe("party combat runtime", () => { const hot = abilities.find(ability => ability.name === "Rejuvenation")!; usePartyStore.setState(state => ({ members: state.members.map(member => member.id === healer.id ? { ...member, classId: "druid", resourceType: "mana", resource: 10_000, maxResource: 10_000, - resourcePools: { mana: 10_000 }, talentRanks: {}, cooldowns: Object.fromEntries(abilities.filter(a => a.id !== hot.id).map(a => [a.id, 60_000])) } + resourcePools: { mana: 10_000 }, talentRanks: { "talent-830": 3 }, cooldowns: Object.fromEntries(abilities.filter(a => a.id !== hot.id).map(a => [a.id, 60_000])) } : { ...member, health: member.maxHealth * .5 }) })); for (const member of usePartyStore.getState().members) registerPartyRuntimePosition(member.id, [0, 0, 0]); useCombatStore.getState().synchronizeActors(); @@ -125,6 +534,9 @@ describe("party combat runtime", () => { advanceDungeonPartyCombat(1_000); const first = useCombatStore.getState().effects.find(effect => effect.kind === "hot" && effect.sourceActorId === healer.id)!; expect(first).toBeDefined(); + const rejuvenationHot = hot.effects.find((effect) => effect.kind === "hot")!; + const baselineAmount = partyAbilityAmount({ ...healer, classId: "druid", talentRanks: {} }, hot, rejuvenationHot); + expect(first.fixedAmount).toBe(Math.round(baselineAmount * 1.2)); advanceDungeonPartyCombat(3_000); const effects = useCombatStore.getState().effects.filter(effect => effect.kind === "hot" && effect.sourceActorId === healer.id); expect(new Set(effects.map(effect => effect.targetId)).size).toBe(2); @@ -294,6 +706,121 @@ describe("party combat runtime", () => { })); }); + it.each([ + { rank: 0, shouldSlow: false }, + { rank: 2, shouldSlow: true }, + ])("applies generated Warlock Aftermath to landed companion Conflagrate at rank $rank", ({ rank, shouldSlow }) => { + useCombatStore.getState().initializeCharacter({ classId: "mage", role: "damage", level: 80 }); + const seed = `party-warlock-aftermath-rank-${rank}`; + const warlock = createConfiguredPartyMember({ + name: "Destruction Warlock", + classId: "warlock", + specialization: "Destruction", + specializationId: "warlock:destruction", + talentTreeId: "warlock-destruction", + talentRanks: { "talent-968": 1, "talent-982": rank }, + role: "damage", + }, 80, 0, seed); + const conflagrate = abilityAtLevel( + abilitiesForClass("warlock").find((ability) => ability.name === "Conflagrate")!, + 80, + ); + expect(learnedAbilityForBuild( + abilitiesForClass("warlock").find((ability) => ability.name === "Conflagrate")!, + 80, + warlock.talentRanks, + )).toMatchObject({ id: conflagrate.id }); + const targetId = `party-warlock-aftermath-target-${rank}`; + const completionAt = 10_000; + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ members: [{ + ...warlock, + gearStats: EMPTY_ITEM_STATS, + resource: 10_000, + maxResource: 10_000, + resourcePools: { ...warlock.resourcePools, mana: 10_000 }, + activeCast: { + abilityId: conflagrate.id, + school: "fire", + mode: "cast", + startedAt: completionAt - conflagrate.castTimeMs, + completesAt: completionAt, + originalDurationMs: conflagrate.castTimeMs, + pushbackHits: 0, + origin: [0, 0, 0], + targetId, + }, + activeCastTargetId: targetId, + status: "attacking", + }] }); + registerPartyRuntimePosition(warlock.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + expect(useCombatStore.getState().actors[warlock.id]?.cast).toMatchObject({ + abilityId: conflagrate.id, + targetId, + }); + registerFrostbiteTarget(targetId); + const immolate = abilityAtLevel( + abilitiesForClass("warlock").find((ability) => ability.name === "Immolate")!, + 80, + ); + const immolateDot = immolate.effects.find((effect) => effect.kind === "dot"); + if (!immolateDot || immolateDot.kind !== "dot") throw new Error("Missing generated Immolate DoT."); + expect(useCombatStore.getState().applyTimedActorEffect( + warlock.id, targetId, immolate, immolateDot, 1_000, + )).toBe(true); + expect(partyAbilityTargetIsValid(warlock, conflagrate, targetId, [0, 0, 0], completionAt)).toBe(true); + const immolateEffectId = useCombatStore.getState().effects.find((effect) => ( + effect.kind === "dot" && effect.sourceActorId === warlock.id && effect.targetId === targetId + ))!.id; + expect(useCombatStore.getState().actors[warlock.id]?.cast).toMatchObject({ + abilityId: conflagrate.id, + targetId, + }); + const beforeHealth = useCombatStore.getState().mobs[targetId]!.health; + const aftermathEvents: StructuredCombatEvent[] = []; + const stopAftermathEvents = subscribeCombatEvents((event) => aftermathEvents.push(event)); + const aftermathPresentation: CombatPresentationEvent[] = []; + const stopAftermathPresentation = subscribeCombatPresentation((message) => { + if (message.kind === "event") aftermathPresentation.push(message.event); + }); + + advanceDungeonPartyCombat(completionAt); + stopAftermathEvents(); + stopAftermathPresentation(); + + const mob = useCombatStore.getState().mobs[targetId]!; + expect(aftermathPresentation).toContainEqual(expect.objectContaining({ + phase: "impact", + sourceActorId: warlock.id, + abilityId: conflagrate.id, + })); + const conflagrateDamage = aftermathEvents.find((event) => ( + event.kind === "damage" && event.sourceActorId === warlock.id && event.targetActorId === targetId + && event.abilityId === conflagrate.id + )); + expect(conflagrateDamage).toMatchObject({ + rawAmount: 628, + effectiveAmount: expect.any(Number), + }); + expect(mob.health).toBeLessThan(beforeHealth); + expect(useCombatStore.getState().effects.some((effect) => effect.id === immolateEffectId)).toBe(false); + const aftermath = mob.statuses.find((status) => ( + status.kind === "slow" && status.sourceAbilityId === conflagrate.id && status.sourceActorId === warlock.id + )); + if (shouldSlow) { + expect(aftermath).toMatchObject({ + kind: "slow", + sourceAbilityId: conflagrate.id, + sourceActorId: warlock.id, + endsAt: completionAt + 4_000, + magnitude: 0.5, + }); + } else { + expect(aftermath).toBeUndefined(); + } + }); + it("lets a party Mage Frostbite proc on a landed Blizzard channel pulse", () => { useCombatStore.getState().initializeCharacter({ classId: "mage", role: "damage", level: 80 }); const seed = "party-mage-frostbite-blizzard"; @@ -708,9 +1235,21 @@ describe("party combat runtime", () => { registerEngagedMob("pet-runtime-boss", 100_000); const events: StructuredCombatEvent[] = []; const stop = subscribeCombatEvents((event) => events.push(event)); + let growlConfigured = false; for (let now = 1_000; now <= 30_000; now += 100) { useCombatStore.getState().tick(0.1, now); advanceDungeonPartyCombat(now); + const hunterPet = useCombatStore.getState().summons.find((summon) => summon.ownerActorId === hunter.id + && summon.hunterPet); + if (hunterPet && !growlConfigured) { + expect(hunterPet).toMatchObject({ + hunterPetCommand: "follow", + hunterPetReactMode: "defensive", + hunterPetGrowlAutocastEnabled: false, + }); + expect(useCombatStore.getState().setHunterPetGrowlAutocast(hunterPet.id, true)).toBe(true); + growlConfigured = true; + } } stop(); @@ -718,6 +1257,31 @@ describe("party combat runtime", () => { summon.ownerActorId === hunter.id || summon.ownerActorId === warlock.id )); expect(new Set(pets.map((summon) => summon.ownerActorId))).toEqual(new Set([hunter.id, warlock.id])); + const baseHunterPetStats = wow335HunterPetBaseStatsForLevel(hunter.level); + expect(pets.find((summon) => summon.ownerActorId === hunter.id)).toMatchObject({ + hunterPet: { + baseStats: { strength: 192, attackPower: 364 }, + effectiveStats: { + inheritedStamina: expect.any(Number), + inheritedRangedAttackPower: expect.any(Number), + inheritedSpellDamage: expect.any(Number), + }, + }, + }); + const hunterPet = pets.find((summon) => summon.ownerActorId === hunter.id)!; + expect(growlConfigured).toBe(true); + expect(hunterPet.hunterPetGrowlReadyAt).toBeGreaterThan(0); + expect(useCombatStore.getState().mobs["pet-runtime-boss"]?.threatByActor[hunterPet.id]).toBeGreaterThanOrEqual(1_234); + expect(useCombatStore.getState().mobs["pet-runtime-boss"]?.forcedTarget).toBeNull(); + expect(hunterPet.hunterPet!.effectiveStats.inheritedSpellDamage).toBeGreaterThan(0); + expect(hunterPet.hunterPet!.effectiveStats.inheritedSpellDamage).toBeCloseTo( + hunterPet.hunterPet!.effectiveStats.inheritedRangedAttackPower / 0.22 + * WOW335_HUNTER_PET_RANGED_AP_TO_SPELL_DAMAGE, + ); + expect(hunterPet.maxHealth).toBe(hunterPet.hunterPet!.effectiveStats.maxHealth); + expect(hunterPet.attackDamage).toBe(hunterPet.hunterPet!.effectiveStats.averageAutoAttackDamage); + expect(hunterPet.maxHealth).toBeGreaterThan(baseHunterPetStats.maxHealth); + expect(hunterPet.attackDamage).toBeGreaterThan(baseHunterPetStats.averageAutoAttackDamage); expect(pets.every((summon) => summon.targetId === "pet-runtime-boss")).toBe(true); expect(events.filter((event) => event.kind === "damage" && [hunter.id, warlock.id].includes(event.sourceActorId))).toEqual(expect.arrayContaining([ diff --git a/src/game/partyRuntime.ts b/src/game/partyRuntime.ts index 6f368d1c..d3551d40 100644 --- a/src/game/partyRuntime.ts +++ b/src/game/partyRuntime.ts @@ -17,12 +17,28 @@ import { canAbilityCastWhileMoving, targetingRulesForAbility, } from "./abilityRules"; -import type { MobCombatState } from "./combatStore"; -import { abilityDamageSchool, refreshPriestPainAndSufferingDot, stableCombatUnit, useCombatStore } from "./combatStore"; +import type { CombatSummon, MobCombatState, TimedCombatEffect } from "./combatStore"; +import { + PLAYER_AURA_ENTITY_ID, + abilityDamageSchool, + equipmentAdjustedCombatAmount, + refreshPriestPainAndSufferingDot, + stableCombatUnit, + useCombatStore, +} from "./combatStore"; import { raceAffixHasteMultiplier } from "./dungeonRaceAffixBuffs"; import { activeRaceOrbId } from "./dungeonRaceAffixRuntime"; +import { + WOW335_PALADIN_ILLUMINATION_TALENT_ID, + wow335PaladinIlluminationRefundPlan, +} from "./wow335PaladinIlluminationRuntime"; +import { + WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID, + wow335HunterGoForTheThroatAttackKindForAbility, +} from "./wow335HunterGoForTheThroatRuntime"; import { companionResourceMaximum, memberFromCompanionActor } from "./combatActorAuthority"; import type { MobVector3 } from "./mobPopulation"; +import type { WeaponStats } from "./itemStats"; import { requireDungeonDefinition } from "./dungeonRegistry"; import { getMobPosition, getMobRuntimeTransform } from "./mobRuntimeRegistry"; import { @@ -38,19 +54,58 @@ import { baseClassFor, classById } from "../app/characterCatalog"; import { useGameStore } from "./store"; import { useManastormStore } from "./manastormStore"; import { WOW335_GLYPH_OF_SWIFTMEND_ID } from "./wow335GlyphCatalog"; +import { + WOW335_ROGUE_IMPROVED_KICK_TALENT_ID, + wow335RogueImprovedKickAuraEffectForRank, + wow335RogueImprovedKickSilenceDurationMs, +} from "./wow335RogueTalentRuntime"; +import { + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID, + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG, + WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG, +} from "./wow335WarriorVictoryRushRuntime"; +import { + WOW335_WARRIOR_UNBRIDLED_WRATH_ABILITY_ID, + WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID, + wow335WarriorUnbridledWrathProfile, + wow335WarriorUnbridledWrathShouldProc, +} from "./wow335WarriorUnbridledWrathRuntime"; import { activeDungeonCompletedObjectiveIds } from "./dungeonEncounterRuntime"; import { PLAYER_AGGRO_ID, type ThreatSource } from "./aggro"; import { applyAura as applyCombatAura, + resolveResourceValue as resolveAuraResourceValue, resolveStatValue as resolveAuraStatValue, type ActiveAura, type DispelCategory, } from "./combatAuras"; +import { romPriestHolyBlessingDamage, romPriestHolyBlessingStats } from "./romPriestHolyBlessingRuntime"; +import { + ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID, + isRomDruidMagePair, + romDruidMageInspirationApplySpendStack, + romDruidMageInspirationHastePercent, + romDruidMageInspirationRecipientIds, +} from "./romDruidMageInspirationRuntime"; +import { ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG, ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, isRomMageDruidPair } from "./romMageDruidGreenGuardianRuntime"; +import { + romWarlockMageSoulBrandEffects, +} from "./romWarlockMageSoulBrand"; +import { ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG } from "./romWarlockPriestSpreadingPain"; import { ROM_ROGUE_POISON_AURA_TAG, + ROM_ROGUE_POISON_ATTACK_SPEED_TAG, + ROM_ROGUE_POISONED_TARGET_TAG, ROM_ROGUE_POISON_SKILL_ID, - romRoguePoisonApplicationForAttack, + romRoguePoisonAttackResultForAttack, + romRoguePoisonAttackSpeedTargetId, } from "./romRoguePoisonRuntime"; +import { + ROM_ROGUE_ENERGIZED_HANDS_COOLDOWN_REDUCTION_MS, + ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID, + ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP, + romRogueEnergizedHandsActive, +} from "./romRogueEnergizedHandsRuntime"; import { ROM_ROGUE_CHAMPION_NERVE_GEAR_PASSIVE_SPELL_ID, romRogueChampionNerveGearEffect, @@ -60,6 +115,7 @@ import { equipmentAttackPower, hastedDuration, ratingPercent, + deriveCharacterStats, type WotlkAttackKind, } from "./wotlkStats"; import { useWailingEncounterStore } from "./wailingCavernsEncounter"; @@ -76,26 +132,83 @@ import { choosePartyAbility, choosePartyRotationDecision, commitPartyAbilityUse, + partyAbilityIsReady, partyAbilityWithHunterLockAndLoad, partyHunterLockAndLoadReady, partyAbilityAmount, partyAbilityCosts, + partyAbilityHasDepletedPartyResource, + type PartyResourcePoolSnapshot, } from "./partyAbilityAi"; import { minimumHostileTargetsForAbility } from "./combatRotation"; import { emitRotationDecision } from "./rotationTelemetry"; import { imminentCooldownMechanic } from "./companionCooldownPolicy"; -import { normalizeActorResourcePool } from "./combatActors"; +import { normalizeActorResourcePool, type DeathKnightRuneState } from "./combatActors"; import { enemyControlPreventsActions } from "./enemyAttacks"; import { advanceCombatResourcePool } from "./combatResources"; +import { baseMissChancePercent } from "./combatResults"; import { wow335DeathKnightSuddenDoomTriggerForLandedHit } from "./wow335DeathKnightSuddenDoomRuntime"; +import { + wow335DeathKnightReapingApplyProcPlan, + wow335DeathKnightReapingProcPlan, + wow335DeathKnightReapingRestoreLandedSpend, + wow335DeathKnightReapingShouldProc, + wow335DeathKnightReapingStateForRunes, + wow335DeathKnightSpentRuneSlots, +} from "./wow335DeathKnightReapingRuntime"; import { WOW335_DEATH_KNIGHT_SCENT_OF_BLOOD_TALENT_ID, wow335DeathKnightScentOfBloodOnMeleeHit, } from "./wow335DeathKnightScentOfBloodRuntime"; +import { WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID } from "./wow335DeathKnightBloodCakedBladeRuntime"; +import { WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID } from "./wow335DeathKnightBloodyVengeanceRuntime"; +import { WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID } from "./wow335DeathKnightBloodGorgedRuntime"; +import { wow335DeathKnightSpellIdMatchesBloodGorgedMask } from "./wow335DeathKnightBloodGorgedSpellFamily"; +import { + WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID, + wow335DeathKnightBladeBarrierAuraDefinition, + wow335DeathKnightBladeBarrierProfile, + wow335DeathKnightBladeBarrierShouldActivate, +} from "./wow335DeathKnightBladeBarrierRuntime"; +import { + WOW335_DEATH_KNIGHT_EPIDEMIC_TALENT_ID, + wow335DeathKnightEpidemicDotEffect, +} from "./wow335DeathKnightEpidemicRuntime"; +import { + WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_TALENT_ID, + wow335DeathKnightMercilessCombatDamage, +} from "./wow335DeathKnightMercilessCombatRuntime"; +import { + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID, + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA, + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA_TAG, + wow335DeathKnightDancingRuneWeaponCanMirrorEvent, + wow335DeathKnightDancingRuneWeaponDamage, + wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName, + wow335DeathKnightDancingRuneWeaponIsActive, +} from "./wow335DeathKnightDancingRuneWeaponRuntime"; +import { warlockAftermathDazeForRank } from "./wow335WarlockTalentRuntime"; import { WOW335_MAGE_ARCANE_CONCENTRATION_AURA, WOW335_MAGE_ARCANE_CONCENTRATION_TAG, } from "./wow335MageTalentRuntime"; +import { + WOW335_MAGE_FROST_WARDING_TALENT_ID, + wow335MageFrostWardingArmorAuraEffect, +} from "./wow335MageFrostWardingRuntime"; +import { WOW335_SHAMAN_ELEMENTAL_DEVASTATION_TALENT_ID } from "./wow335ShamanTalentRuntime"; +import { + WOW335_SHAMAN_ELEMENTAL_FOCUS_AURA_TAG, + wow335ShamanElementalFocusProfileForRank, + wow335ShamanElementalFocusShouldProc, +} from "./wow335ShamanElementalFocusRuntime"; +import { + WOW335_SHAMAN_LIGHTNING_OVERLOAD_PROC_TAG, + WOW335_SHAMAN_LIGHTNING_OVERLOAD_TALENT_ID, + wow335ShamanLightningOverloadDamageAmount, + wow335ShamanLightningOverloadProfileForRank, + wow335ShamanLightningOverloadShouldProc, +} from "./wow335ShamanLightningOverloadRuntime"; import { WOW335_MAGE_FROSTBITE_TALENT_ID, wow335MageFrostbiteProcDurationMs, @@ -109,11 +222,20 @@ import { wow335MageArcanePotencyCastProfile, wow335MageMasterOfElementsManaRefund, } from "./wow335MageConditionalTalentRuntime"; +import { + WOW335_MAGE_NETHERWIND_PRESENCE_TALENT_ID, + wow335MageNetherwindPresenceAurasAfterCast, + wow335MageNetherwindPresenceHastePercent, +} from "./wow335MageNetherwindPresenceRuntime"; import { WOW335_MAGE_EMPOWERED_FIRE_TALENT_ID, wow335MageEmpoweredFireEffect, } from "./wow335MageEmpoweredFireRuntime"; import { channelAmountEffects, channelPulseAt, channelPulseCount } from "./combatChannelAmounts"; +import { + WOW335_DRUID_NATURES_REACH_TALENT_ID, + wow335DruidNaturesReachRangeBonusYards, +} from "./wow335DruidTalentRuntime"; import { healingAbilityCanAidOthers, healingAbilityHasPendingHot, healingRecipientIds } from "./healingAbilityRules"; import { romPriestWarriorStanceRequired, @@ -160,7 +282,6 @@ import { ROGUE_DEADLY_POISON_DOSE_TAG, ROGUE_ENVENOM_BUFF_TAG, } from "./roguePoison"; -import { wow335RogueImprovedKickAuraEffectForRank } from "./wow335RogueTalentRuntime"; import { WOW335_WARLOCK_METAMORPHOSIS_AURA_TAG, warlockMetamorphosisCanCastAbilityWhileActive, @@ -179,15 +300,43 @@ import { wow335ShamanTidalWavesCriticalChanceBonusPercent, wow335ShamanTidalWavesProcChance, } from "./wow335ShamanTidalWavesRuntime"; +import { wow335ShamanFlurryIsActive } from "./wow335ShamanFlurryRuntime"; +import { + WOW335_SHAMAN_MAELSTROM_WEAPON_AURA_TAG, + WOW335_SHAMAN_MAELSTROM_WEAPON_ELIGIBLE_SPELLS, + WOW335_SHAMAN_MAELSTROM_WEAPON_MAX_STACKS, + wow335ShamanMaelstromWeaponCastTimeReductionPercent, + wow335ShamanMaelstromWeaponPvpDamageReductionPercent, + wow335ShamanMaelstromWeaponProfile, +} from "./wow335ShamanMaelstromWeaponRuntime"; import { WARLOCK_BACKDRAFT_READY_TAG, warlockBackdraftDestructionSpellEligible, warlockBackdraftEffectsForRank, warlockBackdraftTriggerEligible, } from "./wow335WarlockTalentRuntime"; -import { romAbilityNeedsRangedWeapon, romAbilityNeedsShield, romEffectsForCast, romSelfDrainPercent, romTargetBleedCount } from "./romCombatMechanics"; +import { romAbilityNeedsRangedWeapon, romAbilityNeedsShield, romAbilityRequiredTargetStateTag, romEffectsForCast, romSelfDrainPercent, romTargetBleedCount } from "./romCombatMechanics"; import { romCreatureFamilyTargetTags } from "./romCreatureFamilies"; import { romScoutRogueWhirlwindBonusEffect } from "./romScoutRogueOverrides"; +import { + ROM_ROGUE_OFF_HAND_MASTERY_ACCURACY_PERCENT, + ROM_ROGUE_OFF_HAND_MASTERY_DAMAGE_PERCENT, + ROM_ROGUE_OFF_HAND_MASTERY_TAG, +} from "./romRogueMechanics"; +import { + romPriestChampionRageControlGain, + romPriestVowOfSilenceDurationMs, +} from "./romPriestChampionOverrides"; +import { + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_ID, + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG, + resolveRomPriestChampionBeaconFromAuras, +} from "./romPriestChampionBeaconRuntime"; +import { + ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID, + ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID, + romCoaWarriorRogueExhaustionProc, +} from "./romWarriorRogueExhaustion"; import { ROM_FIRE_LIGHTNING_BURST_RESET_GUARD_TAG, romFireLightningBurstReset } from "./romMageWarlockOverrides"; import { ROM_MAGE_KNIGHT_LIGHT_OF_DAY, @@ -196,12 +345,6 @@ import { romMageMeditativeCurrentProc, romMageMeditativeCurrentReadyAt, } from "./romMageRuntime"; -import { - ROM_PRIEST_MAGE_ENLIGHTENMENT, - ROM_PRIEST_MAGE_ENLIGHTENMENT_COOLDOWN_EFFECT, - romPriestMageEnlightenmentProc, - romPriestMageEnlightenmentReadyAt, -} from "./romPriestMageRuntime"; import { ROM_SCOUT_PRIEST_DRUMS_OF_WAR } from "./romScoutPriestOverrides"; import { ROM_MAGE_WARRIOR_MEDITATION_PATH_ACTIVE_EFFECT, @@ -265,6 +408,85 @@ function partyShamanTidalWavesCast( }; } +interface PartyShamanMaelstromCast { + readonly ability: AbilityDefinition; + readonly auraInstanceId: string; + readonly rank: number; + readonly stacksConsumed: number; +} + +function partyShamanMaelstromCast( + member: PartyMember, + ability: AbilityDefinition, + now: number, +): PartyShamanMaelstromCast | null { + if (member.classId !== "shaman" + || !WOW335_SHAMAN_MAELSTROM_WEAPON_ELIGIBLE_SPELLS.has(ability.name)) return null; + const rank = Math.min(3, Math.max(0, Math.trunc(member.talentRanks["talent-2057"] ?? 0))); + const profile = wow335ShamanMaelstromWeaponProfile(rank); + if (!profile) return null; + const aura = useCombatStore.getState().auras.find((candidate) => ( + candidate.sourceId === member.id + && candidate.targetId === member.id + && candidate.stacks > 0 + && candidate.definition.utilityTags?.includes(WOW335_SHAMAN_MAELSTROM_WEAPON_AURA_TAG) + && (candidate.expiresAt === null || candidate.expiresAt > now) + )); + if (!aura) return null; + const reductionPercent = wow335ShamanMaelstromWeaponCastTimeReductionPercent(profile, aura.stacks); + return { + ability: { + ...ability, + castTimeMs: Math.max(0, Math.round(ability.castTimeMs * (1 - reductionPercent / 100))), + }, + auraInstanceId: aura.instanceId, + rank, + stacksConsumed: Math.min(aura.stacks, profile.maxStacks), + }; +} + +function consumePartyShamanMaelstromWeapon(memberId: string, auraInstanceId: string): void { + useCombatStore.setState((state) => ({ + auras: state.auras.filter((aura) => aura.instanceId !== auraInstanceId + || aura.sourceId !== memberId || aura.targetId !== memberId), + })); +} + +function maybeProcPartyShamanMaelstromWeapon( + member: PartyMember, + targetId: string, + abilityId: string, + weaponHand: "main-hand" | "off-hand", + weaponSpeedMs: number, + now: number, +): void { + if (member.classId !== "shaman") return; + const rank = Math.min(3, Math.max(0, Math.trunc(member.talentRanks["talent-2057"] ?? 0))); + const profile = wow335ShamanMaelstromWeaponProfile(rank, weaponSpeedMs); + if (!profile || stablePartyUnit( + `${member.id}:${abilityId}:${targetId}:${now}:${weaponHand}:wow335-shaman-maelstrom-weapon`, + ) >= profile.procChancePerWeaponHit) return; + + useCombatStore.setState((state) => ({ + auras: [...applyCombatAura(state.auras, { + definition: { + id: "wow335:shaman:maelstrom-weapon", + name: "Maelstrom Weapon", + description: "Your next listed spell has its cast time reduced by 20% per stack.", + disposition: "buff", + durationMs: profile.durationMs, + maxStacks: Math.min(WOW335_SHAMAN_MAELSTROM_WEAPON_MAX_STACKS, profile.maxStacks), + initialStacks: 1, + stackBehavior: "add", + utilityTags: [WOW335_SHAMAN_MAELSTROM_WEAPON_AURA_TAG], + }, + sourceId: member.id, + targetId: member.id, + now, + }).auras], + })); +} + function consumePartyShamanTidalWaves(memberId: string, auraInstanceId: string): void { useCombatStore.setState((state) => ({ auras: state.auras.flatMap((aura) => { @@ -275,6 +497,81 @@ function consumePartyShamanTidalWaves(memberId: string, auraInstanceId: string): })); } +function partyShamanElementalFocusAuraForCast( + member: PartyMember, + ability: AbilityDefinition, + now: number, +) { + if (member.classId !== "shaman" || ability.source === "runewaker" || ability.passive + || !wow335ShamanElementalFocusProfileForRank(member.talentRanks["talent-574"] ?? 0) + || !(ability.costs?.length ? ability.costs : [ability.cost]).some((cost) => cost.resource === "mana") + || !["fire", "frost", "nature"].includes(abilityDamageSchool(member.classId, ability))) return null; + return useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === member.id + && aura.targetId === member.id + && aura.stacks > 0 + && aura.definition.utilityTags?.includes(WOW335_SHAMAN_ELEMENTAL_FOCUS_AURA_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + )) ?? null; +} + +function consumePartyShamanElementalFocus(memberId: string, auraInstanceId: string): void { + useCombatStore.setState((state) => ({ + auras: state.auras.flatMap((aura) => { + if (aura.instanceId !== auraInstanceId || aura.sourceId !== memberId || aura.targetId !== memberId) return [aura]; + const remaining = Math.max(0, aura.stacks - 1); + return remaining > 0 ? [{ ...aura, stacks: remaining }] : []; + }), + })); +} + +function maybeProcPartyShamanElementalFocus( + member: PartyMember, + ability: AbilityDefinition, + school: string, + critical: boolean, + periodic: boolean, + targetId: string, + now: number, +): void { + if (member.classId !== "shaman" || ability.source === "runewaker") return; + const profile = wow335ShamanElementalFocusProfileForRank(member.talentRanks["talent-574"] ?? 0); + if (!wow335ShamanElementalFocusShouldProc( + profile, + school, + critical, + periodic, + stablePartyUnit(`${member.id}:${ability.id}:${targetId}:${now}:wow335-shaman-elemental-focus`), + ) || !profile) return; + + useCombatStore.setState((state) => ({ + auras: [...applyCombatAura(state.auras, { + definition: { + id: "wow335:shaman:elemental-focus-clearcasting", + name: "Clearcasting", + description: `Reduces the mana cost of your next two Fire, Frost, or Nature spells and abilities by ${profile.costReductionPercent}%.`, + disposition: "buff", + durationMs: profile.durationMs, + maxStacks: profile.charges, + initialStacks: profile.charges, + stackBehavior: "replace", + utilityTags: [WOW335_SHAMAN_ELEMENTAL_FOCUS_AURA_TAG], + modifiers: [{ + kind: "resource", + resource: "mana", + property: "cost", + operation: "percent", + value: -profile.costReductionPercent / 100, + perStack: false, + }], + }, + sourceId: member.id, + targetId: member.id, + now, + }).auras], + })); +} + function partyShamanTidalWavesBonusHealing(member: PartyMember, ability: AbilityDefinition, now: number): number { if (member.classId !== "shaman" || ability.source === "runewaker" || !["Healing Wave", "Lesser Healing Wave"].includes(ability.name)) return 0; @@ -331,7 +628,10 @@ function maybeProcPartyShamanImprovedWaterShield( critical, stablePartyUnit(`${member.id}:${ability.id}:${targetId}:${now}:wow335-shaman-improved-water-shield`), )) return member; - const requested = wow335ShamanWaterShieldOrbManaAtLevel(member.level); + const requested = wow335ShamanWaterShieldOrbManaAtLevel( + member.level, + member.talentRanks["talent-607"] ?? 0, + ); if (requested <= 0) return member; const combat = useCombatStore.getState(); const restored = combat.restoreActorResource( @@ -347,6 +647,29 @@ function maybeProcPartyShamanImprovedWaterShield( }; } +function applyPartyDeathKnightBladeBarrier( + memberBeforeUse: PartyMember, + memberAfterUse: PartyMember, + ability: AbilityDefinition, + now: number, +): void { + if (memberBeforeUse.classId !== "death-knight") return; + const rank = memberBeforeUse.talentRanks[WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID] ?? 0; + if (!wow335DeathKnightBladeBarrierShouldActivate(rank, memberBeforeUse.runes, memberAfterUse.runes, now)) return; + const profile = wow335DeathKnightBladeBarrierProfile(rank); + const aura = wow335DeathKnightBladeBarrierAuraDefinition(rank); + if (!profile || !aura) return; + useCombatStore.getState().applyActorAura(memberBeforeUse.id, memberBeforeUse.id, ability, { + kind: "apply-aura", + aura, + recipient: "caster", + sourceEffectType: 6, + sourceAuraType: 42, + miscValue: 0, + triggerSpellId: profile.triggerSpellId, + }, now); +} + function maybeProcPartyShamanTidalWaves( member: PartyMember, ability: AbilityDefinition, @@ -381,7 +704,9 @@ function maybeProcPartyShamanTidalWaves( function grantPartyImprovedKickCapstone(member: PartyMember, ability: AbilityDefinition, now: number): PartyMember { if (member.classId !== "rogue" || ability.name !== "Kick") return member; - const effect = wow335RogueImprovedKickAuraEffectForRank(member.talentRanks["talent-206"] ?? 0); + const effect = wow335RogueImprovedKickAuraEffectForRank( + member.talentRanks[WOW335_ROGUE_IMPROVED_KICK_TALENT_ID] ?? 0, + ); if (!effect) return member; const combat = useCombatStore.getState(); combat.applyActorAura(member.id, member.id, ability, effect, now); @@ -395,6 +720,19 @@ function grantPartyImprovedKickCapstone(member: PartyMember, ability: AbilityDef } : member; } +function partyRogueImprovedKickSilenceDurationMs( + member: PartyMember, + ability: AbilityDefinition, + targetId: string, + now: number, +): number { + if (member.classId !== "rogue" || ability.name !== "Kick") return 0; + return wow335RogueImprovedKickSilenceDurationMs( + member.talentRanks[WOW335_ROGUE_IMPROVED_KICK_TALENT_ID] ?? 0, + stablePartyUnit(`${member.id}:${ability.id}:${targetId}:${now}:wow335-rogue-improved-kick-silence`), + ); +} + const WOW335_MAGE_ARCANE_CONCENTRATION_TALENT_ID = "talent-75"; function partyMageArcanePotencyBonus( @@ -412,6 +750,53 @@ function partyMageArcanePotencyBonus( ).criticalChanceBonusPercent; } +function partyMageNetherwindPresenceHastePercent(member: PartyMember, now: number): number { + return member.classId === "mage" + ? wow335MageNetherwindPresenceHastePercent(useCombatStore.getState().auras, member.id, now) + : 0; +} + +function partyCastingHastePercent(member: PartyMember, now: number): number { + const auras = useCombatStore.getState().auras; + return partyMageNetherwindPresenceHastePercent(member, now) + + romDruidMageInspirationHastePercent(auras, member.id, now); +} + +function applyPartyMageNetherwindPresenceCast( + member: PartyMember, + ability: AbilityDefinition, + now: number, +): void { + if (member.classId !== "mage") return; + const current = useCombatStore.getState().auras; + const next = wow335MageNetherwindPresenceAurasAfterCast( + current, + member.id, + member.id, + member.talentRanks[WOW335_MAGE_NETHERWIND_PRESENCE_TALENT_ID] ?? 0, + ability.name, + now, + ); + if (next !== current) useCombatStore.setState({ auras: [...next] }); +} + +function partyCastTimeMsWithHaste( + ability: AbilityDefinition, + now: number, + hastePercent: number, +): number { + return partyDurationMsWithHaste(ability.castTimeMs, now, hastePercent); +} + +function partyDurationMsWithHaste( + baseDurationMs: number, + now: number, + hastePercent: number, +): number { + return Math.round(baseDurationMs + / (raceAffixHasteMultiplier(now) * (1 + Math.max(0, hastePercent) / 100))); +} + function consumePartyMageCastAuras(member: PartyMember, ability: AbilityDefinition): void { if (member.classId !== "mage" || ability.passive) return; useCombatStore.setState((state) => ({ @@ -515,6 +900,20 @@ function partyWarlockBackdraftCast( }; } +function partyScoutPriestSniperAbility(member: PartyMember, ability: AbilityDefinition): AbilityDefinition { + if (member.classId !== "rom-scout" || member.secondaryClassId !== "rom-priest" + || ability.source !== "runewaker" || ability.dbcSpellId !== 490450) return ability; + const passiveSource = abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( + candidate.source === "runewaker" + && candidate.classId === "rom-scout" + && candidate.secondaryClassId === "rom-priest" + && candidate.passive + && candidate.dbcSpellId === 492344 + )); + if (!passiveSource || !learnedAbilityForBuild(passiveSource, member.level, member.talentRanks)) return ability; + return { ...ability, castTimeMs: Math.max(0, ability.castTimeMs - 1_000) }; +} + function consumePartyWarlockBackdraftCharge(memberId: string, auraInstanceId: string): void { useCombatStore.setState((state) => ({ auras: state.auras.flatMap((aura) => { @@ -550,21 +949,95 @@ function applyPartyWarlockBackdraft(member: PartyMember, ability: AbilityDefinit }, now); } +function partyAbilityAmountWithHolyBlessing( + member: PartyMember, + ability: AbilityDefinition, + effect: AbilityEffect, + poisonDoses = 0, + now = Date.now(), +): number { + const state = useCombatStore.getState(); + const base = deriveCharacterStats( + member.classId, + member.level, + member.gearStats, + member.raceId, + {}, + member.secondaryClassId, + ); + const auras = state.auras.filter((aura) => aura.targetId === member.id + && (aura.expiresAt === null || aura.expiresAt > now)); + const intellect = ["intellect", "all-primary", "all-primary-attributes"].reduce( + (value, stat) => resolveAuraStatValue(value, auras, stat), + base.intellect, + ); + if (member.classId !== "rom-priest") { + return partyAbilityAmount(member, ability, effect, poisonDoses, intellect); + } + const bonus = romPriestHolyBlessingStats(base, auras).spellPowerBonus; + if (bonus <= 0) return partyAbilityAmount(member, ability, effect, poisonDoses, intellect); + return partyAbilityAmount({ + ...member, + gearStats: { ...member.gearStats, spellPower: member.gearStats.spellPower + bonus }, + }, ability, effect, poisonDoses, intellect); +} + function partyWarlockAbilityAmount( member: PartyMember, ability: AbilityDefinition, effect: AbilityEffect, poisonDoses = 0, + targetId?: string, + now = Date.now(), ): number { - const amount = partyAbilityAmount(member, ability, effect, poisonDoses); + const amount = partyAbilityAmountWithHolyBlessing(member, ability, effect, poisonDoses, now); + if (member.classId === "warlock" && ability.name === "Conflagrate" && effect.kind === "damage") { + const conflagrateDot = targetId + ? activePartyWarlockConflagrateDot(useCombatStore.getState().effects, member.id, targetId, now) + : null; + const sourceAbility = conflagrateDot ? abilityById(conflagrateDot.sourceAbilityId) : null; + if (!conflagrateDot || !sourceAbility) return 0; + const burstSeconds = sourceAbility.name === "Immolate" ? 12 : 8; + const tickAmount = conflagrateDot.fixedAmount + ?? equipmentAdjustedCombatAmount( + conflagrateDot, + member.level, + member.gearStats, + member.classId, + sourceAbility, + ); + return Math.round(tickAmount * burstSeconds * 1_000 / Math.max(1, conflagrateDot.intervalMs)) + + (effect.bonusFlat ?? 0); + } if (member.classId !== "warlock" || ability.name !== "Shadowburn" || effect.kind !== "damage") return amount; const rank = Math.min(3, Math.max(0, Math.trunc(member.talentRanks["talent-1888"] ?? 0))); return Math.round(amount * (1 + warlockBackdraftEffectsForRank(rank).shadowburnDamagePercent / 100)); } +function activePartyWarlockConflagrateDot( + effects: readonly TimedCombatEffect[], + sourceActorId: string, + targetId: string, + now: number, +): TimedCombatEffect | null { + const active = effects.filter((effect) => { + if (effect.kind !== "dot" || effect.targetId !== targetId || effect.sourceActorId !== sourceActorId + || effect.remainingTicks <= 0 || effect.nextTickAt + (effect.remainingTicks - 1) * effect.intervalMs < now) { + return false; + } + const name = abilityById(effect.sourceAbilityId)?.name; + return name === "Immolate" || name === "Shadowflame"; + }); + return active.find((effect) => abilityById(effect.sourceAbilityId)?.name === "Immolate") + ?? active.find((effect) => abilityById(effect.sourceAbilityId)?.name === "Shadowflame") + ?? null; +} + let lastAdvanceAt = 0; let nextRegenAt = 0; const nextWeaponAttackAt = new Map(); +const nextShamanWeaponAttackAt = new Map(); +const nextRogueOffhandAttackAt = new Map(); const pendingInnerFocus = new Set(); export interface PartyPresentationIdentity { @@ -653,6 +1126,8 @@ export function resetPartyRuntimeClock(): void { lastAdvanceAt = 0; nextRegenAt = 0; nextWeaponAttackAt.clear(); + nextShamanWeaponAttackAt.clear(); + nextRogueOffhandAttackAt.clear(); pendingInnerFocus.clear(); } @@ -705,6 +1180,22 @@ export function partyAttackDamage( ); } +export function partyHunterPetRecipientIds( + summons: readonly Pick[], + ownerActorId: string, + now: number, +): string[] { + return summons.filter((summon) => ( + summon.ownerActorId === ownerActorId + && summon.kind === "summon" + && summon.health > 0 + && summon.expiresAt > now + && abilityById(summon.sourceAbilityId)?.effects.some((effect) => ( + effect.kind === "pet" && ["summon", "call", "resurrect", "tame"].includes(effect.action) + )) + )).map((summon) => summon.id); +} + export function partyUsesRangedAttacks( member: Pick & Partial>, ): boolean { @@ -896,6 +1387,75 @@ function noSupport(members: readonly PartyMember[]): HealerSupportResult { }; } +function commitPartyAbilityUseWithRogueCooldown( + member: PartyMember, + ability: AbilityDefinition, + now: number, + options: Parameters[3] = {}, +): PartyMember | null { + const naturePowerSpent = options.ignoreResourceCosts ? 0 : partyAbilityCosts(member, ability, now) + .filter((cost) => cost.resource === "nature-power" && cost.amount > 0) + .reduce((total, cost) => total + cost.amount, 0); + const committed = commitPartyAbilityUse(member, ability, now, options); + if (committed && naturePowerSpent > 0) applyPartyDruidMageInspirationSpend(member, naturePowerSpent, now); + if (!committed || !romRogueEnergizedHandsActive( + useCombatStore.getState().auras, member.id, now, + )) return committed; + const readyAt = committed.cooldowns[ability.id]; + if (readyAt === undefined || readyAt <= now) return committed; + const adjustedReadyAt = Math.max(now, readyAt - ROM_ROGUE_ENERGIZED_HANDS_COOLDOWN_REDUCTION_MS); + return { + ...committed, + cooldowns: adjustedReadyAt > now + ? { ...committed.cooldowns, [ability.id]: adjustedReadyAt } + : Object.fromEntries(Object.entries(committed.cooldowns).filter(([id]) => id !== ability.id)), + }; +} + +function partyDruidMageInspirationLearned(member: PartyMember): boolean { + if (!isRomDruidMagePair(member)) return false; + const passive = abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( + candidate.source === "runewaker" + && candidate.classId === "rom-druid" + && candidate.secondaryClassId === "rom-mage" + && candidate.passive + && candidate.dbcSpellId === ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID + )); + return Boolean(passive && learnedAbilityForBuild(passive, member.level, member.talentRanks)); +} + +function applyPartyDruidMageInspirationSpend( + member: PartyMember, + spentNaturePower: number, + now: number, +): void { + if (!(spentNaturePower > 0) || !partyDruidMageInspirationLearned(member)) return; + const combat = useCombatStore.getState(); + const sourcePosition = getPartyRuntimePosition(member.id); + const candidates = [ + { id: member.id, position: sourcePosition, living: member.health > 0 }, + { + id: PLAYER_AURA_ENTITY_ID, + position: combat.playerPosition, + living: combat.health > 0, + }, + ...usePartyStore.getState().members.filter((candidate) => candidate.id !== member.id).map((candidate) => ({ + id: candidate.id, + position: getPartyRuntimePosition(candidate.id), + living: candidate.health > 0, + })), + ]; + // A successful caster spend always reaches the caster, even if a test or + // out-of-scene party state has not registered a world position for it. + const recipients = sourcePosition + ? romDruidMageInspirationRecipientIds(sourcePosition, candidates) + : member.health > 0 ? [member.id] : []; + if (!recipients.length) return; + useCombatStore.setState((state) => ({ + auras: [...romDruidMageInspirationApplySpendStack(state.auras, member.id, recipients, now)], + })); +} + /** * Gives the party one legal support action at a time. Any living class with an * unlocked resurrection can raise a fallen target; ordinary healing remains @@ -954,7 +1514,7 @@ export function applyHealerSupport( }; } const caster = next[resurrector.index]; - const committed = commitPartyAbilityUse(caster, resurrector.ability, now) ?? caster; + const committed = commitPartyAbilityUseWithRogueCooldown(caster, resurrector.ability, now) ?? caster; next[resurrector.index] = { ...committed, status: "healing", @@ -995,7 +1555,7 @@ export function applyHealerSupport( const dispel = dispelAbility?.effects.find((effect) => effect.kind === "dispel" && effect.relationship !== "hostile"); if (dispelAbility && dispel?.kind === "dispel") { const next = [...members]; - const committed = commitPartyAbilityUse(healer, dispelAbility, now) ?? healer; + const committed = commitPartyAbilityUseWithRogueCooldown(healer, dispelAbility, now) ?? healer; next[healerIndex] = { ...committed, status: "healing", @@ -1055,7 +1615,7 @@ export function applyHealerSupport( }); const healingEffect = healingAbility?.effects.find((effect) => effect.kind === "heal"); if (!healingAbility || !healingEffect || healingEffect.kind !== "heal") return noSupport(members); - const requested = partyAbilityAmount(healer, healingAbility, healingEffect) + const requested = partyAbilityAmountWithHolyBlessing(healer, healingAbility, healingEffect, 0, now) + Math.round(target.maxHealth * (healingEffect.percentMaxHealth ?? 0)); const healed = Math.min(requested, target.maxHealth - target.health); const next = [...members]; @@ -1063,7 +1623,7 @@ export function applyHealerSupport( const currentTarget = next[target.index]; next[target.index] = { ...currentTarget, health: currentTarget.health + healed }; } - const currentHealer = commitPartyAbilityUse(next[healerIndex], healingAbility, now) ?? next[healerIndex]; + const currentHealer = commitPartyAbilityUseWithRogueCooldown(next[healerIndex], healingAbility, now) ?? next[healerIndex]; next[healerIndex] = { ...currentHealer, status: "healing", @@ -1156,6 +1716,219 @@ function memberSwingMs(member: PartyMember, now: number): number { ) / raceAffixHasteMultiplier()); } +function partyShamanWeapon( + member: PartyMember, + hand: "main-hand" | "off-hand", +): WeaponStats | null { + if (member.classId !== "shaman") return null; + const combat = useCombatStore.getState(); + return resolvedEquipmentLoadout(combat.equipment, combat.inventory, { + ownerId: member.id, + ownerKind: "party", + classId: member.classId, + secondaryClassId: member.secondaryClassId, + specializationId: member.specializationId, + role: member.role, + level: member.level, + })[hand]?.stats.meleeWeapon ?? null; +} + +function partyRogueOffhandWeapon(member: PartyMember): WeaponStats | null { + if (member.classId !== "rom-rogue") return null; + const combat = useCombatStore.getState(); + return resolvedEquipmentLoadout(combat.equipment, combat.inventory, { + ownerId: member.id, + ownerKind: "party", + classId: member.classId, + secondaryClassId: member.secondaryClassId, + specializationId: member.specializationId, + role: member.role, + level: member.level, + })["off-hand"]?.stats.meleeWeapon ?? null; +} + +function partyRogueOffHandMasteryActive(member: PartyMember, now: number): boolean { + if (member.classId !== "rom-rogue") return false; + const passiveSource = abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( + candidate.source === "runewaker" + && candidate.passive + && candidate.dbcSpellId === 490143 + )); + const passive = passiveSource + ? learnedAbilityForBuild(passiveSource, member.level, member.talentRanks) + : null; + const effect = passive?.effects.find((candidate) => candidate.kind === "apply-aura" + && candidate.recipient === "caster" + && candidate.aura.utilityTags?.includes(ROM_ROGUE_OFF_HAND_MASTERY_TAG)); + if (passive && effect?.kind === "apply-aura") { + const active = useCombatStore.getState().auras.some((aura) => aura.sourceId === member.id + && aura.targetId === member.id + && aura.definition.utilityTags?.includes(ROM_ROGUE_OFF_HAND_MASTERY_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)); + if (!active) useCombatStore.getState().applyActorAura(member.id, member.id, passive, effect, now); + } + return useCombatStore.getState().auras.some((aura) => aura.targetId === member.id + && aura.definition.utilityTags?.includes(ROM_ROGUE_OFF_HAND_MASTERY_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)); +} + +function partyRogueOffhandAttackProfile( + member: PartyMember, + weapon: WeaponStats, + masteryActive: boolean, + now: number, +): { readonly damage: number; readonly intervalMs: number } { + const handGearStats = { ...member.gearStats, meleeWeapon: weapon }; + const stats = deriveCharacterStats( + member.classId, + member.level, + handGearStats, + member.raceId, + {}, + member.secondaryClassId, + ); + const auras = useCombatStore.getState().auras.filter((aura) => ( + aura.targetId === member.id && (aura.expiresAt === null || aura.expiresAt > now) + )); + const attackPower = partyShamanAttackPower(stats.attackPower, auras); + const meleeHastePercent = resolveAuraStatValue(stats.meleeHastePercent, auras, "melee-haste"); + const fullWeaponDamage = (weapon.damageMin + weapon.damageMax) / 2 + + attackPower / 14 * (weapon.speedMs / 1_000); + const masteryMultiplier = masteryActive + ? 1 + ROM_ROGUE_OFF_HAND_MASTERY_DAMAGE_PERCENT / 100 + : 1; + return { + damage: Math.max(1, Math.round(fullWeaponDamage * 0.5 * masteryMultiplier)), + intervalMs: Math.max(500, Math.round( + hastedDuration(weapon.speedMs, meleeHastePercent) / raceAffixHasteMultiplier(now), + )), + }; +} + +function applyPartyRomRoguePoisonOnAutoAttack( + member: PartyMember, + targetId: string, + abilityId: string, + now: number, +): void { + if (member.classId !== "rom-rogue") return; + const poisonSkill = abilitiesForCharacter(member.classId, member.secondaryClassId) + .find((ability) => ability.dbcSpellId === ROM_ROGUE_POISON_SKILL_ID); + const learnedPoison = poisonSkill + && learnedAbilityForBuild(poisonSkill, member.level, member.talentRanks); + const combat = useCombatStore.getState(); + const poisonActive = combat.auras.some((aura) => ( + aura.targetId === member.id + && aura.definition.utilityTags?.includes(ROM_ROGUE_POISON_AURA_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + )); + const currentSpeedAura = combat.auras.find((aura) => aura.sourceId === member.id + && aura.targetId === member.id + && aura.definition.utilityTags?.includes(ROM_ROGUE_POISON_ATTACK_SPEED_TAG)); + const result = learnedPoison && !combat.mobs[targetId]?.dead + ? romRoguePoisonAttackResultForAttack({ + classId: member.classId, + sourceActorId: member.id, + targetActorId: targetId, + attackKind: "melee", + isNormalAttack: true, + attackLanded: true, + poisonActive, + roll: stablePartyUnit(`${member.id}:${targetId}:${abilityId}:${now}:rom-rogue-poison`), + attackSpeedTargetId: currentSpeedAura ? romRoguePoisonAttackSpeedTargetId(currentSpeedAura) : null, + targetPoisonStacks: combat.auras.find((aura) => aura.sourceId === member.id + && aura.targetId === targetId + && aura.definition.utilityTags?.includes(ROM_ROGUE_POISONED_TARGET_TAG))?.stacks ?? 0, + }) + : null; + if (result) { + useCombatStore.setState((state) => ({ + auras: (() => { + let auras = result.resetAttackSpeed ? state.auras.filter((aura) => !(aura.sourceId === member.id + && aura.targetId === member.id + && aura.definition.utilityTags?.includes(ROM_ROGUE_POISON_ATTACK_SPEED_TAG))) : state.auras; + if (result.application) auras = applyCombatAura(auras, { + definition: result.application.definition, + sourceId: result.application.sourceId, + targetId: result.application.targetId, + stacks: result.application.stacks, + now, + }).auras; + if (result.attackSpeedApplication) auras = applyCombatAura(auras, { + definition: result.attackSpeedApplication.definition, + sourceId: result.attackSpeedApplication.sourceId, + targetId: result.attackSpeedApplication.targetId, + stacks: result.attackSpeedApplication.stacks, + now, + }).auras; + return [...auras]; + })(), + })); + } +} + +function partyShamanWeaponAttackProfile( + member: PartyMember, + weapon: WeaponStats, + hand: "main-hand" | "off-hand", + now: number, +): { readonly damage: number; readonly intervalMs: number } { + const handGearStats = { ...member.gearStats, meleeWeapon: weapon }; + const stats = deriveCharacterStats( + member.classId, + member.level, + handGearStats, + member.raceId, + {}, + member.secondaryClassId, + ); + const auras = useCombatStore.getState().auras.filter((aura) => ( + aura.targetId === member.id && (aura.expiresAt === null || aura.expiresAt > now) + )); + const attackPower = partyShamanAttackPower(stats.attackPower, auras); + const meleeHastePercent = resolveAuraStatValue(stats.meleeHastePercent, auras, "melee-haste"); + const fullWeaponDamage = (weapon.damageMin + weapon.damageMax) / 2 + + attackPower / 14 * (weapon.speedMs / 1_000); + const handMultiplier = hand === "off-hand" ? 0.5 : 1; + return { + damage: Math.max(1, Math.round(fullWeaponDamage * handMultiplier)), + intervalMs: Math.max(500, Math.round( + hastedDuration(weapon.speedMs, meleeHastePercent) / raceAffixHasteMultiplier(now), + )), + }; +} + +function partyShamanAttackPower(baseAttackPower: number, auras: ReturnType["auras"]): number { + return resolveAuraStatValue( + resolveAuraStatValue(baseAttackPower, auras, "attack-power"), + auras, + "physical-attack", + ); +} + +function partyShamanWeaponHitDamage( + member: PartyMember, + weapon: WeaponStats, + hand: "main-hand" | "off-hand", + now: number, +): number { + const handGearStats = { ...member.gearStats, meleeWeapon: weapon }; + const stats = deriveCharacterStats( + member.classId, + member.level, + handGearStats, + member.raceId, + {}, + member.secondaryClassId, + ); + const auras = useCombatStore.getState().auras.filter((aura) => ( + aura.targetId === member.id && (aura.expiresAt === null || aura.expiresAt > now) + )); + const fullWeaponDamage = (weapon.damageMin + weapon.damageMax) / 2 + + partyShamanAttackPower(stats.attackPower, auras) / 14 * (weapon.speedMs / 1_000); + return Math.max(1, Math.round(fullWeaponDamage * (hand === "off-hand" ? 0.5 : 1))); +} + function emitPartyAbility( member: PartyMember, ability: AbilityDefinition, @@ -1240,9 +2013,107 @@ function consumePartyScentOfBloodMeleeCharge( }; } +function partyDeathKnightDancingRuneWeaponIsActive(member: PartyMember, now: number): boolean { + return member.classId === "death-knight" && useCombatStore.getState().auras.some((aura) => ( + aura.targetId === member.id + && aura.definition.utilityTags?.includes(WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA_TAG) + && (aura.expiresAt === null || aura.expiresAt > now) + && wow335DeathKnightDancingRuneWeaponIsActive(aura.appliedAt, now) + )); +} + +function maybeMirrorPartyDeathKnightDancingRuneWeaponMelee( + member: PartyMember, + targetId: string, + rawOwnerDamage: number, + now: number, + abilityId: string, +): number { + if (!partyDeathKnightDancingRuneWeaponIsActive(member, now)) return 0; + const combat = useCombatStore.getState(); + const target = combat.mobs[targetId]; + if (!wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + kind: "melee", + targetAlive: Boolean(target && !target.dead), + targetHostile: Boolean(target), + })) return 0; + const amount = wow335DeathKnightDancingRuneWeaponDamage(rawOwnerDamage); + if (amount <= 0) return 0; + return combat.damageMob(targetId, amount, now, { + actorId: member.id, + role: member.role, + abilityId, + }, "physical").amount; +} + +function maybeMirrorPartyDeathKnightDancingRuneWeaponSpell( + member: PartyMember, + ability: AbilityDefinition, + targetId: string, + actionTargetIsOwner: boolean, + rawOwnerDamage: number, + now: number, + isAreaTargeted: boolean, +): number { + if (!partyDeathKnightDancingRuneWeaponIsActive(member, now)) return 0; + const combat = useCombatStore.getState(); + const target = combat.mobs[targetId]; + const event = { + kind: "spell" as const, + spellId: ability.dbcSpellId, + ownerKnowsSpell: true, + targetAlive: Boolean(target && !target.dead), + targetHostile: Boolean(target), + isPositiveSpell: ability.target === "friendly" || ability.target === "self", + hasSummonEffect: ability.effects.some((effect) => effect.kind === "summon" || effect.kind === "pet"), + isAreaTargeted, + actionTargetIsOwner, + excludedUtilitySpell: wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName(ability.name), + }; + if (!wow335DeathKnightDancingRuneWeaponCanMirrorEvent(event)) return 0; + const amount = wow335DeathKnightDancingRuneWeaponDamage(rawOwnerDamage); + if (amount <= 0) return 0; + return combat.damageMob(targetId, amount, now, { + actorId: member.id, + role: member.role, + abilityId: ability.id, + }, presentationSchoolForAbility(ability)).amount; +} + +function maybeProcPartyWarriorUnbridledWrath( + member: PartyMember, + landedDamagingMainHandAutoAttack: boolean, + weaponSpeedMs: number, + seed: string, + now: number, +): PartyMember { + if (member.classId !== "warrior" || !landedDamagingMainHandAutoAttack) return member; + const rank = member.talentRanks[WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID] ?? 0; + const profile = wow335WarriorUnbridledWrathProfile(rank); + if (!profile || !wow335WarriorUnbridledWrathShouldProc( + rank, + weaponSpeedMs, + stableCombatUnit(`${seed}:wow335-warrior-unbridled-wrath`), + )) return member; + + useCombatStore.getState().restoreActorResource( + member.id, + "rage", + profile.ragePerProc, + false, + member.id, + WOW335_WARRIOR_UNBRIDLED_WRATH_ABILITY_ID, + now, + ); + return memberFromCompanionActor(member, useCombatStore.getState().actors[member.id]); +} + /** Weapon swings continue during the GCD and supply Rage for paid attacks. */ function advancePartyWeaponAttack(member: PartyMember, targetId: string, now: number): PartyMember { - if (partyUsesRangedAttacks(member) && baseClassFor(member.classId) !== "hunter") return member; + const hasMaelstromWeaponTalent = member.classId === "shaman" + && (member.talentRanks["talent-2057"] ?? 0) > 0; + if (partyUsesRangedAttacks(member) && baseClassFor(member.classId) !== "hunter" + && !hasMaelstromWeaponTalent) return member; const origin = getPartyRuntimePosition(member.id) ?? useCombatStore.getState().playerPosition; const targetPosition = getMobPosition(targetId); const spatial = combatSpatialActor(member.id); @@ -1250,61 +2121,160 @@ function advancePartyWeaponAttack(member: PartyMember, targetId: string, now: nu || distanceSquared(origin, targetPosition) > partyAttackRange(member) ** 2 || Math.abs(origin[1] - targetPosition[1]) > 8 || !combatHasLineOfSight(origin, targetPosition) - || (spatial && !isPositionInFacingArc(spatial, targetPosition, Math.PI)) - || now < (nextWeaponAttackAt.get(member.id) ?? 0)) return member; + || (spatial && !isPositionInFacingArc(spatial, targetPosition, Math.PI))) return member; + const rogueOffhandWeapon = partyRogueOffhandWeapon(member); + if (rogueOffhandWeapon) { + const masteryActive = partyRogueOffHandMasteryActive(member, now); + const deadlineKey = `${member.id}:off-hand`; + if (now >= (nextRogueOffhandAttackAt.get(deadlineKey) ?? 0)) { + const profile = partyRogueOffhandAttackProfile(member, rogueOffhandWeapon, masteryActive, now); + nextRogueOffhandAttackAt.set(deadlineKey, now + profile.intervalMs); + const abilityId = "party-auto-attack-offhand"; + const seed = `${member.id}:${targetId}:${abilityId}:${now}:off-hand`; + const targetLevel = useCombatStore.getState().mobs[targetId]?.level ?? member.level; + const rules = { + isAutoAttack: true, + isDualWielding: true, + ...(masteryActive ? { + baseMissChancePercent: Math.max(0, + baseMissChancePercent("melee", member.level, targetLevel, true) + - ROM_ROGUE_OFF_HAND_MASTERY_ACCURACY_PERCENT), + } : {}), + }; + const result = useCombatStore.getState().damageMob( + targetId, + profile.damage, + now, + { actorId: member.id, role: member.role, abilityId }, + "physical", + { + attackKind: "melee", + seed, + abilityId, + rules, + weaponSpeedMs: rogueOffhandWeapon.speedMs, + }, + ); + if (result.amount > 0) { + applyPartyRomRoguePoisonOnAutoAttack(member, targetId, abilityId, now); + useCombatStore.getState().triggerRogueWeaponPoisons(member.id, targetId, abilityId, 1, now); + } + for (const phase of ["release", "impact"] as const) { + emitCombatPresentation({ occurredAt: now, phase, actorGroup: "party", sourceActorId: member.id, + targetActorId: targetId, abilityId, name: "Off-hand Auto Attack", source: "fallback", school: "physical", + delivery: "melee", origin, targetPosition, instantCast: true }); + } + } + } + if (member.classId === "shaman") { + const hands = (["main-hand", "off-hand"] as const).flatMap((hand) => { + const weapon = partyShamanWeapon(member, hand); + return weapon ? [{ hand, weapon }] : []; + }); + const isDualWielding = hands.some(({ hand }) => hand === "off-hand"); + for (const { hand, weapon } of hands) { + const deadlineKey = `${member.id}:${hand}`; + if (now < (nextShamanWeaponAttackAt.get(deadlineKey) ?? 0)) continue; + const flurryActiveBeforeSwing = wow335ShamanFlurryIsActive( + useCombatStore.getState().auras, member.id, now, + ); + const profile = partyShamanWeaponAttackProfile(member, weapon, hand, now); + const abilityId = hand === "main-hand" ? "party-auto-attack" : "party-auto-attack-offhand"; + const seed = `${member.id}:${targetId}:${abilityId}:${now}:${hand}`; + const result = useCombatStore.getState().damageMob( + targetId, + profile.damage, + now, + { actorId: member.id, role: member.role, abilityId }, + "physical", + { + attackKind: "melee", + seed, + abilityId, + rules: { isAutoAttack: true, isDualWielding }, + }, + ); + // Re-read owner auras after the hit: Flurry is applied/consumed inside + // damageMob, and its haste determines this hand's next swing interval. + const flurryActiveAfterSwing = wow335ShamanFlurryIsActive( + useCombatStore.getState().auras, member.id, now, + ); + const nextIntervalMs = flurryActiveBeforeSwing || flurryActiveAfterSwing + ? partyShamanWeaponAttackProfile(member, weapon, hand, now).intervalMs + : profile.intervalMs; + nextShamanWeaponAttackAt.set(deadlineKey, now + nextIntervalMs); + if ((result.combatResult?.landed ?? result.amount > 0) && result.amount > 0) { + maybeProcPartyShamanMaelstromWeapon( + member, targetId, abilityId, hand, weapon.speedMs, now, + ); + } + for (const phase of ["release", "impact"] as const) { + emitCombatPresentation({ occurredAt: now, phase, actorGroup: "party", sourceActorId: member.id, + targetActorId: targetId, abilityId, name: "Auto Attack", source: "fallback", school: "physical", + delivery: "melee", origin, targetPosition, instantCast: true }); + } + } + return member; + } + if (now < (nextWeaponAttackAt.get(member.id) ?? 0)) return member; nextWeaponAttackAt.set(member.id, now + memberSwingMs(member, now)); const abilityId = "party-auto-attack"; const scentRank = member.classId === "death-knight" ? member.talentRanks[WOW335_DEATH_KNIGHT_SCENT_OF_BLOOD_TALENT_ID] ?? 0 : 0; - const result = useCombatStore.getState().damageMob(targetId, partyAttackDamage(member), now, - { actorId: member.id, role: member.role, abilityId }, "physical", scentRank > 0 ? { - attackKind: "melee", - seed: `${member.id}:${targetId}:${abilityId}:${now}:scent-of-blood-auto-attack`, + const bloodCakedBladeRank = member.classId === "death-knight" + ? member.talentRanks[WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID] ?? 0 + : 0; + const bloodyVengeanceRank = member.classId === "death-knight" + ? member.talentRanks[WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID] ?? 0 + : 0; + const unbridledWrathRank = member.classId === "warrior" + ? member.talentRanks[WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID] ?? 0 + : 0; + const goForTheThroatRank = member.classId === "hunter" + ? member.talentRanks[WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID] ?? 0 + : 0; + const rogueDualWielding = member.classId === "rom-rogue" && Boolean(rogueOffhandWeapon); + const needsAttackRoll = scentRank > 0 || bloodCakedBladeRank > 0 || bloodyVengeanceRank > 0 + || unbridledWrathRank > 0 || goForTheThroatRank > 0 || rogueDualWielding; + const weaponSpeedMs = member.gearStats.meleeWeapon?.speedMs ?? 2_400; + const seed = `${member.id}:${targetId}:${abilityId}:${now}:${rogueDualWielding ? "rom-rogue-dual-wield-main-hand" : "scent-of-blood-auto-attack"}`; + useCombatStore.getState().notifyOwnerHostileAction(member.id, targetId); + const ownerAttackDamage = partyAttackDamage(member); + const result = useCombatStore.getState().damageMob(targetId, ownerAttackDamage, now, + { actorId: member.id, role: member.role, abilityId }, "physical", needsAttackRoll ? { + attackKind: goForTheThroatRank > 0 ? "ranged" : "melee", + seed, abilityId, + rules: { isAutoAttack: true, ...(rogueDualWielding ? { isDualWielding: true } : {}) }, + weaponSpeedMs, } : undefined); + if (member.classId === "death-knight" + && (result.combatResult?.landed ?? result.amount > 0) + && result.amount > 0) { + maybeMirrorPartyDeathKnightDancingRuneWeaponMelee( + member, + targetId, + result.combatResult?.rawDamage ?? ownerAttackDamage, + now, + abilityId, + ); + } let runtimeMember = consumePartyScentOfBloodMeleeCharge( member, abilityId, scentRank > 0 && (result.combatResult?.landed ?? result.amount > 0), now, ); + runtimeMember = maybeProcPartyWarriorUnbridledWrath( + runtimeMember, + Boolean(result.combatResult?.landed && result.amount > 0), + weaponSpeedMs, + seed, + now, + ); if (member.classId === "rom-rogue" && result.amount > 0) { - const poisonSkill = abilitiesForCharacter(member.classId, member.secondaryClassId) - .find((ability) => ability.dbcSpellId === ROM_ROGUE_POISON_SKILL_ID); - const learnedPoison = poisonSkill - && learnedAbilityForBuild(poisonSkill, member.level, member.talentRanks); - const combat = useCombatStore.getState(); - const poisonActive = combat.auras.some((aura) => ( - aura.targetId === member.id - && aura.definition.utilityTags?.includes(ROM_ROGUE_POISON_AURA_TAG) - && (aura.expiresAt === null || aura.expiresAt > now) - )); - const application = learnedPoison && poisonActive && !combat.mobs[targetId]?.dead - ? romRoguePoisonApplicationForAttack({ - classId: member.classId, - sourceActorId: member.id, - targetActorId: targetId, - attackKind: partyUsesRangedAttacks(member) - ? baseClassFor(member.classId) === "hunter" ? "ranged" : "spell" - : "melee", - isNormalAttack: true, - attackLanded: true, - poisonActive, - roll: stablePartyUnit(`${member.id}:${targetId}:${abilityId}:${now}:rom-rogue-poison`), - }) - : null; - if (application) { - useCombatStore.setState((state) => ({ - auras: [...applyCombatAura(state.auras, { - definition: application.definition, - sourceId: application.sourceId, - targetId: application.targetId, - stacks: application.stacks, - now, - }).auras], - })); - } + applyPartyRomRoguePoisonOnAutoAttack(member, targetId, abilityId, now); } if (result.amount > 0 && baseClassFor(member.classId) === "rogue") { useCombatStore.getState().triggerRogueWeaponPoisons(member.id, targetId, abilityId, 1, now); @@ -1362,6 +2332,11 @@ export function partyAbilityTargetIsValid( castCanMove = false, ): boolean { const combat = useCombatStore.getState(); + if (member.classId === "warrior" && ability.name === "Victory Rush" + && !combat.auras.some((aura) => aura.targetId === member.id + && (aura.expiresAt === null || aura.expiresAt > now) + && (aura.definition.utilityTags?.includes(WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG) + || aura.definition.utilityTags?.includes(WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG)))) return false; if (romPriestWarriorStanceRequired(ability)) { const activeAuraTags = combat.auras .filter((aura) => aura.targetId === member.id && (aura.expiresAt === null || aura.expiresAt > now)) @@ -1402,12 +2377,23 @@ export function partyAbilityTargetIsValid( && aura.definition.disposition === "buff" && aura.definition.dispelCategory === "enrage" && !aura.definition.name.startsWith("Enraged Regeneration"))) return false; if (ability.source === "runewaker") { + const requiredTargetStateTag = romAbilityRequiredTargetStateTag(ability); + if (requiredTargetStateTag && !combat.auras.some((aura) => aura.targetId === targetId + && (aura.expiresAt === null || aura.expiresAt > now) + && aura.definition.utilityTags?.includes(requiredTargetStateTag)) + && !combat.effects.some((effect) => effect.kind === "dot" && effect.targetId === targetId + && effect.remainingTicks > 0 && effect.tag === requiredTargetStateTag)) return false; if (ability.dbcSpellId === 491613 && mob?.creatureFamily === "living" && !(member.classId === "rom-knight" && member.secondaryClassId === "rom-scout" && member.level >= 60)) return false; - if (ability.dbcSpellId === 490347 && mob?.creatureFamily === "undead") return false; if (ability.dbcSpellId === 490151 && (member.comboTargetId !== targetId || member.comboPoints <= 0)) return false; - if (ability.dbcSpellId === 490347 && !combat.auras.some((aura) => aura.targetId === member.id - && aura.definition.utilityTags?.includes("rom-poisonous"))) return false; + if (ability.dbcSpellId === ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID || ability.dbcSpellId === ROM_ROGUE_POISON_SKILL_ID) { + const handsEffect = ability.effects.find((effect) => effect.kind === "apply-aura"); + const activeHandsAura = combat.auras.find((aura) => aura.targetId === member.id + && aura.definition.exclusiveGroup === ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP + && (aura.expiresAt === null || aura.expiresAt > now)); + if (activeHandsAura && handsEffect?.kind === "apply-aura" + && activeHandsAura.definition.id !== handsEffect.aura.id) return false; + } if (ability.dbcSpellId === 493017 && !combat.auras.some((aura) => aura.targetId === member.id && aura.definition.utilityTags?.includes("rom-poisonous"))) return false; if (ability.dbcSpellId === 492920 && !combat.effects.some((effect) => effect.kind === "dot" @@ -1454,7 +2440,13 @@ export function partyAbilityTargetIsValid( member.talentRanks[WOW335_MAGE_FLAME_THROWING_TALENT_ID] ?? 0, ).damagingSpellRangeBonusYards : 0; - const maximumRange = attackRange + flameThrowingBonusYards; + const hasCastTimeOrChannel = ability.castTimeMs > 0 + || ability.castMode === "channel" + || (ability.channelTickMs ?? 0) > 0; + const naturesReachBonusYards = member.classId === "druid" && damagingSpell && hasCastTimeOrChannel + ? wow335DruidNaturesReachRangeBonusYards(member.talentRanks[WOW335_DRUID_NATURES_REACH_TALENT_ID] ?? 0) + : 0; + const maximumRange = attackRange + flameThrowingBonusYards + naturesReachBonusYards; if (distance < ability.range.min || distance > maximumRange || Math.abs(origin[1] - targetPosition[1]) > 8) return false; if (targeting.requiresLineOfSight && !combatHasLineOfSight(origin, targetPosition)) return false; if (hostile && targeting.requiresFacing) { @@ -1568,6 +2560,32 @@ function partyHealingTargets( return [primaryTargetId]; } +function partyResourcePoolSnapshotsInRange( + ability: AbilityDefinition, + caster: PartyMember, + members: readonly PartyMember[], +): readonly PartyResourcePoolSnapshot[] { + if (!ability.effects.some((effect) => effect.kind === "resource" && effect.scope === "party")) return []; + const combat = useCombatStore.getState(); + const origin = partyFriendlyPosition(caster.id); + if (!origin) return []; + const targeting = targetingRulesForAbility(ability); + const radius = targeting.radius ?? ability.radius ?? 0; + const recipientIds = [ + ...(simulatedPartyExcludesPlayer() ? [] : [PLAYER_AGGRO_ID]), + ...members.map((candidate) => candidate.id), + ]; + return recipientIds.flatMap((id) => { + const actor = combat.actors[id]; + const position = partyFriendlyPosition(id); + return actor?.alive && position + && distanceSquared(origin, position) <= radius * radius + && combatHasLineOfSight(origin, position) + ? [{ resources: actor.resources }] + : []; + }); +} + interface PartyAbilityExecutionResult { readonly member: PartyMember; readonly effectiveAmount: number; @@ -1604,6 +2622,29 @@ function choosePartySupportIntent( const resurrection = partyResurrectionAbility(member); if (resurrection) return { ability: resurrection, targetId: fallenTargetId }; } + if (member.classId === "hunter") { + const deadPet = combat.summons.find((summon) => ( + summon.ownerActorId === member.id && summon.hunterPet && summon.health <= 0 + )); + const petId = partyHunterPetRecipientIds(combat.summons, member.id, now)[0]; + const pet = petId ? combat.summons.find((summon) => summon.id === petId) : undefined; + const hunterAbilities = abilitiesForCharacter(member.classId, member.secondaryClassId) + .map((ability) => learnedAbilityForBuild(ability, member.level, member.talentRanks)) + .filter((ability): ability is AbilityDefinition => ability !== null); + const revivePet = hunterAbilities.find((ability) => ability.name === "Revive Pet"); + if (deadPet && revivePet + && partyAbilityIsReady(member, revivePet, now) + && partyAbilityTargetIsValid(member, revivePet, member.id, undefined, now)) { + return { ability: revivePet, targetId: member.id }; + } + const mendPet = hunterAbilities.find((ability) => ability.name === "Mend Pet"); + if (pet && mendPet && pet.health < pet.maxHealth * 0.75 + && !healingAbilityHasPendingHot(mendPet, member.id, pet.id, combat.effects) + && partyAbilityIsReady(member, mendPet, now) + && partyAbilityTargetIsValid(member, mendPet, member.id, undefined, now)) { + return { ability: mendPet, targetId: member.id }; + } + } if (member.role !== "healer") return null; const dispelTargetId = [ ...(!simulatedPartyExcludesPlayer() && combat.health > 0 ? [PLAYER_AGGRO_ID] : []), @@ -1781,6 +2822,139 @@ function choosePartySupportIntent( return null; } +function partyGreenGuardianIntent( + member: PartyMember, + now: number, + inCombat: boolean, +): PartySupportIntent | null { + if (!inCombat || !isRomMageDruidPair({ + classId: member.classId, + secondaryClassId: member.secondaryClassId ?? undefined, + })) return null; + const combat = useCombatStore.getState(); + if (combat.auras.some((aura) => aura.targetId === member.id + && aura.definition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG) + && (aura.expiresAt === null || aura.expiresAt > now))) return null; + const source = abilitiesForCharacter(member.classId, member.secondaryClassId) + .find((ability) => ability.dbcSpellId === ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID); + const ability = source ? learnedAbilityForBuild(source, member.level, member.talentRanks) : null; + if (!ability || !partyAbilityIsReady(member, ability, now) + || !partyAbilityTargetIsValid(member, ability, member.id, undefined, now)) return null; + // CoA defines Green Guardian as an active self skill but gives no companion + // auto-use policy. The simulator uses it once on the first available combat + // action when learned; this is an AI policy, not a source-described trigger. + return { ability, targetId: member.id }; +} + +function awardPartyPriestChampionRageControl( + member: PartyMember, + cast: NonNullable, + endedAt: number, +): PartyMember { + if (cast.mode !== "channel" || member.classId !== "rom-priest" + || member.secondaryClassId !== "rom-champion") return member; + const passive = abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( + candidate.source === "runewaker" + && candidate.classId === "rom-priest" + && candidate.secondaryClassId === "rom-champion" + && candidate.dbcSpellId === 498610 + && candidate.passive + )); + const learnedRageControl = Boolean(passive + && learnedAbilityForBuild(passive, member.level, member.talentRanks)); + const durationMs = Math.max(0, Math.min(endedAt, cast.completesAt) - cast.startedAt); + const gain = romPriestChampionRageControlGain(learnedRageControl, { kind: "channel", durationMs }); + if (gain <= 0) return member; + useCombatStore.getState().restoreActorResource( + member.id, + "rage", + gain, + false, + member.id, + cast.abilityId, + endedAt, + ); + return memberFromCompanionActor(member, useCombatStore.getState().actors[member.id]); +} + +/** @internal Shared with focused runtime regression coverage; call only after a qualifying hit resolves. */ +export function applyPartyRomCoaExhaustion( + member: PartyMember, + ability: AbilityDefinition, + landed: boolean, + seed: string, + now: number, +): PartyMember { + if (member.classId !== "rom-warrior" + || member.secondaryClassId !== "rom-rogue" + || ability.source !== "runewaker" + || ability.dbcSpellId !== ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID) return member; + const learnedPassive = abilitiesForCharacter(member.classId, member.secondaryClassId).some((candidate) => ( + candidate.source === "runewaker" + && candidate.classId === "rom-warrior" + && candidate.secondaryClassId === "rom-rogue" + && candidate.dbcSpellId === ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID + && candidate.passive + && learnedAbilityForBuild(candidate, member.level, member.talentRanks) !== null + )); + const proc = romCoaWarriorRogueExhaustionProc({ + classId: member.classId, + secondaryClassId: member.secondaryClassId, + learnedPassiveSpellIds: learnedPassive ? [ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID] : [], + triggerSpellId: ability.dbcSpellId, + attackLanded: landed, + roll: stablePartyUnit(seed), + }); + if (!proc.procced) return member; + useCombatStore.getState().restoreActorResource(member.id, "energy", proc.energy, false, member.id, ability.id, now); + useCombatStore.getState().restoreActorResource(member.id, "rage", proc.rage, false, member.id, ability.id, now); + const latest = useCombatStore.getState().actors[member.id]; + return latest ? memberFromCompanionActor(member, latest) : member; +} + +function spreadPartyPestilenceDiseases( + sourceActorId: string, + anchorTargetId: string, + affectedTargetIds: readonly string[], + now: number, +): boolean { + const diseaseTags = new Set(["blood-plague", "frost-fever"]); + const combat = useCombatStore.getState(); + const diseases = combat.effects.filter((effect) => ( + effect.kind === "dot" + && effect.targetId === anchorTargetId + && effect.sourceActorId === sourceActorId + && effect.tag !== undefined + && diseaseTags.has(effect.tag) + && effect.remainingTicks > 0 + && effect.nextTickAt + (effect.remainingTicks - 1) * effect.intervalMs > now + )); + const recipients = affectedTargetIds.filter((targetId) => targetId !== anchorTargetId); + if (!diseases.length || !recipients.length) return false; + + useCombatStore.setState((state) => { + const effects = [...state.effects]; + for (const recipientId of recipients) { + for (const disease of diseases) { + for (let index = effects.length - 1; index >= 0; index -= 1) { + const current = effects[index]; + if (current.kind === "dot" + && current.targetId === recipientId + && current.sourceActorId === sourceActorId + && current.tag === disease.tag) effects.splice(index, 1); + } + effects.push({ + ...disease, + id: `${disease.id}:pestilence:${recipientId}:${now}`, + targetId: recipientId, + }); + } + } + return { effects }; + }); + return true; +} + function executePartyAbility( member: PartyMember, ability: AbilityDefinition, @@ -1793,6 +2967,13 @@ function executePartyAbility( tidalWavesChargesConsumed = 0, arcanePotencyCriticalChanceBonusPercent = 0, manaSpent = 0, + maelstromWeaponRank = 0, + maelstromWeaponStacksConsumed = 0, + reapingRuneUse?: { + readonly runesBefore: readonly DeathKnightRuneState[]; + readonly spentRuneSlots: readonly number[]; + }, + illuminationBaseManaCostSnapshot?: number, ): PartyAbilityExecutionResult { let combat = useCombatStore.getState(); if (ability.source === "runewaker") { @@ -1816,12 +2997,20 @@ function executePartyAbility( const hostileTargets = combat.mobs[targetId] || ability.target === "self" ? partyHostileTargets(ability, targetId, origin, member.id) : []; + if (ability.target === "hostile" && ability.name !== "Hunter's Mark" && hostileTargets.length > 0 + && ability.effects.some((effect) => ["damage", "dot", "finisher-damage", "execute"].includes(effect.kind))) { + useCombatStore.getState().notifyOwnerHostileAction(member.id, targetId); + } const friendlyTargets = combat.mobs[targetId] ? [] : partyHealingTargets(ability, targetId, members); const consumesColdBlood = ability.name !== "Cold Blood" && hostileTargets.length > 0 && ability.effects.some((effect) => ["damage", "dot", "finisher-damage"].includes(effect.kind)) && combat.auras.some((aura) => aura.targetId === member.id && aura.definition.utilityTags?.includes("next-offensive-critical")); - const spellSchool = presentationSchoolForAbility(ability); + const spellSchool = member.classId === "shaman" + && ability.source === "wow335-progression" + && ["Lightning Bolt", "Chain Lightning"].includes(ability.name) + ? abilityDamageSchool("shaman", ability) + : presentationSchoolForAbility(ability); const usesCombustion = spellSchool === "fire" && hostileTargets.length > 0 && ability.effects.some((effect) => effect.kind === "damage") && combat.auras.some((aura) => aura.targetId === member.id @@ -1883,24 +3072,108 @@ function executePartyAbility( let runtimeMember = member; let effectiveAmount = 0; let directHealingRawAmount = 0; + let romBeaconHealTriggeredForCast = false; + let romPriestHolyCandleChargedForCast = channelPulse + && (member.activeCast?.romPriestHolyCandleCharged ?? false); + let deathKnightReapingProcAttemptedForCast = false; + let deathKnightReapingSpendRestoreAttemptedForCast = false; + const attemptDeathKnightReapingOnLandedTrigger = (): void => { + if (member.classId !== "death-knight" || deathKnightReapingProcAttemptedForCast) return; + if (!deathKnightReapingSpendRestoreAttemptedForCast) { + runtimeMember = { + ...runtimeMember, + runes: wow335DeathKnightReapingRestoreLandedSpend( + runtimeMember.runes, + reapingRuneUse?.spentRuneSlots ?? [], + true, + ), + }; + deathKnightReapingSpendRestoreAttemptedForCast = true; + } + deathKnightReapingProcAttemptedForCast = true; + const reapingRank = member.talentRanks["talent-2001"] ?? 0; + const shouldProc = wow335DeathKnightReapingShouldProc(reapingRank, { + spellId: ability.dbcSpellId ?? -1, + landed: true, + roll: stablePartyUnit( + `${member.id}:${ability.id}:${targetId}:${now}:wow335-death-knight-reaping`, + ), + }); + if (!shouldProc || !reapingRuneUse) return; + const reapingState = wow335DeathKnightReapingStateForRunes(runtimeMember.runes, now); + const reapingPlan = wow335DeathKnightReapingProcPlan( + reapingRank, + reapingState, + reapingRuneUse.runesBefore, + runtimeMember.runes, + now, + ); + runtimeMember = { + ...runtimeMember, + runes: wow335DeathKnightReapingApplyProcPlan(runtimeMember.runes, reapingPlan), + }; + }; + const landedDirectHitTargetIdsForCast = new Set(); + const criticalDirectHitTargetIdsForCast = new Set(); const empoweredFireRank = member.classId === "mage" ? member.talentRanks[WOW335_MAGE_EMPOWERED_FIRE_TALENT_ID] ?? 0 : 0; - const castEffects = romEffectsForCast(ability, { + const learnedRomPriestWarriorCondensedRage = member.classId === "rom-priest" + && member.secondaryClassId === "rom-warrior" + && abilitiesForCharacter(member.classId, member.secondaryClassId).some((candidate) => ( + candidate.source === "runewaker" + && candidate.classId === "rom-priest" + && candidate.secondaryClassId === "rom-warrior" + && candidate.dbcSpellId === 493038 + && learnedAbilityForBuild(candidate, member.level, member.talentRanks) !== null + )) + ? [493038] + : []; + const learnedRomPriestChampionPassiveSpellIds = member.classId === "rom-priest" + && member.secondaryClassId === "rom-champion" + ? abilitiesForCharacter(member.classId, member.secondaryClassId) + .filter((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-priest" + && candidate.secondaryClassId === "rom-champion" + && candidate.passive + && learnedAbilityForBuild(candidate, member.level, member.talentRanks) !== null) + .map((candidate) => candidate.dbcSpellId) + : []; + const romMainHand = ability.source === "runewaker" + ? resolvedEquipmentLoadout(combat.equipment, combat.inventory, { + ownerId: member.id, ownerKind: "party", classId: member.classId, + secondaryClassId: member.secondaryClassId, + specializationId: member.specializationId, role: member.role, level: member.level, + })["main-hand"] + : null; + let castEffects = romEffectsForCast(ability, { sealStacks: member.comboTargetId === targetId ? member.comboPoints : 0, bleedCount: romTargetBleedCount(combat.effects, member.id, targetId), charged: combat.auras.some((aura) => aura.targetId === member.id && aura.definition.utilityTags?.includes("rom-charged")), - mainHandDagger: member.classId === "rom-rogue" && resolvedEquipmentLoadout(combat.equipment, combat.inventory, { - ownerId: member.id, ownerKind: "party", classId: member.classId, - secondaryClassId: member.secondaryClassId, - specializationId: member.specializationId, role: member.role, level: member.level, - })["main-hand"]?.weaponType === "dagger", + mainHandDagger: member.classId === "rom-rogue" && romMainHand?.weaponType === "dagger", + mainHandTwoHandHammer: romMainHand?.inventorySlot === "two-hand" && romMainHand.weaponType === "mace", casterMaxHealth: member.maxHealth, targetHealthPercent: combat.mobs[targetId] ? combat.mobs[targetId]!.health / Math.max(1, combat.mobs[targetId]!.maxHealth) : 1, + selectedTargetRelationship: combat.mobs[targetId] ? "hostile" : "friendly", naturePower: member.resourcePools["nature-power"] ?? 0, + defaultDamageIsPhysical: abilityDamageSchool(member.classId, ability) === "physical", + learnedPassiveSpellIds: [ + ...learnedRomPriestWarriorCondensedRage, + ...learnedRomPriestChampionPassiveSpellIds, + ...(member.classId === "rom-warlock" && member.secondaryClassId + ? abilitiesForCharacter(member.classId, member.secondaryClassId) + .filter((candidate) => candidate.source === "runewaker" + && candidate.classId === "rom-warlock" + && candidate.secondaryClassId === member.secondaryClassId + && candidate.passive) + .map((candidate) => learnedAbilityForBuild(candidate, member.level, member.talentRanks)) + .filter((candidate): candidate is AbilityDefinition => Boolean(candidate)) + .map((candidate) => candidate.dbcSpellId) + : []), + ], eruptionProcRoll: stableCombatUnit( `${member.id}:${ability.id}:${targetId ?? "self"}:${now}:rom-eruption`, ), @@ -1920,6 +3193,17 @@ function executePartyAbility( .flatMap((effect) => effect.tag ? [effect.tag] : []), ), }).map((effect) => wow335MageEmpoweredFireEffect(ability.name, effect, empoweredFireRank)); + if (member.classId === "death-knight") { + const epidemicRank = member.talentRanks[WOW335_DEATH_KNIGHT_EPIDEMIC_TALENT_ID] ?? 0; + castEffects = castEffects.map((effect) => wow335DeathKnightEpidemicDotEffect(effect, epidemicRank)); + } + const shamanWeaponLoadout = member.classId === "shaman" + ? resolvedEquipmentLoadout(combat.equipment, combat.inventory, { + ownerId: member.id, ownerKind: "party", classId: member.classId, + secondaryClassId: member.secondaryClassId, + specializationId: member.specializationId, role: member.role, level: member.level, + }) + : null; if (ability.dbcSpellId === 492920 && castEffects.some((effect) => effect.kind === "dot" && effect.tag === "rom-622992")) { useCombatStore.setState((state) => ({ @@ -1929,6 +3213,19 @@ function executePartyAbility( })); } for (const effect of castEffects) { + // Necrotic Wound's Sinister Request rider belongs to the completed cast. + // romEffectsForCast also appends it to each synthetic channel-pulse ability, + // so applying it here would reduce the cooldown once per hit plus once at + // completion. Keep the three damage pulses intact and defer only this + // cast-level rider to the successful completion call below. + if (channelPulse && ability.source === "runewaker" && ability.dbcSpellId === 494321 + && member.classId === "rom-druid" && member.secondaryClassId === "rom-rogue" + && effect.kind === "cooldown-reset") continue; + if ((effect.kind === "heal" || effect.kind === "apply-aura") + && effect.requiresLandedHit + && landedDirectHitTargetIdsForCast.size === 0) continue; + if (effect.kind === "apply-aura" && effect.requiresCriticalHit + && criticalDirectHitTargetIdsForCast.size === 0) continue; if (ability.name === "Penance" && combat.mobs[targetId] && (effect.kind === "heal" || effect.kind === "hot")) continue; if (ability.name === "Penance" && !combat.mobs[targetId] @@ -1949,16 +3246,28 @@ function executePartyAbility( arcanePotencyCriticalChanceBonusPercent, ); } else { + const shamanWeaponHand = member.classId === "shaman" && effect.kind === "damage" + ? effect.weaponHand ?? (ability.name === "Lava Lash" ? "off-hand" : undefined) + : undefined; + const shamanWeapon = shamanWeaponHand ? shamanWeaponLoadout?.[shamanWeaponHand]?.stats.meleeWeapon ?? null : null; + if (effect.kind === "damage" && shamanWeaponHand && !shamanWeapon) continue; const sunderStacks = effect.kind === "damage" && effect.bonusPerSunderStack ? useCombatStore.getState().auras.find((aura) => aura.targetId === hostileTargetId && aura.definition.id === "wow335:warrior:sunder-armor")?.stacks ?? 0 : 0; - const partyDamageAmount = partyWarlockAbilityAmount( - runtimeMember, - ability, - effect, - envenomDosesByTarget.get(hostileTargetId) ?? 0, - ); + const partyDamageAmount = effect.kind === "damage" && effect.weaponHand && shamanWeapon && shamanWeaponHand + ? Math.max(1, Math.round( + partyShamanWeaponHitDamage(runtimeMember, shamanWeapon, shamanWeaponHand, now) + * effect.coefficient, + ) + (effect.bonusFlat ?? 0)) + : partyWarlockAbilityAmount( + runtimeMember, + ability, + effect, + envenomDosesByTarget.get(hostileTargetId) ?? 0, + hostileTargetId, + now, + ); const targetStatuses = useCombatStore.getState().mobs[hostileTargetId]?.statuses ?? []; const mageTargetDamageAmount = member.classId === "mage" ? wow335MageTormentTheWeakDamage( @@ -1971,6 +3280,22 @@ function executePartyAbility( : partyDamageAmount; const deathKnightSuddenDoomTrigger = member.classId === "death-knight" && ["Blood Strike", "Heart Strike"].includes(ability.name); + const deathKnightBloodyVengeanceRank = member.classId === "death-knight" + ? member.talentRanks[WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID] ?? 0 + : 0; + const deathKnightBloodyVengeanceHit = deathKnightBloodyVengeanceRank > 0 + && member.classId === "death-knight" + && ability.classId === "death-knight" + && ability.source === "wow335-progression" + && effect.kind === "damage"; + const deathKnightBloodGorgedRank = member.classId === "death-knight" + ? member.talentRanks[WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID] ?? 0 + : 0; + const deathKnightBloodGorgedHit = deathKnightBloodGorgedRank > 0 + && !channelPulse + && effect.kind === "damage" + && ability.classId === "death-knight" + && wow335DeathKnightSpellIdMatchesBloodGorgedMask(ability.dbcSpellId); const deathKnightScentOfBloodRank = member.classId === "death-knight" ? member.talentRanks[WOW335_DEATH_KNIGHT_SCENT_OF_BLOOD_TALENT_ID] ?? 0 : 0; @@ -1978,6 +3303,14 @@ function executePartyAbility( && effect.kind === "damage" && ability.source === "wow335-progression" && spellSchool === "physical"; + const hunterGoForTheThroatRank = member.classId === "hunter" + ? member.talentRanks[WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID] ?? 0 + : 0; + const hunterGoForTheThroatAttackKind = hunterGoForTheThroatRank > 0 + && effect.kind === "damage" + && !channelPulse + ? wow335HunterGoForTheThroatAttackKindForAbility(ability.id) + : null; const drumsOfWarPassiveSource = member.classId === "rom-scout" && member.secondaryClassId === "rom-priest" ? abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( @@ -2015,10 +3348,81 @@ function executePartyAbility( ability.dbcSpellId as (typeof ROM_MAGE_KNIGHT_LIGHT_OF_DAY.triggerSpellIds)[number], ) && Boolean(lightOfDayPassive); + const godsSwordPassiveSource = member.classId === "rom-knight" + && member.secondaryClassId === "rom-rogue" + ? abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( + candidate.source === "runewaker" + && candidate.classId === "rom-knight" + && candidate.secondaryClassId === "rom-rogue" + && candidate.passive + && candidate.dbcSpellId === 491621 + )) + : undefined; + const learnedGodsSwordPassive = godsSwordPassiveSource + ? learnedAbilityForBuild(godsSwordPassiveSource, member.level, member.talentRanks) + : null; + // CoA Knight strikes describe their attack type as "Physical Light + // Damage"; the simulator stores Light as the holy damage school. + const godsSwordPhysicalAbility = spellSchool === "physical" + || (ability.source === "runewaker" + && /\bphysical(?:\s+light)?\s+damage\b/i.test(ability.description)); + const godsSwordDirectPhysicalHit = !channelPulse + && effect.kind === "damage" + && godsSwordPhysicalAbility + && Boolean(learnedGodsSwordPassive); + const shamanWeaponMeleeHit = member.classId === "shaman" + && ability.source === "wow335-progression" + && !channelPulse + && effect.kind === "damage" + && Boolean(shamanWeapon) + && Boolean(shamanWeaponHand) + && (ability.name === "Lava Lash" + || (effect.school ?? abilityDamageSchool(member.classId, ability)) === "physical"); + const shamanElementalDevastationHit = member.classId === "shaman" + && ability.source === "wow335-progression" + && (member.talentRanks[WOW335_SHAMAN_ELEMENTAL_DEVASTATION_TALENT_ID] ?? 0) > 0 + && !channelPulse + && effect.kind === "damage" + && ["fire", "frost", "nature"].includes(effect.school ?? abilityDamageSchool(member.classId, ability)); + const shamanElementalFocusHit = member.classId === "shaman" + && ability.source === "wow335-progression" + && Boolean(wow335ShamanElementalFocusProfileForRank(member.talentRanks["talent-574"] ?? 0)) + && effect.kind === "damage" + && ["fire", "frost", "nature"].includes(effect.school ?? abilityDamageSchool(member.classId, ability)); + const shamanLightningOverloadProfile = member.classId === "shaman" + && ability.source === "wow335-progression" + ? wow335ShamanLightningOverloadProfileForRank( + member.talentRanks[WOW335_SHAMAN_LIGHTNING_OVERLOAD_TALENT_ID] ?? 0, + ) + : null; + const shamanLightningOverloadHit = Boolean(shamanLightningOverloadProfile) + && !channelPulse + && effect.kind === "damage" + && shamanLightningOverloadProfile!.eligibleAbilityNames.includes(ability.name); + const partyWarriorVictoryRushRank = member.classId === "warrior" && ability.name === "Victory Rush" + ? member.talentRanks[WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID] ?? 0 + : 0; + const spreadingPainCriticalBuffActive = effect.kind === "damage" + && member.classId === "rom-warlock" + && member.secondaryClassId === "rom-priest" + && spellSchool !== "physical" + && combat.auras.some((aura) => aura.targetId === member.id + && aura.definition.utilityTags?.includes(ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)); const partyUsesCombatRollContext = drumsOfWarShot || lightOfDayHit || deathKnightSuddenDoomTrigger || deathKnightScentOfBloodMeleeHit + || deathKnightBloodyVengeanceHit + || deathKnightBloodGorgedHit + || shamanWeaponMeleeHit + || shamanElementalDevastationHit + || shamanElementalFocusHit + || shamanLightningOverloadHit + || godsSwordDirectPhysicalHit + || spreadingPainCriticalBuffActive + || partyWarriorVictoryRushRank > 0 || consumesColdBlood || usesCombustion || arcanePotencyCriticalChanceBonusPercent > 0 || masterOfElementsCritPercent > 0 + || hunterGoForTheThroatAttackKind !== null || (effect.kind === "damage" && spellSchool === "frost" && frostbiteRank > 0) || (member.classId === "mage" && (member.talentRanks[WOW335_MAGE_ARCANE_CONCENTRATION_TALENT_ID] ?? 0) > 0); @@ -2028,8 +3432,19 @@ function executePartyAbility( ? member.talentRanks[WOW335_MAGE_MOLTEN_FURY_TALENT_ID] ?? 0 : 0; const partyDamageTargetBeforeHit = useCombatStore.getState().mobs[hostileTargetId]; - const partyRawDirectDamage = mageTargetDamageAmount + const partyRawDirectDamageBase = mageTargetDamageAmount + sunderStacks * (effect.kind === "damage" ? effect.bonusPerSunderStack ?? 0 : 0); + const partyBlessingAuras = !partyUsesCombatRollContext && member.classId === "rom-priest" + ? combat.auras.filter((aura) => aura.targetId === member.id + && (aura.expiresAt === null || aura.expiresAt > now)) + : []; + const partyRawDirectDamage = effect.kind === "damage" && partyBlessingAuras.length > 0 + ? romPriestHolyBlessingDamage( + partyRawDirectDamageBase, + partyBlessingAuras, + effect.school ?? spellSchool, + ) + : partyRawDirectDamageBase; const partyDirectDamageWithMoltenFury = effect.kind === "damage" && partyMageMoltenFuryRank > 0 && !partyUsesCombatRollContext @@ -2042,25 +3457,241 @@ function executePartyAbility( partyDamageTargetBeforeHit.maxHealth, ) : partyRawDirectDamage; + const mercilessCombatRank = !channelPulse + && effect.kind === "damage" + && member.classId === "death-knight" + && ability.classId === "death-knight" + ? member.talentRanks[WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_TALENT_ID] ?? 0 + : 0; + const partyDirectDamageWithMercilessCombat = partyDamageTargetBeforeHit + ? wow335DeathKnightMercilessCombatDamage( + partyDirectDamageWithMoltenFury, + mercilessCombatRank, + ability.name, + partyDamageTargetBeforeHit.health / partyDamageTargetBeforeHit.maxHealth, + ) + : partyDirectDamageWithMoltenFury; + const maelstromWeaponPvpDamageReductionPercent = partyDamageTargetBeforeHit?.characterDefender + && spellSchool !== "physical" + ? wow335ShamanMaelstromWeaponPvpDamageReductionPercent( + maelstromWeaponRank, + maelstromWeaponStacksConsumed, + ability.name, + ) + : 0; const result = combat.damageMob( hostileTargetId, - partyDirectDamageWithMoltenFury, + Math.round(partyDirectDamageWithMercilessCombat + * (1 - maelstromWeaponPvpDamageReductionPercent / 100)), now, - { actorId: member.id, role: member.role, abilityId: ability.id }, + { + actorId: member.id, + role: member.role, + abilityId: ability.id, + }, spellSchool, partyUsesCombatRollContext ? { attackKind: drumsOfWarShot ? "ranged" - : deathKnightScentOfBloodMeleeHit || consumesColdBlood || deathKnightSuddenDoomTrigger - ? "melee" : "spell", abilityId: ability.id, - seed: `${member.id}:${ability.id}:${hostileTargetId}:${now}:special-crit`, + : hunterGoForTheThroatAttackKind + ?? (deathKnightScentOfBloodMeleeHit || deathKnightBloodGorgedHit + || shamanWeaponMeleeHit || godsSwordDirectPhysicalHit + || (deathKnightBloodyVengeanceHit && spellSchool === "physical") + || consumesColdBlood || deathKnightSuddenDoomTrigger + ? "melee" : "spell"), + abilityId: ability.id, + dbcSpellId: ability.dbcSpellId, + seed: `${member.id}:${ability.id}:${hostileTargetId}:${now}:special-crit${shamanWeaponHand ? `:${shamanWeaponHand}` : ""}`, + ...(deathKnightBloodyVengeanceHit && channelPulse ? { periodic: true } : {}), criticalChanceBonusPercent: (consumesColdBlood ? 100 : 0) + arcanePotencyCriticalChanceBonusPercent + masterOfElementsCritPercent, - ...(ability.name === "Shiv" ? { rules: { canCrit: false } } : {}), + ...(godsSwordDirectPhysicalHit || spreadingPainCriticalBuffActive + // Before God's Sword needed a landed-result hook, these party + // hits used the deterministic no-roll damage path. Supply the + // result without adding hit avoidance; Spreading Pain retains + // its actual magical critical rolls. + ? { rules: { + canMiss: false, + canCrit: spreadingPainCriticalBuffActive, + canDodge: false, + canParry: false, + canBlock: false, + } } + : ability.name === "Shiv" ? { rules: { canCrit: false } } : {}), } : undefined, ); effectiveAmount += result.amount; const partyHitLanded = result.combatResult?.landed ?? result.amount > 0; + if (!partyUsesCombatRollContext && effect.kind === "damage" && partyHitLanded && result.amount > 0) { + const learnedSoulBrandPassives = member.classId === "rom-warlock" + && member.secondaryClassId === "rom-mage" + ? abilitiesForCharacter(member.classId, member.secondaryClassId) + .filter((candidate) => candidate.source === "runewaker" + && candidate.passive + && candidate.dbcSpellId === 498705 + && learnedAbilityForBuild(candidate, member.level, member.talentRanks) !== null) + .map((candidate) => candidate.dbcSpellId) + : []; + const soulBrandEffects = romWarlockMageSoulBrandEffects({ + classId: member.classId, + secondaryClassId: member.secondaryClassId ?? "", + learnedPassiveSpellIds: learnedSoulBrandPassives, + }, { + school: effect.school ?? spellSchool, + damageLanded: true, + periodic: channelPulse, + }); + if (soulBrandEffects) { + for (const procEffect of soulBrandEffects) { + if (procEffect.kind === "apply-aura") { + combat.applyActorAura(member.id, hostileTargetId, ability, procEffect, now); + } else if (procEffect.kind === "resource" && procEffect.resource === "psi") { + combat.restoreActorResource(member.id, "psi", procEffect.amount, false, member.id, ability.id, now); + const restoredActor = useCombatStore.getState().actors[member.id]; + const psiPool = restoredActor?.resources.psi; + if (psiPool) { + runtimeMember = { + ...runtimeMember, + resourcePools: { ...runtimeMember.resourcePools, psi: psiPool.current }, + }; + } + } + } + combat = useCombatStore.getState(); + } + } + if (effect.kind === "damage" && partyHitLanded) { + landedDirectHitTargetIdsForCast.add(hostileTargetId); + if (result.combatResult?.critical) criticalDirectHitTargetIdsForCast.add(hostileTargetId); + } + if (member.classId === "death-knight" + && !channelPulse + && effect.kind === "damage" + && hostileTargetId === targetId + && partyHitLanded) { + attemptDeathKnightReapingOnLandedTrigger(); + } + if (shamanLightningOverloadHit + && shamanLightningOverloadProfile + && wow335ShamanLightningOverloadShouldProc( + shamanLightningOverloadProfile, + ability.name, + partyHitLanded, + Boolean(result.combatResult?.critical), + channelPulse, + stablePartyUnit(`${member.id}:${ability.id}:${hostileTargetId}:${now}:${WOW335_SHAMAN_LIGHTNING_OVERLOAD_PROC_TAG}`), + )) { + const echoAmount = wow335ShamanLightningOverloadDamageAmount( + partyDirectDamageWithMoltenFury * (1 - maelstromWeaponPvpDamageReductionPercent / 100), + ); + if (echoAmount > 0) { + const overloadResult = combat.damageMob( + hostileTargetId, + echoAmount, + now, + { + actorId: member.id, + role: member.role, + abilityId: ability.id, + threatScale: shamanLightningOverloadProfile.threatScale, + }, + spellSchool, + { + attackKind: "spell", + abilityId: ability.id, + seed: `${member.id}:${ability.id}:${hostileTargetId}:${now}:${WOW335_SHAMAN_LIGHTNING_OVERLOAD_PROC_TAG}:echo`, + }, + ); + effectiveAmount += overloadResult.amount; + combat = useCombatStore.getState(); + } + } + if (effect.kind === "damage" && hostileTargetId === targetId && !channelPulse + && ability.source === "runewaker" + && ability.dbcSpellId === ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID) { + runtimeMember = applyPartyRomCoaExhaustion( + runtimeMember, + ability, + partyHitLanded, + `${member.id}:${ability.id}:${hostileTargetId}:${now}:rom-coa-exhaustion`, + now, + ); + } + if (shamanElementalFocusHit && partyHitLanded && result.combatResult?.critical) { + maybeProcPartyShamanElementalFocus( + member, + ability, + effect.school ?? abilityDamageSchool(member.classId, ability), + true, + false, + hostileTargetId, + now, + ); + combat = useCombatStore.getState(); + } + if (member.classId === "warlock" + && ability.name === "Conflagrate" + && effect.kind === "damage" + && partyHitLanded) { + const consumedDot = activePartyWarlockConflagrateDot( + combat.effects, + member.id, + hostileTargetId, + now, + ); + const consumedName = consumedDot + ? abilityById(consumedDot.sourceAbilityId)?.name + : undefined; + if (consumedDot) { + useCombatStore.setState((state) => ({ + effects: state.effects.filter((candidate) => candidate.id !== consumedDot.id), + ...(consumedName ? { + auras: state.auras.filter((aura) => !( + aura.sourceId === member.id + && aura.targetId === hostileTargetId + && aura.definition.name.startsWith(consumedName) + )), + } : {}), + })); + combat = useCombatStore.getState(); + } + } + if (member.classId === "warlock" + && ability.name === "Conflagrate" + && effect.kind === "damage" + && !channelPulse + && hostileTargetId === targetId + && partyHitLanded) { + const aftermath = warlockAftermathDazeForRank( + member.talentRanks["talent-982"] ?? 0, + stablePartyUnit(`${member.id}:${ability.id}:${hostileTargetId}:${now}:wow335-warlock-aftermath`), + ); + if (aftermath) { + useCombatStore.getState().controlMob( + hostileTargetId, + ability.id, + "slow", + aftermath.durationMs, + now, + false, + member.id, + aftermath.movementSpeedReductionPercent / 100, + ); + combat = useCombatStore.getState(); + } + } + if (shamanWeaponMeleeHit && partyHitLanded && result.amount > 0 + && shamanWeapon && shamanWeaponHand) { + maybeProcPartyShamanMaelstromWeapon( + runtimeMember, + hostileTargetId, + ability.id, + shamanWeaponHand, + shamanWeapon.speedMs, + now, + ); + combat = useCombatStore.getState(); + } if (deathKnightScentOfBloodMeleeHit && partyHitLanded) { runtimeMember = consumePartyScentOfBloodMeleeCharge(runtimeMember, ability.id, true, now); } @@ -2098,6 +3729,23 @@ function executePartyAbility( stablePartyUnit(`${member.id}:${ability.id}:${hostileTargetId}:${now}:wow335-death-knight-sudden-doom`), ); } + if (member.classId === "death-knight" + && !channelPulse + && effect.kind === "damage" + && hostileTargetId === targetId + && partyHitLanded + && result.amount > 0) { + effectiveAmount += maybeMirrorPartyDeathKnightDancingRuneWeaponSpell( + member, + ability, + hostileTargetId, + true, + result.combatResult?.rawDamage ?? partyDirectDamageWithMoltenFury, + now, + hostileTargets.length > 1 || Boolean(ability.radius), + ); + combat = useCombatStore.getState(); + } if (member.classId === "rom-mage" && !channelPulse && effect.kind === "damage" && partyHitLanded) { const passiveSource = abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( @@ -2168,7 +3816,7 @@ function executePartyAbility( .flatMap((active) => active.tag ? [active.tag] : []), ); if (bonus) effectiveAmount += currentCombat.damageMob( - hostileTargetId, partyAbilityAmount(runtimeMember, ability, bonus), now, + hostileTargetId, partyAbilityAmountWithHolyBlessing(runtimeMember, ability, bonus, 0, now), now, { actorId: member.id, role: member.role, abilityId: ability.id }, "physical", ).amount; } @@ -2196,9 +3844,54 @@ function executePartyAbility( if (effect.kind === "finisher-damage") { runtimeMember = { ...runtimeMember, comboPoints: 0, comboTargetId: null }; } + } else if (effect.kind === "utility" + && effect.action === "class-script" + && ability.name === "Pestilence" + && member.classId === "death-knight" + && hostileTargets.length > 1) { + if (spreadPartyPestilenceDiseases(member.id, targetId, hostileTargets, now)) { + // Pestilence has no generated damage packet. A disease transfer is its + // successful resolution event, so Reaping's proc is evaluated once + // here with the same cast guard used by multi-effect direct attacks. + attemptDeathKnightReapingOnLandedTrigger(); + combat = useCombatStore.getState(); + } + } else if (effect.kind === "utility" + && effect.action === "class-script" + && ability.source === "runewaker" + && ability.dbcSpellId === 494321 + && member.classId === "rom-druid" + && member.secondaryClassId === "rom-rogue" + && effect.triggerSpellId === 494024) { + const poisonAbility = abilityById("rom-druid-rom-rogue-elite-25"); + const poisonEffect = poisonAbility?.effects.find((candidate) => candidate.kind === "dot"); + if (poisonAbility && poisonEffect?.kind === "dot") { + const affected = new Set(hostileTargets); + useCombatStore.setState((state) => ({ + effects: state.effects.filter((active) => !(active.kind === "dot" + && active.targetId !== null + && affected.has(active.targetId) + && active.tag === poisonEffect.tag)), + })); + for (const poisonTargetId of hostileTargets) { + useCombatStore.getState().applyTimedActorEffect(member.id, poisonTargetId, poisonAbility, poisonEffect, now); + } + combat = useCombatStore.getState(); + } } else if (effect.kind === "heal") { const healingTargetIds = healingRecipientIds(effect, member.id, targetId, combat.actors, id => partyFriendlyPosition(id) ?? getMobPosition(id), friendlyTargets, combatHasLineOfSight, now); + if (depth === 0 && healingTargetIds.length > 0 && !romPriestHolyCandleChargedForCast + && (channelPulse || ability.castMode !== "channel") + && useCombatStore.getState().triggerRomPriestHolyCandle(member.id, ability.id, now) > 0) { + romPriestHolyCandleChargedForCast = true; + if (channelPulse && runtimeMember.activeCast) { + runtimeMember = { + ...runtimeMember, + activeCast: { ...runtimeMember.activeCast, romPriestHolyCandleCharged: true }, + }; + } + } for (const [targetIndex, friendlyTargetId] of healingTargetIds.entries()) { const actor = useCombatStore.getState().actors[friendlyTargetId]; if (!actor?.alive) continue; @@ -2216,7 +3909,7 @@ function executePartyAbility( : swiftmendHotAbility?.name === "Regrowth" ? 6 : 0; const swiftmendAmount = swiftmendHot && swiftmendHotAbility && swiftmendHotEffect?.kind === "hot" - ? (swiftmendHot.fixedAmount ?? partyAbilityAmount(runtimeMember, swiftmendHotAbility, swiftmendHotEffect)) + ? (swiftmendHot.fixedAmount ?? partyAbilityAmountWithHolyBlessing(runtimeMember, swiftmendHotAbility, swiftmendHotEffect, 0, now)) * swiftmendTickCount : null; if (riptideHot) { @@ -2229,7 +3922,7 @@ function executePartyAbility( const healingSchool = member.classId === "shaman" ? abilityDamageSchool("shaman", ability) : spellSchool; - const requested = Math.round(((swiftmendAmount ?? partyAbilityAmount(runtimeMember, ability, effect)) + const requested = Math.round(((swiftmendAmount ?? partyAbilityAmountWithHolyBlessing(runtimeMember, ability, effect, 0, now)) + tidalWavesBonus + Math.round(actor.maxHealth * (effect.percentMaxHealth ?? 0))) * (riptideHot ? PARTY_SHAMAN_RIPTIDE_CHAIN_HEAL_MULTIPLIER : 1)); @@ -2241,6 +3934,38 @@ function executePartyAbility( seed: `${member.id}:${ability.id}:${friendlyTargetId}:${now}:heal`, now, }); + if (member.classId === "paladin" && result.critical) { + const sourceAbility = abilityById(ability.id) ?? ability; + const spellBaseManaCost = illuminationBaseManaCostSnapshot + ?? abilityAtLevel(sourceAbility, member.level).cost.amount; + const illumination = wow335PaladinIlluminationRefundPlan( + member.talentRanks[WOW335_PALADIN_ILLUMINATION_TALENT_ID] ?? 0, + { + casterClassId: member.classId, + abilityId: ability.id, + abilityName: ability.name, + criticalHeal: true, + spellBaseManaCost, + roll: stableCombatUnit(`${member.id}:${ability.id}:${friendlyTargetId}:${now}:wow335-illumination`), + }, + ); + if (illumination) { + const currentMana = runtimeMember.resourcePools.mana + ?? (runtimeMember.resourceType === "mana" ? runtimeMember.resource : 0); + const maximumMana = companionResourceMaximum(runtimeMember, "mana"); + const restored = useCombatStore.getState().restoreActorResource( + member.id, "mana", illumination.manaRefund, false, member.id, ability.id, now, + ); + if (restored > 0) { + const mana = Math.min(maximumMana, currentMana + restored); + runtimeMember = { + ...runtimeMember, + ...(runtimeMember.resourceType === "mana" ? { resource: mana } : {}), + resourcePools: { ...runtimeMember.resourcePools, mana }, + }; + } + } + } if (swiftmendHot && !runtimeMember.glyphIds?.includes(WOW335_GLYPH_OF_SWIFTMEND_ID)) { useCombatStore.setState((state) => ({ effects: state.effects.filter((candidate) => candidate.id !== swiftmendHot.id), @@ -2263,9 +3988,37 @@ function executePartyAbility( }, now); } } + if (!romBeaconHealTriggeredForCast && ability.castMode !== "channel" + && member.classId === "rom-priest" && member.secondaryClassId === "rom-champion") { + romBeaconHealTriggeredForCast = true; + const beaconHeal = resolveRomPriestChampionBeaconFromAuras( + useCombatStore.getState().auras, member.id, now, "direct-cast", + ); + if (beaconHeal) { + const result = useCombatStore.getState().healActor(beaconHeal.targetId, beaconHeal.amount, { + sourceActorId: member.id, + abilityId: ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_ID, + school: "holy", + criticalChance: 0, + seed: `${member.id}:${ability.id}:${beaconHeal.targetId}:${now}:rom-beacon-of-regeneration`, + now, + }); + effectiveAmount += result.effectiveAmount; + directHealingRawAmount += result.rawAmount; + } + } } else if (effect.kind === "hot") { - if (!groundAreaCreated) for (const friendlyTargetId of healingRecipientIds(effect, member.id, targetId, combat.actors, - id => partyFriendlyPosition(id) ?? getMobPosition(id), friendlyTargets, combatHasLineOfSight, now)) { + const fallbackRecipients = effect.recipient === "pet" + ? partyHunterPetRecipientIds(combat.summons, member.id, now) + : friendlyTargets; + const recipients = groundAreaCreated ? [] : healingRecipientIds(effect, member.id, targetId, combat.actors, + id => partyFriendlyPosition(id) ?? getMobPosition(id), fallbackRecipients, combatHasLineOfSight, now); + if (depth === 0 && recipients.length > 0 && !channelPulse && !romPriestHolyCandleChargedForCast + && ability.castMode !== "channel" + && useCombatStore.getState().triggerRomPriestHolyCandle(member.id, ability.id, now) > 0) { + romPriestHolyCandleChargedForCast = true; + } + for (const friendlyTargetId of recipients) { useCombatStore.getState().applyTimedActorEffect(member.id, friendlyTargetId, ability, effect, now); } } else if (effect.kind === "shield") { @@ -2273,7 +4026,7 @@ function executePartyAbility( id => partyFriendlyPosition(id) ?? getMobPosition(id), friendlyTargets, combatHasLineOfSight, now)) { effectiveAmount += useCombatStore.getState().shieldActor( friendlyTargetId, - partyAbilityAmount(runtimeMember, ability, effect), + partyAbilityAmountWithHolyBlessing(runtimeMember, ability, effect, 0, now), effect.durationMs, member.id, ability, @@ -2294,7 +4047,7 @@ function executePartyAbility( if (target && !target.boss && target.health / Math.max(1, target.maxHealth) <= 0.2) { effectiveAmount += combat.damageMob( hostileTargetId, - Math.max(target.health, partyAbilityAmount(runtimeMember, ability, effect)), + Math.max(target.health, partyAbilityAmountWithHolyBlessing(runtimeMember, ability, effect, 0, now)), now, { actorId: member.id, role: member.role, abilityId: ability.id }, spellSchool, @@ -2304,7 +4057,10 @@ function executePartyAbility( } else if (effect.kind === "interrupt") { let kickInterruptedCast = false; for (const hostileTargetId of hostileTargets) { - const interrupted = combat.interruptMob(hostileTargetId, ability.id, effect.lockoutMs, now); + const vowSilenceLockoutMs = ability.dbcSpellId === 490275 + ? romPriestVowOfSilenceDurationMs(Boolean(combat.mobs[hostileTargetId]?.characterDefender)) + : effect.lockoutMs; + const interrupted = combat.interruptMob(hostileTargetId, ability.id, vowSilenceLockoutMs, now); if (interrupted && member.classId === "mage") { const silenceDurationMs = wow335MageImprovedCounterspellSilenceDurationMs( member.talentRanks[WOW335_MAGE_IMPROVED_COUNTERSPELL_TALENT_ID] ?? 0, @@ -2322,6 +4078,20 @@ function executePartyAbility( ); } } + const kickSilenceDurationMs = partyRogueImprovedKickSilenceDurationMs( + member, ability, hostileTargetId, now, + ); + if (kickSilenceDurationMs > 0) { + useCombatStore.getState().controlMob( + hostileTargetId, + ability.id, + "silence", + kickSilenceDurationMs, + now, + false, + member.id, + ); + } kickInterruptedCast ||= interrupted && ability.name === "Kick" && member.classId === "rogue"; } if (kickInterruptedCast) runtimeMember = grantPartyImprovedKickCapstone(runtimeMember, ability, now); @@ -2337,6 +4107,20 @@ function executePartyAbility( for (const hostileTargetId of hostileTargets.slice(0, effect.maxTargets)) { if (effect.status === "interrupt") { const interrupted = useCombatStore.getState().interruptMob(hostileTargetId, ability.id, effect.durationMs, now); + const kickSilenceDurationMs = partyRogueImprovedKickSilenceDurationMs( + member, ability, hostileTargetId, now, + ); + if (kickSilenceDurationMs > 0) { + useCombatStore.getState().controlMob( + hostileTargetId, + ability.id, + "silence", + kickSilenceDurationMs, + now, + false, + member.id, + ); + } kickInterruptedCast ||= interrupted && ability.name === "Kick" && member.classId === "rogue"; } else { combat.controlMob(hostileTargetId, ability.id, effect.status, effect.durationMs, now, @@ -2353,9 +4137,34 @@ function executePartyAbility( ] : effect.recipient === "caster" ? [member.id] + : effect.recipient === "pet" + ? partyHunterPetRecipientIds(combat.summons, member.id, now) : combat.mobs[targetId] ? hostileTargets : friendlyTargets; - for (const recipientId of recipients.filter((id) => !effect.excludeCaster || id !== member.id)) { - const appliedEffect = ability.name === "Rupture" + const inRangeRecipients = effect.scope === "party" && effect.radius !== undefined + ? recipients.filter((id) => { + const recipientPosition = id === PLAYER_AGGRO_ID + ? combat.playerPosition + : partyFriendlyPosition(id); + return Boolean(recipientPosition + && distanceSquared(origin, recipientPosition) <= effect.radius! ** 2 + && combatHasLineOfSight(origin, recipientPosition)); + }) + : recipients; + const hitFilteredRecipients = effect.requiresLandedHit && effect.scope !== "party" + && effect.recipient !== "caster" && effect.recipient !== "pet" + ? inRangeRecipients.filter((id) => landedDirectHitTargetIdsForCast.has(id)) + : inRangeRecipients; + for (const recipientId of hitFilteredRecipients.filter((id) => !effect.excludeCaster || id !== member.id)) { + const frostWardingEffect = member.classId === "mage" + ? wow335MageFrostWardingArmorAuraEffect( + ability, + member.talentRanks[WOW335_MAGE_FROST_WARDING_TALENT_ID] ?? 0, + effect, + ) + : effect; + const appliedEffect = ability.dbcSpellId === 490275 && combat.mobs[recipientId]?.characterDefender + ? { ...effect, aura: { ...effect.aura, durationMs: romPriestVowOfSilenceDurationMs(true) } } + : ability.name === "Rupture" ? { ...effect, aura: { ...effect.aura, durationMs: Math.max(4, Math.min(8, 3 + runtimeMember.comboPoints)) * 2_000 } } : ability.name === "Envenom" && effect.aura.utilityTags?.includes(ROGUE_ENVENOM_BUFF_TAG) @@ -2363,13 +4172,15 @@ function executePartyAbility( ...effect, aura: { ...effect.aura, durationMs: (runtimeMember.comboPoints + 1) * 1_000 }, } - : effect; + : effect.aura.id === "rom-knight-deadly-wound" && combat.mobs[recipientId]?.characterDefender + ? { ...effect, aura: { ...effect.aura, durationMs: 5_000 } } + : frostWardingEffect; useCombatStore.getState().applyActorAura(member.id, recipientId, ability, appliedEffect, now); if (ability.name === "Presence of Mind" && recipientId === member.id) { applyPartyMageArcanePotency(member, ability, "presence-of-mind", now); } if (effect.control && useCombatStore.getState().mobs[recipientId]) { - useCombatStore.getState().controlMob(recipientId, ability.id, effect.control.kind, effect.aura.durationMs ?? 1_000, now); + useCombatStore.getState().controlMob(recipientId, ability.id, effect.control.kind, appliedEffect.aura.durationMs ?? 1_000, now); } } } else if (effect.kind === "dispel") { @@ -2380,8 +4191,13 @@ function executePartyAbility( effectiveAmount += useCombatStore.getState().dispelActor(recipientId, effect.categories, effect.maxCount); } } else if (effect.kind === "resource") { - for (const friendlyTargetId of friendlyTargets.length ? friendlyTargets : [member.id]) { + const resourceRecipients = effect.scope === "party" + ? friendlyTargets + : friendlyTargets.length ? friendlyTargets : [member.id]; + for (const friendlyTargetId of resourceRecipients) { const resource = effect.resource ?? member.resourceType; + if (effect.scope === "party" + && !useCombatStore.getState().actors[friendlyTargetId]?.resources[resource]) continue; effectiveAmount += useCombatStore.getState().restoreActorResource( friendlyTargetId, resource, @@ -2395,26 +4211,33 @@ function executePartyAbility( // Mirror only its resource fields: the actor has not received this // action's cooldown/GCD yet, so a full actor-to-member copy would erase // the committed action state and let generators such as Bloodrage spam. - if (friendlyTargetId === member.id) { + const mutableMembers = members as PartyMember[]; + const targetMemberIndex = mutableMembers.findIndex((candidate) => candidate.id === friendlyTargetId); + if (targetMemberIndex >= 0) { + const currentMember = friendlyTargetId === member.id + ? runtimeMember + : mutableMembers[targetMemberIndex]; const resourceMirror = memberFromCompanionActor( - runtimeMember, - useCombatStore.getState().actors[member.id], + currentMember, + useCombatStore.getState().actors[friendlyTargetId], ); const restoredPool = resourceMirror.resourcePools[resource]; if (restoredPool === undefined) continue; - runtimeMember = { - ...runtimeMember, - ...(resource === runtimeMember.resourceType + const updatedMember = { + ...currentMember, + ...(resource === currentMember.resourceType ? { resource: restoredPool, maxResource: resourceMirror.maxResource } : {}), - resourcePools: { ...runtimeMember.resourcePools, [resource]: restoredPool }, + resourcePools: { ...currentMember.resourcePools, [resource]: restoredPool }, ...(resourceMirror.lastResourceSpentAt[resource] === undefined ? {} : { lastResourceSpentAt: { - ...runtimeMember.lastResourceSpentAt, + ...currentMember.lastResourceSpentAt, [resource]: resourceMirror.lastResourceSpentAt[resource], } }), }; + if (friendlyTargetId === member.id) runtimeMember = updatedMember; + mutableMembers[targetMemberIndex] = updatedMember; } } } else if (effect.kind === "combo") { @@ -2433,12 +4256,26 @@ function executePartyAbility( comboTargetId: comboPoints > 0 ? targetId : null, }; } else if (effect.kind === "summon") { - const summonTargetId = combat.mobs[targetId] && !combat.mobs[targetId].dead - ? targetId - : combat.selectedTargetId && combat.mobs[combat.selectedTargetId] && !combat.mobs[combat.selectedTargetId].dead - ? combat.selectedTargetId - : Object.values(combat.mobs).find((mob) => mob.engaged && !mob.dead)?.id ?? null; - useCombatStore.getState().summonActor(member.id, ability, effect, origin, summonTargetId, now); + if (member.classId === "death-knight" + && ability.id === WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID) { + useCombatStore.setState((state) => ({ + auras: [...applyCombatAura(state.auras, { + definition: WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA, + sourceId: member.id, + targetId: member.id, + now, + }).auras], + })); + combat = useCombatStore.getState(); + } else { + const summonTargetId = combat.mobs[targetId] && !combat.mobs[targetId].dead + ? targetId + : combat.selectedTargetId && combat.mobs[combat.selectedTargetId] && !combat.mobs[combat.selectedTargetId].dead + ? combat.selectedTargetId + : Object.values(combat.mobs).find((mob) => mob.engaged && !mob.dead)?.id ?? null; + useCombatStore.getState().summonActor(member.id, ability, effect, origin, summonTargetId, now); + combat = useCombatStore.getState(); + } } else if (effect.kind === "pet" && ["summon", "call", "resurrect", "tame"].includes(effect.action)) { const summonEffect: Extract = { kind: "summon", @@ -2524,15 +4361,19 @@ function executePartyAbility( cooldowns[id] = Math.max(now, readyAt - reduction); } runtimeMember = { ...runtimeMember, cooldowns }; - } else if (effect.kind === "resource-drain" && !combat.mobs[targetId]) { + } else if (effect.kind === "resource-drain" && (!combat.mobs[targetId] || effect.recipient === "caster")) { const resource = effect.resource ?? runtimeMember.resourceType; const maximum = resource === runtimeMember.resourceType ? runtimeMember.maxResource : 100; const drained = effect.percentage ? maximum * effect.amount / 100 : effect.amount; const current = runtimeMember.resourcePools[resource] ?? 0; + const actualDrain = Math.min(Math.max(0, current), Math.max(0, drained)); const resourcePools: Partial> = { ...runtimeMember.resourcePools, [resource]: Math.max(0, current - drained), }; + if (resource === "nature-power" && effect.recipient === "caster") { + applyPartyDruidMageInspirationSpend(runtimeMember, actualDrain, now); + } runtimeMember = { ...runtimeMember, resourcePools, @@ -2548,49 +4389,6 @@ function executePartyAbility( } } } - if (!channelPulse && depth === 0 - && member.classId === "rom-priest" - && member.secondaryClassId === "rom-mage" - && ability.source === "runewaker" - && ability.dbcSpellId === ROM_PRIEST_MAGE_ENLIGHTENMENT.triggerSpellId) { - const passiveSource = abilitiesForCharacter(member.classId, member.secondaryClassId).find((candidate) => ( - candidate.source === "runewaker" - && candidate.classId === "rom-priest" - && candidate.secondaryClassId === "rom-mage" - && candidate.passive - && candidate.dbcSpellId === ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId - )); - const passive = passiveSource - ? learnedAbilityForBuild(passiveSource, member.level, member.talentRanks) - : null; - if (passive) { - const readyAt = romPriestMageEnlightenmentReadyAt( - useCombatStore.getState().auras, - member.id, - now, - ); - const proc = romPriestMageEnlightenmentProc( - member.classId, - member.secondaryClassId, - ability, - [ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId], - true, - readyAt, - now, - ); - if (proc.effect?.kind === "apply-aura") { - useCombatStore.getState().applyActorAura(member.id, member.id, ability, proc.effect, now); - useCombatStore.getState().applyActorAura( - member.id, - member.id, - ability, - ROM_PRIEST_MAGE_ENLIGHTENMENT_COOLDOWN_EFFECT, - now, - ); - combat = useCombatStore.getState(); - } - } - } if (!channelPulse && depth === 0) { maybeProcPartyShamanTidalWaves(member, ability, directHealingRawAmount, now); } @@ -2824,6 +4622,8 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { if (!targetId && party.command !== "stop") targetId = activeRaceOrbId(); members = members.map((member) => { const profile = resourceProfileForClass(member.classId); + const memberAuras = combat.auras.filter((aura) => aura.targetId === member.id + && (aura.expiresAt === null || aura.expiresAt > now)); const passiveRates: Partial> = { mana: 4, rage: 0, @@ -2834,9 +4634,10 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { const resourcePools: Partial> = { ...member.resourcePools }; for (const type of Object.keys(resourcePools) as ResourceType[]) { const manaRegeneration = member.gearStats.mp5 / 5 + member.gearStats.spirit * 0.02; - const regeneration = type === member.resourceType + const baseRegeneration = type === member.resourceType ? (profile.type === "rage" || profile.type === "runic-power" ? 0 : profile.regenerationPerSecond + manaRegeneration) : (passiveRates[type] ?? 0) + (type === "mana" ? manaRegeneration : 0); + const regeneration = resolveAuraResourceValue(baseRegeneration, memberAuras, type, "regeneration"); resourcePools[type] = advanceCombatResourcePool(normalizeActorResourcePool( type, resourcePools[type] ?? 0, @@ -2918,7 +4719,10 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { continue; } if (partyRuntimeIsRejoining(member.id)) { - nextMembers[index] = { ...member, status: "advancing", activeCast: null, activeCastTargetId: null }; + const canceled = member.activeCast + ? awardPartyPriestChampionRageControl(member, member.activeCast, now) + : member; + nextMembers[index] = { ...canceled, status: "advancing", activeCast: null, activeCastTargetId: null }; continue; } if ( @@ -2947,7 +4751,8 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { : null; const castTargetId = member.activeCastTargetId; if (!castingAbility || !castTargetId) { - nextMembers[index] = { ...member, activeCast: null, activeCastTargetId: null }; + const canceled = awardPartyPriestChampionRageControl(member, activeCast, now); + nextMembers[index] = { ...canceled, activeCast: null, activeCastTargetId: null }; continue; } const hostileCast = Boolean(currentCombat.mobs[castTargetId]); @@ -2960,7 +4765,8 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { ))) { emitPartyAbility(member, castingAbility, castTargetId, "cast-cancel", now); memberTargetIds[member.id] = castTargetId; - nextMembers[index] = { ...member, activeCast: null, activeCastTargetId: null, + const canceled = awardPartyPriestChampionRageControl(member, activeCast, now); + nextMembers[index] = { ...canceled, activeCast: null, activeCastTargetId: null, status: "advancing", nextActionAt: now + 250 }; continue; } @@ -2970,7 +4776,8 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { member, castingAbility, castTargetId, cast.origin, now, cast.canCastWhileMoving, )) { emitPartyAbility(member, castingAbility, castTargetId, "cast-cancel", now); - nextMembers[index] = { ...member, activeCast: null, activeCastTargetId: null, status: "advancing", nextActionAt: now + 250 }; + const canceled = awardPartyPriestChampionRageControl(member, cast, now); + nextMembers[index] = { ...canceled, activeCast: null, activeCastTargetId: null, status: "advancing", nextActionAt: now + 250 }; continue; } const totalTicks = channelPulseCount(castingAbility); @@ -2979,7 +4786,7 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { const pulseAt = channelPulseAt(castingAbility, cast.startedAt, cast.originalDurationMs, completed); if (pulseAt > now || pulseAt > cast.completesAt) break; const effects: AbilityEffect[] = channelAmountEffects(castingAbility, totalTicks).map(({ effect, multiplier }) => { - const amount = Math.round(partyAbilityAmount(member, castingAbility, effect) * multiplier); + const amount = Math.round(partyAbilityAmountWithHolyBlessing(member, castingAbility, effect, 0, pulseAt) * multiplier); if (effect.kind === "heal" || effect.kind === "hot") return { kind: "heal", coefficient: 0, basePoints: amount, sourceLevel: member.level, ...("scope" in effect ? { @@ -2995,11 +4802,13 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { pulseAt, nextMembers, 0, true, true, cast.tidalWavesChargesConsumed ?? 0, cast.arcanePotencyCriticalChanceBonusPercent ?? 0, - cast.manaSpent ?? 0); + cast.manaSpent ?? 0, + cast.maelstromWeaponRank ?? 0, + cast.maelstromWeaponStacksConsumed ?? 0); member = execution.member; completed += 1; } - member = { ...member, activeCast: { ...cast, channelTicksCompleted: completed } }; + member = { ...member, activeCast: { ...(member.activeCast ?? cast), channelTicksCompleted: completed } }; } if (now < activeCast.completesAt) { nextMembers[index] = member.status === desiredStatus ? member : { ...member, status: desiredStatus }; @@ -3030,9 +4839,16 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { activeCast.tidalWavesChargesConsumed ?? 0, activeCast.arcanePotencyCriticalChanceBonusPercent ?? 0, activeCast.manaSpent ?? 0, + activeCast.maelstromWeaponRank ?? 0, + activeCast.maelstromWeaponStacksConsumed ?? 0, + undefined, + activeCast.illuminationBaseManaCost, ); + const awardedMember = activeCast.mode === "channel" + ? awardPartyPriestChampionRageControl(execution.member, activeCast, now) + : execution.member; nextMembers[index] = { - ...execution.member, + ...awardedMember, status: desiredStatus, nextActionAt: activeCast.mode === "channel" ? Math.max(now + 250, execution.member.globalCooldownEndsAt) @@ -3040,15 +4856,17 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { ?? Math.round(castingAbility.gcdMs / raceAffixHasteMultiplier(now))), }; } else { + const interruptedMember = awardPartyPriestChampionRageControl(completedMember, activeCast, now); nextMembers[index] = { - ...completedMember, + ...interruptedMember, status: hostileCast ? "advancing" : "ready", nextActionAt: now + 250, }; } continue; } - const supportIntent = choosePartySupportIntent(member, nextMembers, now); + const supportIntent = choosePartySupportIntent(member, nextMembers, now) + ?? partyGreenGuardianIntent(member, now, Boolean(targetId)); if (supportIntent) { delete memberTargetIds[member.id]; if (now < member.nextActionAt) { @@ -3062,9 +4880,12 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { const backdraftCast = partyWarlockBackdraftCast(member, supportIntent.ability, now); const tidalWavesCast = partyShamanTidalWavesCast(member, supportIntent.ability, now); const selectedCastAbility = backdraftCast?.ability ?? tidalWavesCast?.ability ?? supportIntent.ability; + const elementalFocusAura = partyShamanElementalFocusAuraForCast(member, selectedCastAbility, now); + const maelstromCast = partyShamanMaelstromCast(member, selectedCastAbility, now); const consumesHunterLockAndLoad = partyHunterLockAndLoadReady(member, selectedCastAbility, now); - const castAbility = partyAbilityWithHunterLockAndLoad(member, selectedCastAbility, now); - const committed = commitPartyAbilityUse(member, castAbility, now, { + const castAbility = partyAbilityWithHunterLockAndLoad(member, maelstromCast?.ability ?? selectedCastAbility, now); + const castingHastePercent = partyCastingHastePercent(member, now); + let committed = commitPartyAbilityUseWithRogueCooldown(member, castAbility, now, { ignoreResourceCosts: pendingInnerFocus.has(member.id) && abilityHasDirectHealing(castAbility), }); @@ -3072,6 +4893,16 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { nextMembers[index] = { ...member, status: "ready", nextActionAt: now + 250 }; continue; } + if (castAbility.gcdMs > 0 && castingHastePercent > 0) { + committed = { + ...committed, + globalCooldownEndsAt: now + Math.max(1_000, Math.round( + castAbility.gcdMs / (1 + castingHastePercent / 100), + )), + }; + } + applyPartyDeathKnightBladeBarrier(member, committed, castAbility, now); + if (maelstromCast) consumePartyShamanMaelstromWeapon(member.id, maelstromCast.auraInstanceId); const committedAfterHunterLockAndLoad = consumesHunterLockAndLoad ? { ...committed, cooldowns: { ...committed.cooldowns, [castAbility.id]: 0 } } : committed; @@ -3085,6 +4916,7 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { const manaSpent = partyAbilityCosts(member, castAbility, now) .filter((cost) => cost.resource === "mana") .reduce((total, cost) => total + cost.amount, 0); + if (elementalFocusAura) consumePartyShamanElementalFocus(member.id, elementalFocusAura.instanceId); consumePartyMageCastAuras(member, castAbility); if (backdraftCast) consumePartyWarlockBackdraftCharge(member.id, backdraftCast.auraInstanceId); if (tidalWavesCast) consumePartyShamanTidalWaves( @@ -3093,8 +4925,9 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { const instantOutOfCombatResurrection = !targetId && castAbility.effects.some((effect) => effect.kind === "resurrection"); if (castAbility.castTimeMs > 0 && !instantOutOfCombatResurrection) { - const castTimeMs = backdraftCast?.castTimeMs - ?? Math.round(castAbility.castTimeMs / raceAffixHasteMultiplier(now)); + const castTimeMs = backdraftCast + ? partyDurationMsWithHaste(backdraftCast.castTimeMs, now, castingHastePercent) + : partyCastTimeMsWithHaste(castAbility, now, castingHastePercent); const castOrigin = getPartyRuntimePosition(member.id) ?? currentCombat.playerPosition; nextMembers[index] = { ...committedAfterHunterLockAndLoad, @@ -3112,14 +4945,23 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { targetId: supportIntent.targetId, ...(backdraftCast ? { backdraftGcdMs: backdraftCast.gcdMs } : {}), ...(tidalWavesCast ? { tidalWavesChargesConsumed: tidalWavesCast.chargesConsumed } : {}), + ...(maelstromCast ? { + maelstromWeaponRank: maelstromCast.rank, + maelstromWeaponStacksConsumed: maelstromCast.stacksConsumed, + } : {}), ...(arcanePotencyBonus > 0 ? { arcanePotencyCriticalChanceBonusPercent: arcanePotencyBonus } : {}), ...(member.classId === "mage" ? { manaSpent } : {}), + ...(member.classId === "paladin" + ? { illuminationBaseManaCost: abilityAtLevel(abilityById(castAbility.id) ?? castAbility, member.level).cost.amount } + : {}), }, activeCastTargetId: supportIntent.targetId, nextActionAt: now + castTimeMs, }; + applyPartyMageNetherwindPresenceCast(member, castAbility, now); emitPartyAbility(member, castAbility, supportIntent.targetId, "cast-start", now); } else { + applyPartyMageNetherwindPresenceCast(member, castAbility, now); const execution = executePartyAbility( committedAfterHunterLockAndLoad, castAbility, @@ -3132,6 +4974,12 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { tidalWavesCast?.chargesConsumed ?? 0, arcanePotencyBonus, manaSpent, + maelstromCast?.rank ?? 0, + maelstromCast?.stacksConsumed ?? 0, + { + runesBefore: member.runes, + spentRuneSlots: wow335DeathKnightSpentRuneSlots(member.runes, committed.runes, now), + }, ); nextMembers[index] = { ...execution.member, @@ -3200,6 +5048,18 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { && targetMob.attacks.some((attack) => attack.id === targetMob.activeCast?.attackId && (attack.delivery === "melee" || attack.range <= 5) && attack.damageMultiplier >= 1.25)); + const availableConditionalAbilityNames = new Set(); + if (currentCombat.combatEvents.some((event) => ( + event.targetActorId === member.id + && event.occurredAt > now - 5_000 + && ["dodge", "parry", "block"].includes(event.outcome ?? "") + ))) availableConditionalAbilityNames.add("Revenge"); + if (member.classId === "warrior" && currentCombat.auras.some((aura) => ( + aura.targetId === member.id + && (aura.expiresAt === null || aura.expiresAt > now) + && (aura.definition.utilityTags?.includes(WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG) + || aura.definition.utilityTags?.includes(WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG)) + ))) availableConditionalAbilityNames.add("Victory Rush"); const selectedDecision = choosePartyRotationDecision(runtimeMember, { now, target: targetMob ?? null, @@ -3212,11 +5072,9 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { || incomingMeleeDanger, moving: runtimeMember.status === "advancing", incomingDefensiveMechanic: imminentCooldownMechanic(targetMob ?? null, member.role, now), - availableConditionalAbilityNames: currentCombat.combatEvents.some((event) => ( - event.targetActorId === member.id - && event.occurredAt > now - 5_000 - && ["dodge", "parry", "block"].includes(event.outcome ?? "") - )) ? new Set(["Revenge"]) : undefined, + availableConditionalAbilityNames: availableConditionalAbilityNames.size > 0 + ? availableConditionalAbilityNames + : undefined, hostileCount: Object.values(currentCombat.mobs).filter((mob) => mob.engaged && !mob.dead).length, friendlyTargets: nextMembers.filter((candidate) => candidate.health > 0).map((candidate) => ({ id: candidate.id, @@ -3224,6 +5082,10 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { maxHealth: candidate.maxHealth, role: candidate.role, })), + partyResourceDeficit: (ability) => partyAbilityHasDepletedPartyResource( + ability, + partyResourcePoolSnapshotsInRange(ability, runtimeMember, nextMembers), + ), maintainedAbilityIds: new Set([ ...currentCombat.effects.filter((effect) => effect.sourceActorId === member.id && effect.remainingTicks > 0) .map((effect) => effect.sourceAbilityId), @@ -3240,10 +5102,10 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { .filter((aura) => aura.sourceId === member.id && (aura.expiresAt === null || aura.expiresAt > now)) .flatMap((aura) => aura.definition.exclusiveGroup ? [aura.definition.exclusiveGroup] : [])), activeSummonAbilityIds: new Set(currentCombat.summons - .filter((summon) => summon.ownerActorId === member.id && summon.expiresAt > now) + .filter((summon) => summon.ownerActorId === member.id && summon.health > 0 && summon.expiresAt > now) .map((summon) => summon.sourceAbilityId)), hasActivePet: currentCombat.summons.some((summon) => { - if (summon.ownerActorId !== member.id || summon.expiresAt <= now) return false; + if (summon.ownerActorId !== member.id || summon.health <= 0 || summon.expiresAt <= now) return false; const source = abilityById(summon.sourceAbilityId); return source?.effects.some((effect) => effect.kind === "pet" && ["summon", "call", "resurrect", "tame"].includes(effect.action)) ?? false; @@ -3308,16 +5170,30 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { : { ...runtimeMember, status: "advancing" }; continue; } - const backdraftCast = partyWarlockBackdraftCast(runtimeMember, selectedAbility, now); + const sniperAdjustedAbility = partyScoutPriestSniperAbility(runtimeMember, selectedAbility); + const backdraftCast = partyWarlockBackdraftCast(runtimeMember, sniperAdjustedAbility, now); const tidalWavesCast = partyShamanTidalWavesCast(runtimeMember, selectedAbility, now); - const selectedCastAbility = backdraftCast?.ability ?? tidalWavesCast?.ability ?? selectedAbility; + const selectedCastAbility = backdraftCast?.ability ?? tidalWavesCast?.ability ?? sniperAdjustedAbility; + const elementalFocusAura = partyShamanElementalFocusAuraForCast(runtimeMember, selectedCastAbility, now); + const maelstromCast = partyShamanMaelstromCast(runtimeMember, selectedCastAbility, now); const consumesHunterLockAndLoad = partyHunterLockAndLoadReady(runtimeMember, selectedCastAbility, now); - const castAbility = partyAbilityWithHunterLockAndLoad(runtimeMember, selectedCastAbility, now); - const committed = commitPartyAbilityUse(runtimeMember, castAbility, now); + const castAbility = partyAbilityWithHunterLockAndLoad(runtimeMember, maelstromCast?.ability ?? selectedCastAbility, now); + const castingHastePercent = partyCastingHastePercent(runtimeMember, now); + let committed = commitPartyAbilityUseWithRogueCooldown(runtimeMember, castAbility, now); if (!committed) { nextMembers[index] = { ...runtimeMember, status: desiredStatus, nextActionAt: now + 250 }; continue; } + if (castAbility.gcdMs > 0 && castingHastePercent > 0) { + committed = { + ...committed, + globalCooldownEndsAt: now + Math.max(1_000, Math.round( + castAbility.gcdMs / (1 + castingHastePercent / 100), + )), + }; + } + applyPartyDeathKnightBladeBarrier(runtimeMember, committed, castAbility, now); + if (maelstromCast) consumePartyShamanMaelstromWeapon(runtimeMember.id, maelstromCast.auraInstanceId); const committedAfterHunterLockAndLoad = consumesHunterLockAndLoad ? { ...committed, cooldowns: { ...committed.cooldowns, [castAbility.id]: 0 } } : committed; @@ -3331,6 +5207,7 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { const manaSpent = partyAbilityCosts(runtimeMember, castAbility, now) .filter((cost) => cost.resource === "mana") .reduce((total, cost) => total + cost.amount, 0); + if (elementalFocusAura) consumePartyShamanElementalFocus(runtimeMember.id, elementalFocusAura.instanceId); consumePartyMageCastAuras(runtimeMember, castAbility); if (backdraftCast) consumePartyWarlockBackdraftCharge(runtimeMember.id, backdraftCast.auraInstanceId); if (tidalWavesCast) consumePartyShamanTidalWaves( @@ -3348,8 +5225,9 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { }); } if (castAbility.castTimeMs > 0) { - const castTimeMs = backdraftCast?.castTimeMs - ?? Math.round(castAbility.castTimeMs / raceAffixHasteMultiplier(now)); + const castTimeMs = backdraftCast + ? partyDurationMsWithHaste(backdraftCast.castTimeMs, now, castingHastePercent) + : partyCastTimeMsWithHaste(castAbility, now, castingHastePercent); nextMembers[index] = { ...committedAfterHunterLockAndLoad, status: desiredStatus, @@ -3366,25 +5244,42 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { targetId: abilityTargetId, ...(backdraftCast ? { backdraftGcdMs: backdraftCast.gcdMs } : {}), ...(tidalWavesCast ? { tidalWavesChargesConsumed: tidalWavesCast.chargesConsumed } : {}), + ...(maelstromCast ? { + maelstromWeaponRank: maelstromCast.rank, + maelstromWeaponStacksConsumed: maelstromCast.stacksConsumed, + } : {}), ...(arcanePotencyBonus > 0 ? { arcanePotencyCriticalChanceBonusPercent: arcanePotencyBonus } : {}), ...(runtimeMember.classId === "mage" ? { manaSpent } : {}), + ...(runtimeMember.classId === "paladin" + ? { illuminationBaseManaCost: abilityAtLevel(abilityById(castAbility.id) ?? castAbility, runtimeMember.level).cost.amount } + : {}), }, activeCastTargetId: abilityTargetId, nextActionAt: now + castTimeMs, }; + applyPartyMageNetherwindPresenceCast(runtimeMember, castAbility, now); emitPartyAbility(member, castAbility, abilityTargetId, "cast-start", now); } else { + applyPartyMageNetherwindPresenceCast(runtimeMember, castAbility, now); const execution = executePartyAbility( committedAfterHunterLockAndLoad, castAbility, abilityTargetId, now, nextMembers, 0, false, false, tidalWavesCast?.chargesConsumed ?? 0, arcanePotencyBonus, manaSpent, + maelstromCast?.rank ?? 0, + maelstromCast?.stacksConsumed ?? 0, + { + runesBefore: runtimeMember.runes, + spentRuneSlots: wow335DeathKnightSpentRuneSlots(runtimeMember.runes, committed.runes, now), + }, ); nextMembers[index] = { ...execution.member, status: desiredStatus, - nextActionAt: now + Math.max(250, backdraftCast?.gcdMs - ?? Math.round(castAbility.gcdMs / raceAffixHasteMultiplier(now))), + nextActionAt: now + Math.max(250, backdraftCast + ? backdraftCast.gcdMs + : Math.round(castAbility.gcdMs + / (raceAffixHasteMultiplier(now) * (1 + castingHastePercent / 100)))), }; } } diff --git a/src/game/partyStore.ts b/src/game/partyStore.ts index 0a7728ee..938e6b5c 100644 --- a/src/game/partyStore.ts +++ b/src/game/partyStore.ts @@ -69,10 +69,17 @@ type PartyActiveCast = CombatActorCastState & { readonly backdraftGcdMs?: number; /** Tidal Waves charges spent at cast start, retained for Lesser Healing Wave's crit roll. */ readonly tidalWavesChargesConsumed?: number; + /** Maelstrom Weapon rank and stacks spent at cast start, retained for its PvP damage rider. */ + readonly maelstromWeaponRank?: number; + readonly maelstromWeaponStacksConsumed?: number; /** Arcane Potency's next-spell critical chance, snapshotted when a Mage cast starts. */ readonly arcanePotencyCriticalChanceBonusPercent?: number; /** Mana committed for this cast, used by Master of Elements critical refunds. */ readonly manaSpent?: number; + /** DBC-derived pre-discount base Mana cost retained for Paladin Illumination. */ + readonly illuminationBaseManaCost?: number; + /** Prevents later pulses of a channel cast from repeating Holy Candle's cast trigger. */ + readonly romPriestHolyCandleCharged?: boolean; }; export interface PartyMember { diff --git a/src/game/romAbilityCatalog.ts b/src/game/romAbilityCatalog.ts index 932a2da5..f924e06d 100644 --- a/src/game/romAbilityCatalog.ts +++ b/src/game/romAbilityCatalog.ts @@ -22,11 +22,63 @@ import { overrideRomMageWarlockEffects } from "./romMageWarlockOverrides"; import { overrideRomMageEffects } from "./romMageOverrides"; import { overrideRomWarlockEffects } from "./romWarlockOverrides"; import { overrideRomDruidEffects } from "./romDruidOverrides"; -import { romPriestDescription } from "./romPriestTooltips"; +import { romPriestDescription, romPriestName } from "./romPriestTooltips"; import { overrideRomPriestMageEffects } from "./romPriestMageRuntime"; +import { romPriestHolyBlessingEffects } from "./romPriestHolyBlessingRuntime"; +import { + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_AURA, +} from "./romPriestChampionBeaconRuntime"; import { overrideRomPriestWarlockEffects } from "./romPriestWarlockOverrides"; import { overrideRomChampionEffects } from "./romChampionOverrides"; import { ROM_WARDEN_BRIAR_SHIELD_TAG } from "./romWardenOverrides"; +import { romWarriorCoaAdditionalAbilities } from "./romWarriorCoaCatalog"; +import { romWarriorDruidRageOfCalmnessCatalogOverride } from "./romWarriorDruidRageOfCalmness"; +import { romScoutPriestScreenAttackCatalogOverride } from "./romScoutPriestScreenAttack"; +import { romScoutPriestDrumsOfWarCatalogOverride } from "./romScoutPriestOverrides"; +import { romPriestScoutCuringShotCatalogOverride } from "./romPriestScoutCuringShot"; +import { romWarlockWarriorEnragedCoaAdditionalAbilities } from "./romWarlockWarriorEnragedCoaMechanics"; +import { + ROM_WARLOCK_MAGE_SOUL_BRAND_STING_COST, + ROM_WARLOCK_MAGE_SOUL_BRAND_STING_DESCRIPTION, +} from "./romWarlockMageSoulBrandSting"; +import { + ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_COST, + ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_DESCRIPTION, + ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_RADIUS, + isRomWarlockPriestSoulEnlightenment, +} from "./romWarlockPriestSoulEnlightenment"; +import { + ROM_DRUID_ROGUE_CORROSIVE_POISON_DESCRIPTION, + ROM_DRUID_ROGUE_NECROTIC_WOUND_DESCRIPTION, + ROM_DRUID_ROGUE_SINISTER_REQUEST_DESCRIPTION, + romDruidRogueSinisterRequestEffects, + isRomDruidRoguePair, +} from "./romDruidRogueCurrentCoa"; +import { + isRomDruidMagePair, + ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION, +} from "./romDruidMageInspirationRuntime"; +import { + isRomMageDruidPair, + ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION, + ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, +} from "./romMageDruidGreenGuardianRuntime"; +import { + ROM_ROGUE_ENERGIZED_HANDS_DESCRIPTION, + ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID, + ROM_ROGUE_POISONOUS_HANDS_DESCRIPTION, + ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP, + romRogueEnergizedHandsApplyEffect, +} from "./romRogueEnergizedHandsRuntime"; +import { + ROM_ROGUE_MAGE_CHAOS_DAGGER_DESCRIPTION, + ROM_ROGUE_MAGE_CHAOS_DAGGER_SPELL_ID, +} from "./romRogueChaosDagger"; +import { + ROM_PRIEST_HOLY_CANDLE_COST, + ROM_PRIEST_HOLY_CANDLE_DESCRIPTION, + romPriestHolyCandleEffects, +} from "./romPriestHolyCandleRuntime"; export type RomSkillGroup = "primary" | "general" | "elite" | "passive"; @@ -99,6 +151,13 @@ function costs(rows: readonly GeneratedCost[]): readonly AbilityCost[] { } function costsFor(row: Pick): readonly AbilityCost[] { + if (row.sourceSkillId === 490274) return []; + if (row.sourceSkillId === 490275) return [{ resource: "mana", amount: 120 }]; + if (row.sourceSkillId === 490276) return [{ + resource: "mana", amount: 10, percentage: true, percentageBasis: "base-mana", + }]; + if (row.sourceSkillId === 498612) return [{ resource: "rage", amount: 15 }]; + if (row.sourceSkillId === 498642) return [{ resource: "rage", amount: 75, percentage: false }]; let resolved = costs(row.costs); if (row.sourceSkillId === 490136) { resolved = resolved.map((cost) => cost.resource === "rage" ? { ...cost, amount: 15 } : cost); @@ -108,26 +167,81 @@ function costsFor(row: Pick): number { + if (row.sourceSkillId === 490274) return 0; + if (row.sourceSkillId === 490275 || row.sourceSkillId === 490276) return 18_000; + if (row.sourceSkillId === 498612) return 12_000; + if (row.sourceSkillId === 498642) return 1_000; // The local snapshot omitted Prayer of Tribulation's timing. CoA's current // skill list identifies this same Priest/Warlock spell (498770) as a 1.5s // channel with a 5s cooldown; its healing and buff payload still come from // the local RuneWaker tooltip/components below. if (row.sourceSkillId === 498770) return 5_000; + // CoA's current Knight/Shaman Whirlwind Shield is 5s before Compassion. + if (row.sourceSkillId === 490175) return 5_000; return row.sourceSkillId === 490136 ? 40_000 : row.cooldownMs; } function castTimeMsFor(row: Pick): number { + if ([490274, 490275, 490276, 498612].includes(row.sourceSkillId)) return 0; if (row.sourceSkillId === 498770) return 1_500; if (row.sourceSkillId === 491164) return 4_000; return row.castTimeMs; } function castModeFor(row: Pick): AbilityDefinition["castMode"] { + if ([490274, 490275, 490276, 498612].includes(row.sourceSkillId)) return "instant"; return row.sourceSkillId === 491164 || row.sourceSkillId === 498770 ? "channel" : row.castTimeMs > 0 ? "cast" : "instant"; } +function currentWarlockCoaDescription(sourceSkillId: number, fallback: string): string { + // Current CoA Warrior/Warlock skill list: https://chroniclesofarcadia.com/en/wiki/skills/list/1-9 + // These two local passive rows describe obsolete cooldown-reset children; + // the current page instead gives Speed Slash's Rage discount and Excellent + // Combat Training's physical-damage bonus. + const descriptions: Readonly> = { + 499827: "Passive: Increases Slash damage by an unspecified amount, which is not modeled. Reduces Slash's Rage cost by 10.", + 499806: "Passive: Grants an additional 20% Physical Damage.", + 498642: "Converts 75 Rage into 6 Psi. 1-second cooldown.", + 498634: "Enraged restores additional Focus. Casting Psychic Arrows, Warp Charge, or Weakening Weave Curse can reset Enraged's cooldown. Current CoA does not publish the proc chance or Focus amount, so these riders are not modeled.", + 498633: "When Psychic Arrows hits, gain 12% healing power and 12% Wisdom for 20 seconds. Warp Charge heals a friendly target instead of dealing damage. The simulator does not model ally-target redirection to that ally's hostile target.", + 498643: "Rising Tide becomes instant with a 5-second cooldown and restores 1 Psi. A critical hit activates Healing Fortune. The simulator cannot redirect an ally-targeted cast to that ally's hostile target.", + 498648: "Urgent Heal restores 1 Psi. Defense Net's effect time is reduced by 1 second. Ring of Comfort's reset chance is not specified and is not modeled.", + 498668: "Passively increases magical damage and healing by 16%.", + 499856: "Inflicts [497959], [497960], and [497964] on the target. Increases Magical Attack Power by 18% and Magical Critical Bonus by 25% for 30 seconds, and activates Healing Fortune, increasing healing by 12% for 20 seconds. Current CoA lists a 10% MP cost plus 15 Focus and range 150; RuneWaker supplies 15 Focus and range 22.5. The simulator retains those local cost and range values because RoM Warlock has no modeled Mana pool and no verified range-unit conversion.", + 499868: "Passive: magical damage skills call an Ethereal Hammer for 187.5% main-hand weapon DPS against area targets or an Ethereal Sword for 1,050% main-hand weapon DPS against a single target. The source calls this Physical Dark damage, which the combat model cannot represent as a composite damage type, so this rider is not yet applied. The additional main-hand damage for Slash and Consistent Heart Strike is unspecified and is not modeled.", + 499870: "Increases Breathing Control's Focus recovery and grants an extra 15% HP. Current CoA does not publish the Focus amount or proc chance, so these riders are not modeled.", + }; + return descriptions[sourceSkillId] ?? fallback; +} + +const ROM_WARLOCK_ROGUE_SHADOW_SLICE_DESCRIPTION = "Reworks Shadow Step (490344): the cast deals 4,400 Dark damage, stuns for 1 second, grants 3 Psi, and increases Dark damage by 30% and movement speed by 10% for 30 seconds. This replaces Shadow Step's teleport; the simulator does not model the behind-target positioning."; +const ROM_WARLOCK_ROGUE_SHADOW_STEP_DESCRIPTION = "Instantly moves behind the target. In the Warlock/Rogue build with Shadow Slice (498678), it instead deals 4,400 Dark damage, stuns for 1 second, grants 3 Psi, and increases Dark damage by 30% and movement speed by 10% for 30 seconds. The simulator cannot model the behind-target positioning."; + +function currentPriestCoaDescription(sourceSkillId: number, fallback: string): string { + if (sourceSkillId === 490304) { + return ROM_PRIEST_HOLY_CANDLE_DESCRIPTION; + } + if (sourceSkillId === 498620) { + return "Creates a 30-second Beacon on one friendly party member. Each direct healing cast restores 770 HP to that member. CoA publishes 770 at skill level +105 (the maximum); the simulator applies this value at every unlocked rank because lower skill ranks are not modeled separately. HoT ticks and channel pulses are outside the simulator's direct-cast trigger boundary."; + } + if (sourceSkillId === 492933) { + return "Passive: Increases Wisdom by 12%."; + } + if (sourceSkillId === 498612) { + return "Inflicts 975.1% CPS Light Damage to nearby targets around you and reduces Blessing of Humility's cooldown by 15 seconds. Cost: 15 Rage. Radius: 80. Cooldown: 12 seconds."; + } + return romPriestDescription(sourceSkillId, fallback); +} + +function currentMageCoaDescription(sourceSkillId: number, fallback: string): string { + if (sourceSkillId === 490248) { + return "Increases Fire resistance by 10 points and reduces received magical damage by 11.5% within radius 100. CoA lists +230 Fire resistance at skill level 105, but the simulator retains RuneWaker's local +10 because it has no source-backed scaling curve or skill-level state. Costs 120 MP; range 150; instant. CoA omits a duration, so this catalog retains RuneWaker's 10-minute duration."; + } + return fallback; +} + type GeneratedSemanticRow = Pick & Partial>; @@ -169,6 +283,8 @@ function auraRecipient(row: GeneratedSemanticRow, semantic: Extract): GeneratedSemanticRow["target"] { + if (row.sourceSkillId === 490274 || row.sourceSkillId === 498612) return "self"; + if (row.sourceSkillId === 490275 || row.sourceSkillId === 490276) return "hostile"; if ([490290, 490491, 492636, 493531, 494021, 494027, 498641].includes(row.sourceSkillId)) return "friendly"; // RuneWaker's tooltip calls this a four-pulse heal on a friendly target; // sourceTarget 7 is stale/conflicting and was incorrectly making it hostile. @@ -781,6 +897,85 @@ function specializedEffects(row: GeneratedSemanticRow): readonly AbilityEffect[] } function effects(row: GeneratedSemanticRow): readonly AbilityEffect[] { + if (isRomDruidRoguePair(row) && row.sourceSkillId === 494023) { + return romDruidRogueSinisterRequestEffects(); + } + if (row.classId === "rom-priest") { + const holyBlessing = romPriestHolyBlessingEffects(row); + if (holyBlessing) return holyBlessing; + if (row.sourceSkillId === 498620) { + return [{ + kind: "apply-aura", + aura: ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_AURA, + recipient: "ability-target", + sourceEffectType: 1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 498620, + }]; + } + if (row.sourceSkillId === 490275) { + const silence: AbilityEffect = { + kind: "apply-aura", + aura: { + id: "rom-priest-vow-of-silence", + name: "Vow of Silence", + disposition: "debuff", + durationMs: 8_400, + dispelCategory: "magic", + }, + recipient: "ability-target", + control: { kind: "silence" }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 490275, + }; + return [silence, { kind: "interrupt", lockoutMs: 8_400 }]; + } + if (row.sourceSkillId === 490276) { + return [ + { + kind: "damage", + coefficient: 0, + basePoints: 1_655, + pointsPerLevel: 0, + sourceLevel: 1, + school: "holy", + }, + { + kind: "apply-aura", + aura: { + id: "rom-priest-holy-void", + name: "Voidal Infection", + disposition: "debuff", + durationMs: 20_000, + dispelCategory: "magic", + modifiers: [ + { kind: "stat", stat: "physical-defense", operation: "percent", value: -0.188 }, + { kind: "stat", stat: "magical-defense", operation: "percent", value: -0.188 }, + ], + }, + recipient: "ability-target", + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 490276, + }, + ]; + } + if (row.sourceSkillId === 498612) { + return [ + { kind: "damage", coefficient: 9.751, school: "holy" }, + { + kind: "cooldown-reset", + mode: "reduce", + abilityName: "Blessing of Humility", + amountMs: 15_000, + }, + ]; + } + } const specialized = specializedEffects(row); if (specialized) return specialized; const semantics = translateRomAbilitySemantics(row); @@ -792,6 +987,8 @@ function effects(row: GeneratedSemanticRow): readonly AbilityEffect[] { utilityTags: [...(effect.aura.utilityTags ?? []), "rom-briar-shield"], }, } : effect); + const holyCandle = romPriestHolyCandleEffects(row, translated); + if (holyCandle) return holyCandle; const priestMageOverride = overrideRomPriestMageEffects(row, translated); if (priestMageOverride) return priestMageOverride; const championOverride = overrideRomChampionEffects(row, translated); @@ -952,7 +1149,7 @@ function effects(row: GeneratedSemanticRow): readonly AbilityEffect[] { if (row.sourceSkillId === 490269) { return translated.filter((effect) => effect.kind === "hot").slice(0, 1); } - if (row.sourceSkillId === 490304 || row.sourceSkillId === 490434) { + if (row.sourceSkillId === 490434) { return translated.map((effect) => effect.kind === "apply-aura" ? { ...effect, aura: { ...effect.aura, utilityTags: [...(effect.aura.utilityTags ?? []), "rom-self-health-drain"] }, @@ -1010,8 +1207,8 @@ function effects(row: GeneratedSemanticRow): readonly AbilityEffect[] { } : effect )); } - if (row.sourceSkillId === 490347) { - return [{ kind: "status", status: "sleep", durationMs: 10_000, maxTargets: 1, breakOnDamage: true }]; + if (row.sourceSkillId === ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID && row.classId === "rom-rogue") { + return [romRogueEnergizedHandsApplyEffect()]; } if (row.sourceSkillId === 490454) { return [{ kind: "status", status: "root", durationMs: 10_000, maxTargets: 1, breakOnDamage: true }]; @@ -1042,11 +1239,16 @@ function effects(row: GeneratedSemanticRow): readonly AbilityEffect[] { aura: { ...effect.aura, utilityTags: ["stealth", "rom-vanish"] }, } : effect); } - if (row.sourceSkillId === 490329) { + if (row.sourceSkillId === 490329 && row.classId === "rom-rogue") { const aura = translated.find((effect) => effect.kind === "apply-aura"); return aura?.kind === "apply-aura" ? [{ ...aura, - aura: { ...aura.aura, durationMs: 900_000, utilityTags: ["rom-poisonous"] }, + aura: { + ...aura.aura, + durationMs: 900_000, + exclusiveGroup: ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP, + utilityTags: ["rom-poisonous"], + }, }] : translated; } // RuneWaker's Knight uses Holy Seal as a target-scoped build/spend resource. @@ -1076,14 +1278,28 @@ function effects(row: GeneratedSemanticRow): readonly AbilityEffect[] { return translated; } -function areaRadius(row: Pick): number | undefined { +function areaRadius(row: Pick): number | undefined { + // Rune Overload's local tooltip says only "immediate vicinity". Its + // hash-matched source has no numeric radius, so do not apply the generic + // heuristic's 10-yard fallback to this self-targeted ability. + if (row.sourceSkillId === 498572) return undefined; if (row.description.includes("up to 3 targets") && row.description.includes("Inflicts")) return 6; if (!/\b(?:multiple targets|multiple enemies|all targets|all enemies|nearby targets|nearby party members|surrounding (?:enemies|targets)|party members within|all teammates within|friendly targets within|(?:enemies|targets) (?:within (?:a )?range|in a range|in range))\b/i.test(row.description)) return undefined; const sourceRange = row.description.match(/\b(?:range|radius)\s+(?:of\s+)?(\d+(?:\.\d+)?)/i)?.[1]; return Math.max(3, Math.min(40, sourceRange ? Number(sourceRange) / 10 : row.range > 1 ? row.range : 10)); } -function sourceTargeting(sourceSkillId: number): AbilityDefinition["targeting"] | undefined { +function sourceTargeting(sourceSkillId: number, classId?: string, secondaryClassId?: string): AbilityDefinition["targeting"] | undefined { + if (isRomDruidRoguePair({ classId, secondaryClassId }) && sourceSkillId === 494321) return { shape: "circle", radius: 8 }; + if (isRomDruidRoguePair({ classId, secondaryClassId }) && sourceSkillId === 494023) return { shape: "circle", radius: 15 }; + if (sourceSkillId === 498612) return { shape: "circle", radius: 80 }; + // Current CoA Fire Ward (490248) is a radius-100 raid aura. RoM's local + // runtime uses one tenth of the published distance units, matching range 150 + // to 15 for this same catalog row. + if (sourceSkillId === 490248) return { shape: "circle", radius: 10 }; + // CoA's current Whirlwind Shield (1493719) is a 100-radius multi-target cast; + // map the exact-name local RuneWaker row to that current shape. + if (sourceSkillId === 490175 || sourceSkillId === 1_493_719) return { shape: "circle", radius: 100 }; if (sourceSkillId === 490311 || sourceSkillId === 490337) return { shape: "unit", requiresBehindTarget: true }; if (sourceSkillId === 490239) return { shape: "line", radius: 12 }; if (sourceSkillId === 498201 || sourceSkillId === 498202) return { shape: "circle", radius: 7.5 }; @@ -1109,28 +1325,116 @@ function sourceTargeting(sourceSkillId: number): AbilityDefinition["targeting"] return undefined; } -function sourceRange(sourceSkillId: number, fallback: number): number { +function sourceRange(sourceSkillId: number, fallback: number, classId?: string, secondaryClassId?: string): number { + if (sourceSkillId === 490274) return 1; + if (classId === "rom-priest" && secondaryClassId === undefined && sourceSkillId === 490304) return 1; + if (sourceSkillId === 490275 || sourceSkillId === 490276 || sourceSkillId === 498612) return 150; + if (isRomDruidRoguePair({ classId, secondaryClassId }) && [494024, 494321].includes(sourceSkillId)) return 15; + if (isRomDruidRoguePair({ classId, secondaryClassId }) && sourceSkillId === 494023) return 5; // RoM tooltip ranges are expressed in decimeters; Phoenix's source row is // self-targeted, so use its described 120-unit path length for line casting. return sourceSkillId === 490239 ? 12 : fallback; } function rank(row: GeneratedRank, parent: GeneratedSkill): AbilityRankDefinition { - const rankCosts = costsFor(row); + const currentDruidRogue = isRomDruidRoguePair(parent); + const currentDruidMageInspiration = isRomDruidMagePair(parent) && row.sourceSkillId === 494322; + const currentMageDruidGreenGuardian = isRomMageDruidPair(parent) + && row.sourceSkillId === ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID; + const currentCoaHolyCandle = parent.classId === "rom-priest" + && parent.secondaryClassId === undefined + && row.sourceSkillId === 490304; + const currentCoaRogueEnergizedHands = parent.classId === "rom-rogue" + && row.sourceSkillId === ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID; + const currentCoaRoguePoisonousHands = parent.classId === "rom-rogue" && row.sourceSkillId === 490329; + const currentCoaRogueMageChaosDagger = parent.classId === "rom-rogue" + && parent.secondaryClassId === "rom-mage" + && row.sourceSkillId === ROM_ROGUE_MAGE_CHAOS_DAGGER_SPELL_ID; + const currentCoaSoulBrandSting = row.sourceSkillId === 498710 + && parent.classId === "rom-warlock" && parent.secondaryClassId === "rom-mage"; + const currentCoaSoulEnlightenment = isRomWarlockPriestSoulEnlightenment({ + classId: parent.classId, + secondaryClassId: parent.secondaryClassId, + sourceSkillId: row.sourceSkillId, + }); + const currentCoaHolyPowerExplosion = row.sourceSkillId === 490172 + && parent.classId === "rom-knight" && parent.secondaryClassId === undefined; + const currentCoaLeopardInstinct = row.sourceSkillId === 495402 + && parent.classId === "rom-knight" && parent.secondaryClassId === "rom-rogue"; + const currentCoaPassive = currentCoaHolyPowerExplosion || currentCoaLeopardInstinct + || currentDruidMageInspiration; + const passiveMode = currentCoaPassive || currentCoaRogueMageChaosDagger; + const rankCosts = currentMageDruidGreenGuardian ? [] + : currentCoaHolyCandle ? [ROM_PRIEST_HOLY_CANDLE_COST] + : currentCoaRogueEnergizedHands || currentCoaRogueMageChaosDagger ? [] + : currentDruidRogue && row.sourceSkillId === 494321 + ? [{ resource: "mana" as const, amount: 4, percentage: true }, { resource: "nature-power" as const, amount: 1 }] + : currentDruidRogue && row.sourceSkillId === 494024 + ? [{ resource: "energy" as const, amount: 25 }] + : currentDruidRogue && row.sourceSkillId === 494023 + ? [] + : currentCoaSoulBrandSting + ? [ROM_WARLOCK_MAGE_SOUL_BRAND_STING_COST] + : currentCoaSoulEnlightenment ? [ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_COST] + : currentCoaPassive ? [] : costsFor(row); const target = abilityTarget({ ...row, target: row.target ?? parent.target }); + const priestRankName = parent.classId === "rom-priest" ? romPriestName(row.sourceSkillId, row.name) : row.name; + const currentClassDescription = currentMageDruidGreenGuardian + ? ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION + : currentDruidMageInspiration + ? ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION + : currentCoaRogueEnergizedHands + ? ROM_ROGUE_ENERGIZED_HANDS_DESCRIPTION + : currentCoaRoguePoisonousHands + ? ROM_ROGUE_POISONOUS_HANDS_DESCRIPTION + : currentCoaRogueMageChaosDagger + ? ROM_ROGUE_MAGE_CHAOS_DAGGER_DESCRIPTION + : parent.classId === "rom-priest" + ? currentPriestCoaDescription(row.sourceSkillId, row.description) + : parent.classId === "rom-mage" + ? currentMageCoaDescription(row.sourceSkillId, row.description) + : currentDruidRogue && row.sourceSkillId === 494321 + ? ROM_DRUID_ROGUE_NECROTIC_WOUND_DESCRIPTION + : currentDruidRogue && row.sourceSkillId === 494024 + ? ROM_DRUID_ROGUE_CORROSIVE_POISON_DESCRIPTION + : currentDruidRogue && row.sourceSkillId === 494023 + ? ROM_DRUID_ROGUE_SINISTER_REQUEST_DESCRIPTION + : row.description; + const currentWarlockRogueShadowSlice = row.sourceSkillId === 498678 + && parent.classId === "rom-warlock" && parent.secondaryClassId === "rom-rogue"; + const rankDescription = currentCoaSoulBrandSting + ? ROM_WARLOCK_MAGE_SOUL_BRAND_STING_DESCRIPTION + : currentCoaSoulEnlightenment + ? ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_DESCRIPTION + : currentWarlockRogueShadowSlice + ? ROM_WARLOCK_ROGUE_SHADOW_SLICE_DESCRIPTION + : row.sourceSkillId === 490344 && parent.classId === "rom-rogue" + ? ROM_WARLOCK_ROGUE_SHADOW_STEP_DESCRIPTION + : currentWarlockCoaDescription(row.sourceSkillId, currentClassDescription); return { rank: row.rank, spellId: row.sourceSkillId, - level: row.level, - description: parent.classId === "rom-priest" ? romPriestDescription(row.sourceSkillId, row.description) : row.description, - castMode: castModeFor(row), - castTimeMs: castTimeMsFor(row), - cooldownMs: cooldownMsFor(row), + level: currentMageDruidGreenGuardian ? 25 : row.level, + // AbilityRankDefinition has no name field, so retain the canonical CoA + // name in the rank copy when a local row was renamed. + description: parent.classId === "rom-priest" && priestRankName !== row.name + && !rankDescription.toLowerCase().startsWith(priestRankName.toLowerCase()) + ? `${priestRankName}: ${rankDescription}` + : rankDescription, + castMode: passiveMode || currentMageDruidGreenGuardian ? "instant" : currentDruidRogue && row.sourceSkillId === 494321 ? "channel" : castModeFor(row), + castTimeMs: passiveMode || currentMageDruidGreenGuardian ? 0 : currentCoaRogueEnergizedHands || currentCoaRoguePoisonousHands ? 1_000 + : currentDruidRogue && row.sourceSkillId === 494321 ? 1_500 : castTimeMsFor(row), + cooldownMs: passiveMode || currentMageDruidGreenGuardian || currentCoaRogueEnergizedHands || currentCoaRoguePoisonousHands ? 0 + : currentDruidRogue && row.sourceSkillId === 494321 ? 0 + : currentDruidRogue && row.sourceSkillId === 494024 ? 1_000 + : currentCoaHolyCandle ? 30_000 + : currentDruidRogue && row.sourceSkillId === 494023 ? 15_000 : cooldownMsFor(row), gcdMs: 1_500, ...(row.sourceSkillId === 498770 ? { channelPulses: 4 } : {}), + ...(currentDruidRogue && row.sourceSkillId === 494321 ? { channelPulses: 3, channelTickMs: 500 } : {}), cost: rankCosts[0] ?? { resource: "mana", amount: 0 }, costs: rankCosts, - effects: effects({ + effects: currentCoaPassive ? [] : effects({ ...row, classId: parent.classId, secondaryClassId: parent.secondaryClassId, @@ -1146,44 +1450,179 @@ function ability(row: GeneratedSkill): AbilityDefinition { const secondaryClassId = row.secondaryClassId && ROM_CLASS_IDS.includes(row.secondaryClassId as RomClassId) ? row.secondaryClassId as RomClassId : undefined; - const abilityCosts = costsFor(row); + const currentDruidRogue = isRomDruidRoguePair({ classId, secondaryClassId }); + const currentMageDruidGreenGuardian = isRomMageDruidPair({ classId, secondaryClassId }) + && row.sourceSkillId === ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID; + const currentDruidMageInspiration = isRomDruidMagePair({ classId, secondaryClassId }) + && row.sourceSkillId === 494322; + const currentCoaHolyCandle = classId === "rom-priest" + && secondaryClassId === undefined + && row.sourceSkillId === 490304; + const currentCoaRogueEnergizedHands = classId === "rom-rogue" + && row.sourceSkillId === ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID; + const currentCoaRoguePoisonousHands = classId === "rom-rogue" && row.sourceSkillId === 490329; + const currentCoaRogueMageChaosDagger = classId === "rom-rogue" + && secondaryClassId === "rom-mage" + && row.sourceSkillId === ROM_ROGUE_MAGE_CHAOS_DAGGER_SPELL_ID; + const currentCoaCompassion = row.sourceSkillId === 491_635; + const currentCoaHolyPowerExplosion = row.sourceSkillId === 490172 && classId === "rom-knight"; + const currentCoaLeopardInstinct = row.sourceSkillId === 495402 + && classId === "rom-knight" && secondaryClassId === "rom-rogue"; + const currentCoaPsychicWarrior = row.sourceSkillId === 499868 + && classId === "rom-warlock" && secondaryClassId === "rom-warrior"; + const currentCoaShadowSlice = row.sourceSkillId === 498678 + && classId === "rom-warlock" && secondaryClassId === "rom-rogue"; + const currentCoaShadowStep = row.sourceSkillId === 490344 && classId === "rom-rogue"; + const currentCoaSoulBrandSting = row.sourceSkillId === 498710 + && classId === "rom-warlock" && secondaryClassId === "rom-mage"; + const currentCoaSoulEnlightenment = isRomWarlockPriestSoulEnlightenment({ + classId, + secondaryClassId, + sourceSkillId: row.sourceSkillId, + }); + const currentCoaPassive = currentCoaHolyPowerExplosion || currentCoaLeopardInstinct + || currentCoaPsychicWarrior || currentCoaShadowSlice || currentDruidMageInspiration; + const currentCoaPassiveMode = currentCoaPassive || currentCoaRogueMageChaosDagger || currentMageDruidGreenGuardian; + const abilityCosts = currentMageDruidGreenGuardian ? [] + : currentCoaHolyCandle ? [ROM_PRIEST_HOLY_CANDLE_COST] + : currentCoaRogueEnergizedHands ? [] + : currentDruidRogue && row.sourceSkillId === 494321 + ? [{ resource: "mana" as const, amount: 4, percentage: true }, { resource: "nature-power" as const, amount: 1 }] + : currentDruidRogue && row.sourceSkillId === 494024 + ? [{ resource: "energy" as const, amount: 25 }] + : currentDruidRogue && row.sourceSkillId === 494023 + ? [] + : currentCoaSoulBrandSting + ? [ROM_WARLOCK_MAGE_SOUL_BRAND_STING_COST] + : currentCoaSoulEnlightenment ? [ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_COST] + : costsFor(row); const target = abilityTarget(row); + const currentKnightName = currentCoaRogueEnergizedHands + ? "Energized Hands" + : currentCoaRoguePoisonousHands + ? "Poisonous Hands" + : currentCoaRogueMageChaosDagger + ? "Chaos Dagger" + : row.sourceSkillId === 491_635 + ? "Compassion of Holy Light" + : currentCoaPsychicWarrior + ? "Psychic Warrior" + : currentDruidRogue && row.sourceSkillId === 494023 + ? "Sinister Request" + : row.name; + const currentAbilityName = currentCoaShadowSlice + ? "Shadow Slice" + : classId === "rom-priest" + ? romPriestName(row.sourceSkillId, currentKnightName) + : currentKnightName; + const currentKnightDescription = currentMageDruidGreenGuardian + ? ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION + : currentDruidMageInspiration + ? ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION + : currentCoaRogueEnergizedHands + ? ROM_ROGUE_ENERGIZED_HANDS_DESCRIPTION + : currentCoaRoguePoisonousHands + ? ROM_ROGUE_POISONOUS_HANDS_DESCRIPTION + : currentCoaRogueMageChaosDagger + ? ROM_ROGUE_MAGE_CHAOS_DAGGER_DESCRIPTION + : currentCoaShadowSlice + ? ROM_WARLOCK_ROGUE_SHADOW_SLICE_DESCRIPTION + : currentCoaShadowStep + ? ROM_WARLOCK_ROGUE_SHADOW_STEP_DESCRIPTION + : currentDruidRogue && row.sourceSkillId === 494321 + ? ROM_DRUID_ROGUE_NECROTIC_WOUND_DESCRIPTION + : currentDruidRogue && row.sourceSkillId === 494024 + ? ROM_DRUID_ROGUE_CORROSIVE_POISON_DESCRIPTION + : currentDruidRogue && row.sourceSkillId === 494023 + ? ROM_DRUID_ROGUE_SINISTER_REQUEST_DESCRIPTION + : row.sourceSkillId === 491_639 + ? "Increases aggro generated by Whirlwind and reduces its Rage cost and cooldown. On successful hits, Whirlwind inflicts Deadly Wound, reducing the target's received healing by 30% for 10 seconds (5 seconds against players)." + : row.sourceSkillId === 491_608 + ? "Increases Punishment damage by 28.5%. When Punishment hits, the target takes 2% more damage for every Holy Seal stack it has for 10 seconds." + : row.sourceSkillId === 491_635 + ? "Current CoA lists this reused passive under Knight/Shaman, while the local generated row is Knight/Priest and this simulator has no Shaman class entry. The exact-ID local passive is bridged to Whirlwind Shield (CoA skill 1493719): a successful hit heals nearby allies for 120 + 0.2 x STA and triggers Holy Illumination; cooldown becomes 4 seconds instead of 5. CoA also scales its shield-defense damage term to 5x, but this simulator has no shield-defense stat, so that damage term is not modeled." + : currentCoaHolyPowerExplosion + ? "Passive: increases Aggro generated by Knight abilities by 198%." + : currentCoaLeopardInstinct + ? "Passive: each hit received adds one stack, up to 10. Each stack grants 3% Dodge and 3% Magic Resistance Rate; each Dodge removes one stack. This simulator applies Dodge only because it has no Magic Resistance Rate consumer." + : currentWarlockCoaDescription(row.sourceSkillId, row.description); + const currentWarriorCoaDescription = row.sourceSkillId === 493248 + && classId === "rom-warrior" && secondaryClassId === "rom-rogue" + ? "Passive: gives the Warrior/Rogue CoA Probing Attack (493283) a 30% chance on a landed hit to restore 25 Energy and 50 Rage." + : currentKnightDescription; + const currentDescription = currentCoaSoulBrandSting + ? ROM_WARLOCK_MAGE_SOUL_BRAND_STING_DESCRIPTION + : currentCoaSoulEnlightenment + ? ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_DESCRIPTION + : classId === "rom-priest" + ? currentWarlockCoaDescription(row.sourceSkillId, currentPriestCoaDescription(row.sourceSkillId, currentKnightDescription)) + : classId === "rom-mage" + ? currentMageCoaDescription(row.sourceSkillId, currentWarriorCoaDescription) + : currentWarriorCoaDescription; + const currentCoaDescriptionOverride = currentMageDruidGreenGuardian || currentCoaPassive || currentCoaShadowStep || currentCoaSoulBrandSting || currentCoaSoulEnlightenment + || currentCoaRogueEnergizedHands || currentCoaRoguePoisonousHands || currentCoaRogueMageChaosDagger + || (currentDruidRogue && [494321, 494024, 494023].includes(row.sourceSkillId)) || (row.sourceSkillId === 493248 + && classId === "rom-warrior" && secondaryClassId === "rom-rogue") + || (row.sourceSkillId === 490248 && classId === "rom-mage"); + const currentRanks = row.ranks.map((entry) => rank(entry, row)).map((entry) => ({ + ...entry, + ...(currentCoaDescriptionOverride ? { description: currentDescription } : {}), + ...(currentDruidRogue && row.sourceSkillId === 494023 + ? { effects: romDruidRogueSinisterRequestEffects() } + : {}), + })); return { id: row.id, classId, ...(secondaryClassId ? { secondaryClassId } : {}), dbcSpellId: row.sourceSkillId, - name: row.name, - unlockLevel: row.unlockLevel, + name: currentAbilityName, + unlockLevel: currentMageDruidGreenGuardian ? 25 : row.unlockLevel, icon: row.icon, - sigil: row.name.split(/\s+/).map((part) => part[0]).join("").slice(0, 3).toUpperCase() || "RW", - description: classId === "rom-priest" ? romPriestDescription(row.sourceSkillId, row.description) : row.description, - target, - range: { min: 0, max: sourceRange(row.sourceSkillId, row.range) }, - ...(sourceTargeting(row.sourceSkillId)?.radius !== undefined - ? { radius: sourceTargeting(row.sourceSkillId)!.radius } + sigil: currentAbilityName.split(/\s+/).map((part) => part[0]).join("").slice(0, 3).toUpperCase() || "RW", + description: currentDescription, + target: currentCoaPassiveMode || currentCoaRogueEnergizedHands || currentCoaRoguePoisonousHands ? "self" : target, + range: { min: 0, max: currentCoaPassiveMode || currentCoaRogueEnergizedHands || currentCoaRoguePoisonousHands + ? 0 : sourceRange(row.sourceSkillId, row.range, classId, secondaryClassId) }, + ...(currentCoaSoulEnlightenment + ? { radius: ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_RADIUS } + : sourceTargeting(row.sourceSkillId, classId, secondaryClassId)?.radius !== undefined + ? { radius: sourceTargeting(row.sourceSkillId, classId, secondaryClassId)!.radius } : areaRadius(row) !== undefined ? { radius: areaRadius(row) } : {}), - ...(sourceTargeting(row.sourceSkillId) ? { targeting: sourceTargeting(row.sourceSkillId) } : {}), - castMode: castModeFor(row), - castTimeMs: castTimeMsFor(row), - cooldownMs: cooldownMsFor(row), + ...(currentCoaSoulEnlightenment + ? { targeting: { shape: "circle" as const, radius: ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_RADIUS } } + : sourceTargeting(row.sourceSkillId, classId, secondaryClassId) + ? { targeting: sourceTargeting(row.sourceSkillId, classId, secondaryClassId) } : {}), + castMode: currentCoaPassiveMode ? "instant" : currentDruidRogue && row.sourceSkillId === 494321 ? "channel" : castModeFor(row), + castTimeMs: currentCoaPassiveMode ? 0 : currentDruidRogue && row.sourceSkillId === 494321 ? 1_500 : castTimeMsFor(row), + cooldownMs: currentCoaPassiveMode ? 0 : currentDruidRogue && row.sourceSkillId === 494321 ? 0 + : currentDruidRogue && row.sourceSkillId === 494024 ? 1_000 + : currentCoaHolyCandle ? 30_000 + : currentDruidRogue && row.sourceSkillId === 494023 ? 15_000 : cooldownMsFor(row), gcdMs: 1_500, ...(row.sourceSkillId === 498770 ? { channelPulses: 4 } : {}), - cost: abilityCosts[0] ?? { resource: "mana", amount: 0 }, - costs: abilityCosts, - effects: effects({ ...row, target, classId }), - passive: row.passive, + ...(currentDruidRogue && row.sourceSkillId === 494321 ? { channelPulses: 3, channelTickMs: 500 } : {}), + cost: currentCoaPassiveMode ? { resource: "mana", amount: 0 } : abilityCosts[0] ?? { resource: "mana", amount: 0 }, + costs: currentCoaPassiveMode ? [] : abilityCosts, + effects: currentCoaPassive ? [] : effects({ ...row, target, classId, secondaryClassId }), + passive: currentMageDruidGreenGuardian ? false : currentCoaPassiveMode || row.sourceSkillId === 490274 ? true : row.passive, source: "runewaker", sourceUnlockLevel: row.unlockLevel, - ranks: row.ranks.map((entry) => rank(entry, row)), - romSkillGroup: row.group, + ranks: currentRanks, + romSkillGroup: currentMageDruidGreenGuardian ? "elite" : row.group, }; } -const generatedAbilities = generated.map(ability); +const generatedAbilities = generated.map(ability) + .map(romWarriorDruidRageOfCalmnessCatalogOverride) + .map(romScoutPriestScreenAttackCatalogOverride) + .map(romScoutPriestDrumsOfWarCatalogOverride) + .map(romPriestScoutCuringShotCatalogOverride); export const ROM_ALL_ABILITIES = Object.freeze([ ...generatedAbilities, ...romPriestKnightAdditionalAbilities(generatedAbilities), + ...romWarriorCoaAdditionalAbilities(generatedAbilities), + ...romWarlockWarriorEnragedCoaAdditionalAbilities(generatedAbilities), ]); const romAbilityByGeneratedId = new Map(ROM_ALL_ABILITIES.map((entry) => [entry.id, entry])); @@ -1195,20 +1634,35 @@ for (const parent of generated) { } } +// Rune Overload's generated player row contains the hidden MagicCollect child +// ID on component 621241's one-second on-time trigger. The child itself is not +// a learned/player row, but its tooltip-referenced damage MagicObject (621243) +// is retained in the hash-matched parent source payload. Alias the child spell +// ID to that existing payload so the generic triggered-spell resolver can +// expand it without inventing a radius or target cap. +const runeOverloadParent = generated.find((entry) => entry.sourceSkillId === 498572); +const runeOverloadChildPayload = runeOverloadParent?.source?.components?.find((component) => component.id === 621243); +const hiddenTriggeredComponentOwners = new Map(); +if (runeOverloadParent && runeOverloadChildPayload) { + hiddenTriggeredComponentOwners.set(498574, { parent: runeOverloadParent, component: runeOverloadChildPayload }); +} + /** Resolve source-triggered MagicObject rows that are not player-facing skills. */ export function romTriggeredAbilityBySpellId(spellId: number): AbilityDefinition | null { - const owner = triggeredComponentOwners.get(spellId); + const owner = hiddenTriggeredComponentOwners.get(spellId) ?? triggeredComponentOwners.get(spellId); if (!owner) return null; const parentAbility = romAbilityByGeneratedId.get(owner.parent.id); if (!parentAbility) return null; - const triggeredEffects = effects({ - sourceSkillId: spellId, - name: `${owner.parent.name} trigger`, - description: "", - target: owner.parent.target, - passive: false, - source: { componentIds: [spellId], components: [owner.component] }, - }).filter((effect) => effect.kind !== "scripted" && effect.kind !== "unsupported"); + const triggeredEffects = spellId === 498574 + ? [{ kind: "damage", coefficient: 0.6, school: "physical" } satisfies AbilityEffect] + : effects({ + sourceSkillId: spellId, + name: `${owner.parent.name} trigger`, + description: "", + target: owner.parent.target, + passive: false, + source: { componentIds: [spellId], components: [owner.component] }, + }).filter((effect) => effect.kind !== "scripted" && effect.kind !== "unsupported"); if (!triggeredEffects.length) return null; return { ...parentAbility, diff --git a/src/game/romChampionRuneOverloadChild.test.ts b/src/game/romChampionRuneOverloadChild.test.ts new file mode 100644 index 00000000..bd33073c --- /dev/null +++ b/src/game/romChampionRuneOverloadChild.test.ts @@ -0,0 +1,66 @@ +import { beforeAll, describe, expect, it } from "vitest"; +import { preloadAbilityCatalogsForClasses, triggeredAbilityBySpellId } from "./abilityCatalog"; +import { ROM_ALL_ABILITIES, romTriggeredAbilityBySpellId } from "./romAbilityCatalog"; +import rawCatalog from "./romPlayerCatalog.generated.json"; + +const generated = rawCatalog.skills as unknown as readonly { + readonly sourceSkillId: number; + readonly target: "hostile" | "friendly" | "self"; + readonly source?: { + readonly sourceTarget?: number; + readonly components?: readonly { + readonly id: number; + readonly attack?: { readonly damagePower: number; readonly damagePowerSkillLevelArg: number }; + readonly triggers?: { readonly onTimeMagicId?: number; readonly onTimeSeconds?: number }; + }[]; + }; +}[]; + +describe("RuneWaker Rune Overload hidden trigger catalog", () => { + beforeAll(async () => { + await preloadAbilityCatalogsForClasses(["rom-champion"]); + }); + + it("retains the hash-matched one-second child link and supported damage coefficient", () => { + const parentSource = generated.find((entry) => entry.sourceSkillId === 498572); + expect(parentSource?.target).toBe("self"); + expect(parentSource?.source?.sourceTarget).toBe(0); + expect(parentSource?.source?.components).toEqual(expect.arrayContaining([ + expect.objectContaining({ + id: 621241, + triggers: expect.objectContaining({ onTimeMagicId: 498574, onTimeSeconds: 1 }), + }), + expect.objectContaining({ + id: 621243, + attack: expect.objectContaining({ damagePower: -0.6 }), + }), + ])); + + const parent = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 498572); + const periodicChildProc = parent?.effects + .filter((effect) => effect.kind === "apply-aura") + .flatMap((effect) => effect.kind === "apply-aura" ? effect.aura.procs ?? [] : []) + .find((proc) => proc.action.kind === "custom" + && proc.action.id === "rom-trigger-skill" + && proc.action.data?.spellId === 498574); + expect(periodicChildProc).toMatchObject({ + triggers: "periodic", + internalCooldownMs: 1_000, + action: { kind: "custom", id: "rom-trigger-skill", data: { spellId: 498574 } }, + }); + + const child = romTriggeredAbilityBySpellId(498574); + expect(child).toMatchObject({ + dbcSpellId: 498574, + classId: "rom-champion", + target: "self", + effects: [{ kind: "damage", coefficient: 0.6, school: "physical" }], + }); + expect(child?.radius).toBeUndefined(); + expect(child?.targeting).toBeUndefined(); + }); + + it("is visible through the shared triggered-spell resolver used by RoM player and party dispatch", () => { + expect(triggeredAbilityBySpellId(498574, false)).toEqual(romTriggeredAbilityBySpellId(498574)); + }); +}); diff --git a/src/game/romCombatMechanics.test.ts b/src/game/romCombatMechanics.test.ts index 46b2cbec..fc6584c2 100644 --- a/src/game/romCombatMechanics.test.ts +++ b/src/game/romCombatMechanics.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { abilityById, type AbilityEffect } from "./abilityCatalog"; +import { abilityById, type AbilityDefinition, type AbilityEffect } from "./abilityCatalog"; import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; import { romAbilityNeedsRangedWeapon, romAbilityNeedsShield, romAbilityNeedsTwoHand, romAbilityRequiredTargetStateTag, romEffectsForCast, romTargetBleedCount, romTargetHasSlashBleed, romWarriorAbilityAdjustment, romWarriorThreatMultiplier, type RomCastMechanics } from "./romCombatMechanics"; @@ -19,6 +19,26 @@ function kinds(effects: readonly AbilityEffect[]): readonly string[] { } describe("RoM primary class conditional combat effects", () => { + it("applies learned Priest/Warrior Condensed Rage only to physical damage", () => { + const source = ROM_ALL_ABILITIES.find((ability) => ability.classId === "rom-priest")!; + const physicalAbility: AbilityDefinition = { + ...source, + effects: [{ kind: "damage", coefficient: 0, basePoints: 100, school: "physical" }], + }; + const holyAbility: AbilityDefinition = { + ...physicalAbility, + effects: [{ kind: "damage", coefficient: 0, basePoints: 100, school: "holy" }], + }; + const otherClassAbility: AbilityDefinition = { ...physicalAbility, classId: "rom-warrior" }; + const withPassive = { ...empty, learnedPassiveSpellIds: [493038] }; + const withoutPassive = { ...empty, learnedPassiveSpellIds: [] }; + + expect(romEffectsForCast(physicalAbility, withPassive)[0]).toMatchObject({ basePoints: 122, school: "physical" }); + expect(romEffectsForCast(physicalAbility, withoutPassive)[0]).toMatchObject({ basePoints: 100 }); + expect(romEffectsForCast(holyAbility, withPassive)[0]).toMatchObject({ basePoints: 100, school: "holy" }); + expect(romEffectsForCast(otherClassAbility, withPassive)[0]).toMatchObject({ basePoints: 100 }); + }); + it("recognizes source-required shields and ranged weapons across primary and elite rows", () => { const sourceAbility = (spellId: number) => ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === spellId)!; for (const spellId of [491333, 491484]) expect(romAbilityNeedsShield(sourceAbility(spellId))).toBe(true); @@ -73,7 +93,7 @@ describe("RoM primary class conditional combat effects", () => { expect(cast("rom-knight-general-0")).toEqual([]); const one = cast("rom-knight-general-0", { sealStacks: 1 }); const four = cast("rom-knight-general-0", { sealStacks: 4 }); - expect(kinds(one)).toEqual(["damage", "dot", "combo"]); + expect(kinds(one)).toEqual(["damage", "combo"]); expect((four[0] as Extract).basePoints) .toBe(4 * ((one[0] as Extract).basePoints ?? 0)); }); @@ -139,7 +159,7 @@ describe("RoM primary class conditional combat effects", () => { expect(romWarriorAbilityAdjustment(sourceAbility(490133), [499491])) .toEqual({ rageCostReduction: 25, cooldownReductionMs: 15_000 }); expect(romWarriorAbilityAdjustment(sourceAbility(490133), [494377])) - .toEqual({ rageCostReduction: 10, cooldownReductionMs: 10_000 }); + .toEqual({ rageCostReduction: 0, cooldownReductionMs: 0 }); expect(romWarriorAbilityAdjustment(sourceAbility(490121), [])).toEqual({ rageCostReduction: 0, cooldownReductionMs: 0, }); @@ -147,6 +167,28 @@ describe("RoM primary class conditional combat effects", () => { .toEqual({ rageCostReduction: 10, cooldownReductionMs: 0 }); }); + it("removes only the four retired Holy Seal DoTs and applies CoA Probing Attack's conditional weapon-DPS value", () => { + for (const spellId of [490148, 490149, 490150, 490151]) { + const ability = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId === spellId)!; + const resolved = romEffectsForCast(ability, spellId === 490151 ? { ...empty, sealStacks: 4 } : empty); + expect(resolved.some((effect) => effect.kind === "dot")).toBe(false); + expect(resolved.some((effect) => effect.kind === "damage")).toBe(true); + if (spellId === 490148 || spellId === 490150) { + expect(resolved.some((effect) => effect.kind === "combo")).toBe(true); + } + } + + const probing = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId === 493283)!; + const base = romEffectsForCast(probing, empty).find((effect) => effect.kind === "damage"); + const bleedEmpowered = romEffectsForCast(probing, { ...empty, bleedCount: 1 }) + .find((effect) => effect.kind === "damage"); + const hammerEmpowered = romEffectsForCast(probing, { ...empty, mainHandTwoHandHammer: true }) + .find((effect) => effect.kind === "damage"); + expect(base).toMatchObject({ kind: "damage", weaponDpsCoefficient: 6.643 }); + expect(bleedEmpowered).toMatchObject({ kind: "damage", weaponDpsCoefficient: 11.169 }); + expect(hammerEmpowered).toMatchObject({ kind: "damage", weaponDpsCoefficient: 11.169 }); + }); + it("applies Warrior/Warlock's physical-damage passive and Heroic Surprise Attack's on-hit payload", () => { const sourceAbility = (spellId: number) => ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === spellId)!; const rageBlow = sourceAbility(498706); @@ -213,10 +255,11 @@ describe("RoM primary class conditional combat effects", () => { }); it("uses one breakable control effect for each single-target restraint", () => { - for (const id of ["rom-scout-primary-4", "rom-rogue-primary-5", "rom-mage-primary-56"]) { + for (const id of ["rom-scout-primary-4", "rom-mage-primary-56"]) { const effects = cast(id); expect(effects).toHaveLength(1); expect(effects[0]).toMatchObject({ kind: "status", maxTargets: 1, breakOnDamage: true }); } + expect(kinds(cast("rom-rogue-primary-5"))).toEqual(["apply-aura"]); }); }); diff --git a/src/game/romCombatMechanics.ts b/src/game/romCombatMechanics.ts index 6d222245..538692a4 100644 --- a/src/game/romCombatMechanics.ts +++ b/src/game/romCombatMechanics.ts @@ -8,6 +8,10 @@ import { romChampionCastEffects } from "./romChampionOverrides"; import { romWardenCastEffects } from "./romWardenOverrides"; import { romWarlockCastEffects } from "./romWarlockOverrides"; import { romKnightCastEffects } from "./romKnightOverrides"; +import { romPriestWarriorCondensedRagePhysicalDamageMultiplier } from "./romPriestChampionOverrides"; +import { withoutCurrentCoaHolySealPeriodicDamage } from "./romWarriorCurrentCoaMechanics"; +import { romCoaWarriorRogueProbingAttackDpsCoefficient } from "./romWarriorRogueExhaustion"; +import { isRomDruidRoguePair, ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG } from "./romDruidRogueCurrentCoa"; const ROGUE_BLEED_ABILITIES = new Set([ "rom-rogue-primary-1", // Low Blow's conditional Grievous Wound @@ -21,12 +25,16 @@ export interface RomCastMechanics { readonly bleedCount: number; readonly charged: boolean; readonly mainHandDagger: boolean; + readonly mainHandTwoHandHammer?: boolean; readonly casterMaxHealth: number; readonly targetHealthPercent: number; readonly friendlyTargetHealthPercent?: number; readonly naturePower?: number; readonly passiveTags?: readonly string[]; readonly learnedPassiveSpellIds?: readonly number[]; + /** True when the ability's default damage school resolves to Physical. */ + readonly defaultDamageIsPhysical?: boolean; + readonly selectedTargetRelationship?: "friendly" | "hostile"; readonly eruptionProcRoll?: number; readonly targetTags?: readonly string[]; readonly slashBleed?: boolean; @@ -46,7 +54,7 @@ export function romSelfDrainPercent(spellId: number): number { export function romSingleTargetControl(ability: AbilityDefinition | null): boolean { return ability?.source === "runewaker" - && [490347, 490454, 491172].includes(ability.dbcSpellId); + && [490454, 491172].includes(ability.dbcSpellId); } export function romAbilityNeedsShield(ability: AbilityDefinition): boolean { @@ -80,6 +88,7 @@ export function romAbilityNeedsRangedWeapon(ability: AbilityDefinition): boolean export function romAbilityRequiredTargetStateTag(ability: AbilityDefinition): string | null { if (ability.source !== "runewaker") return null; + if (ability.dbcSpellId === 494321 && isRomDruidRoguePair(ability)) return ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG; if (ability.dbcSpellId === 492617) return "rom-weakened"; if (ability.dbcSpellId === 491136 || ability.dbcSpellId === 492619) return "rom-vulnerable"; return null; @@ -102,7 +111,6 @@ export function romWarriorAbilityAdjustment( 491458: { abilitySpellId: 490121, rageCostReduction: 10, cooldownReductionMs: 20_000 }, // Moon Cleave Perfection 493248: { abilitySpellId: 490133, rageCostReduction: 20, cooldownReductionMs: 10_000 }, // Exhaustion 499491: { abilitySpellId: 490133, rageCostReduction: 25, cooldownReductionMs: 15_000 }, // Whirlwind Battle Technique - 494377: { abilitySpellId: 490133, rageCostReduction: 10, cooldownReductionMs: 10_000 }, // Recovery of Life 499827: { abilitySpellId: 490053, rageCostReduction: 10, cooldownReductionMs: 0 }, // Speed Slash }; const applicable = Object.entries(rules) @@ -195,7 +203,12 @@ export function romEffectsForCast(ability: AbilityDefinition, context: RomCastMe context.friendlyTargetHealthPercent ?? 1, context.passiveTags ?? [], ); - const knightEffects = romKnightCastEffects(ability, priestWarlockEffects, context.passiveTags ?? []); + const knightEffects = romKnightCastEffects( + ability, + priestWarlockEffects, + context.passiveTags ?? [], + context.sealStacks, + ); const mageWarlockEffects = romMageWarlockCastEffects( ability, knightEffects, @@ -216,13 +229,26 @@ export function romEffectsForCast(ability: AbilityDefinition, context: RomCastMe context.targetTags ?? [], context.learnedPassiveSpellIds ?? [], context.targetHealthPercent, + context.selectedTargetRelationship ?? "hostile", ); + const coaEffects = withoutCurrentCoaHolySealPeriodicDamage(ability.dbcSpellId, effects); const warriorPassives = new Set(context.learnedPassiveSpellIds ?? []); + const condensedRageMultiplier = ability.classId === "rom-priest" + ? romPriestWarriorCondensedRagePhysicalDamageMultiplier( + (context.learnedPassiveSpellIds ?? []).includes(493038), + ) + : 1; + const condensedRageEffects = condensedRageMultiplier > 1 + ? coaEffects.map((effect) => (effect.kind === "damage" || effect.kind === "dot") + && (effect.school ?? (context.defaultDamageIsPhysical ? "physical" : undefined)) === "physical" + ? scaleOutput(effect, condensedRageMultiplier) + : effect) + : coaEffects; const sourceSchoolAdjustedEffects = romWarriorPhysicalWeaponTooltip(ability) - ? effects.map((effect) => (effect.kind === "damage" || effect.kind === "dot") && effect.school === "arcane" + ? condensedRageEffects.map((effect) => (effect.kind === "damage" || effect.kind === "dot") && effect.school === "arcane" ? { ...effect, school: "physical" as const } : effect) - : effects; + : condensedRageEffects; const warriorAdjustedEffects = ability.classId === "rom-warrior" && warriorPassives.has(499806) ? sourceSchoolAdjustedEffects.map((effect) => (effect.kind === "damage" || effect.kind === "dot") && (effect.school === undefined || effect.school === "physical") @@ -234,6 +260,15 @@ export function romEffectsForCast(ability: AbilityDefinition, context: RomCastMe const damage = warriorAdjustedEffects.filter((effect) => effect.kind === "damage"); const seals = Math.max(0, Math.min(4, context.sealStacks)); switch (ability.dbcSpellId) { + case 493283: { // Current CoA Warrior/Rogue Probing Attack has a sourced empowered weapon-DPS branch. + const weaponDpsCoefficient = romCoaWarriorRogueProbingAttackDpsCoefficient({ + hasCasterOwnedBleed: context.bleedCount > 0, + equippedTwoHandHammer: context.mainHandTwoHandHammer ?? false, + }); + return warriorAdjustedEffects.map((effect) => effect.kind === "damage" + ? { ...effect, weaponDpsCoefficient } + : effect); + } case 491142: // Tactical Attack's copied Slash bleed only applies when Slash is already bleeding the target. return [ ...damage, diff --git a/src/game/romCombatRuntime.test.ts b/src/game/romCombatRuntime.test.ts index ed797d78..083e9421 100644 --- a/src/game/romCombatRuntime.test.ts +++ b/src/game/romCombatRuntime.test.ts @@ -668,7 +668,7 @@ describe("RuneWaker combat runtime", () => { expect(usePartyStore.getState().members[0]!.health).toBeGreaterThan(injuredHealth); }); - it("casts Priest/Scout Curing Shot as a five-target friendly heal and HoT", () => { + it("casts Priest/Scout Curing Shot as an uncapped-radius friendly heal and HoT", () => { useCombatStore.getState().initializeCharacter({ classId: "rom-priest", secondaryClassId: "rom-scout", raceId: "rom-human", level: 80, }); @@ -683,7 +683,7 @@ describe("RuneWaker combat runtime", () => { usePartyStore.getState().selectMember(member.id); const curingShot = abilityById("rom-priest-rom-scout-elite-35")!; expect(curingShot.target).toBe("friendly"); - expect(curingShot.targeting).toMatchObject({ shape: "circle", radius: 20, maximumTargets: 5 }); + expect(curingShot.targeting).toEqual({ shape: "circle", radius: 10 }); expect(useCombatStore.getState().castAbility(curingShot.id, undefined, 1_000)).toMatchObject({ ok: true }); useCombatStore.getState().tick(2.1, 3_100); diff --git a/src/game/romCreatureFamilies.test.ts b/src/game/romCreatureFamilies.test.ts index 4ce553f0..d3eab71b 100644 --- a/src/game/romCreatureFamilies.test.ts +++ b/src/game/romCreatureFamilies.test.ts @@ -1,4 +1,6 @@ import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilityById } from "./abilityCatalog"; import { useCombatStore } from "./combatStore"; import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; import { romCreatureFamilyForServerEntry } from "./romCreatureFamilies"; @@ -41,23 +43,22 @@ describe("RuneWaker creature-family combat rules", () => { .toMatchObject({ ok: true }); }); - it("accepts the Poisonous state without a bag item and rejects Numbing Dagger on Undead", () => { + it("maps Rogue 490347 to the current self-targeted Energized Hands buff", () => { useCombatStore.getState().initializeCharacter({ - classId: "rom-rogue", secondaryClassId: "rom-warrior", raceId: "rom-human", level: 50, + classId: "rom-rogue", raceId: "rom-human", level: 50, }); - useCombatStore.setState({ playerPosition: [0, 0, 0] }); - for (const [id, entry] of [["undead", 106432], ["living", 103946]] as const) { - useCombatStore.getState().registerMob(id, { name: id, serverEntry: entry, maxHealth: 1_000_000 }); - setMobPosition(id, [3, 0, 0]); - } - expect(useCombatStore.getState().castAbility("rom-rogue-primary-6", undefined, 1_000)) - .toMatchObject({ ok: true }); - useCombatStore.getState().tick(0.1, 2_100); - useCombatStore.getState().selectMob("undead"); - expect(useCombatStore.getState().castAbility("rom-rogue-primary-5", undefined, 2_600)) - .toMatchObject({ ok: false, reason: "condition-not-met" }); - useCombatStore.getState().selectMob("living"); - expect(useCombatStore.getState().castAbility("rom-rogue-primary-5", undefined, 2_600)) + const energizedHands = abilityById("rom-rogue-primary-5"); + expect(energizedHands).toMatchObject({ + dbcSpellId: 490347, + name: "Energized Hands", + target: "self", + castTimeMs: 1_000, + }); + expect(useCombatStore.getState().castAbility("rom-rogue-primary-5", undefined, 1_000)) .toMatchObject({ ok: true }); + useCombatStore.getState().tick(1.1, 2_100); + expect(useCombatStore.getState().maxResourcePools.energy).toBe(150); + expect(useCombatStore.getState().auras.some((aura) => aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes("rom-energized-hands"))).toBe(true); }); }); diff --git a/src/game/romDruidCurrentCoaMechanics.test.ts b/src/game/romDruidCurrentCoaMechanics.test.ts new file mode 100644 index 00000000..dbf145d3 --- /dev/null +++ b/src/game/romDruidCurrentCoaMechanics.test.ts @@ -0,0 +1,75 @@ +import { describe, expect, it } from "vitest"; +import { + ROM_COA_DRUID_ADVANCED_REBIRTH_ID, + ROM_COA_DRUID_AMULET_OF_LIGHT_ITEM_ID, + ROM_COA_DRUID_GOLDEN_AMULET_ITEM_ID, + ROM_COA_DRUID_REBIRTH_ID, + ROM_COA_DRUID_SPIRIT_GUIDANCE_ID, + ROM_COA_DRUID_SUPREME_REBIRTH_ID, + romCoaDruidRebirthDebtRule, + romCoaSpiritGuidanceFactionOutcome, +} from "./romDruidCurrentCoaMechanics"; + +describe("current CoA Druid faction-conversion and Rebirth rules", () => { + it("keeps Spirit Guidance's player-target restriction explicit", () => { + expect(ROM_COA_DRUID_SPIRIT_GUIDANCE_ID).toBe(493536); + expect(romCoaSpiritGuidanceFactionOutcome({ + targetKind: "player", + casterReputation: 10, + })).toBe("player-target-prohibited"); + }); + + it("converts an NPC only when caster reputation is nonnegative", () => { + expect(romCoaSpiritGuidanceFactionOutcome({ + targetKind: "npc", + casterReputation: 0, + })).toBe("becomes-friendly"); + expect(romCoaSpiritGuidanceFactionOutcome({ + targetKind: "npc", + casterReputation: -1, + })).toBe("remains-hostile"); + }); + + it("does not guess the conversion result when reputation is unavailable", () => { + expect(romCoaSpiritGuidanceFactionOutcome({ + targetKind: "npc", + casterReputation: null, + })).toBe("unknown-reputation"); + expect(romCoaSpiritGuidanceFactionOutcome({ + targetKind: "npc", + casterReputation: Number.NaN, + })).toBe("unknown-reputation"); + }); + + it("reports basic Rebirth's 30% baseline and leaves its extra amulet bonus unquantified", () => { + expect(romCoaDruidRebirthDebtRule(ROM_COA_DRUID_REBIRTH_ID)).toEqual({ + debtReductionPercent: 30, + itemRule: { + kind: "optional-unquantified-bonus", + itemIds: [ROM_COA_DRUID_GOLDEN_AMULET_ITEM_ID, ROM_COA_DRUID_AMULET_OF_LIGHT_ITEM_ID], + }, + extraDebtReductionPercent: null, + }); + }); + + it("maps Advanced Rebirth to 45% with its required Amulet of Light", () => { + expect(romCoaDruidRebirthDebtRule(ROM_COA_DRUID_ADVANCED_REBIRTH_ID)).toEqual({ + debtReductionPercent: 45, + itemRule: { kind: "required", itemId: ROM_COA_DRUID_AMULET_OF_LIGHT_ITEM_ID }, + extraDebtReductionPercent: 0, + }); + }); + + it("maps Supreme Rebirth to 75% with its required Golden Amulet", () => { + expect(romCoaDruidRebirthDebtRule(ROM_COA_DRUID_SUPREME_REBIRTH_ID)).toEqual({ + debtReductionPercent: 75, + itemRule: { kind: "required", itemId: ROM_COA_DRUID_GOLDEN_AMULET_ITEM_ID }, + extraDebtReductionPercent: 0, + }); + }); + + it("does not map unrelated or unknown spell IDs", () => { + expect(romCoaDruidRebirthDebtRule(493538)).toBeNull(); + expect(romCoaDruidRebirthDebtRule(0)).toBeNull(); + }); +}); diff --git a/src/game/romDruidCurrentCoaMechanics.ts b/src/game/romDruidCurrentCoaMechanics.ts new file mode 100644 index 00000000..ae9561a7 --- /dev/null +++ b/src/game/romDruidCurrentCoaMechanics.ts @@ -0,0 +1,100 @@ +/** + * Small source-backed rules for Druid mechanics that differ from the local + * RuneWaker snapshot. These helpers describe outcomes only; the combat model + * does not currently track NPC faction, caster reputation, player death debt, + * or the required amulets at the moment of resurrection. + * + * Current CoA sources: + * - https://chroniclesofarcadia.com/en/wiki/skills/list/8?locale=en + * - https://chroniclesofarcadia.com/en/wiki/skills/list/8-9 + * + * Local RuneWaker IDs/pairs: + * - Druid primary Spirit Guidance 493536 (local component 503805) + * - Druid primary Rebirth 493537 (component 503806) + * - Druid primary Advanced Rebirth 493559 (component 504134; item 203606, + * Amulet of Light) + * - Druid primary Supreme Rebirth 493560 (component 504135; item 203605, + * Golden Amulet) + */ + +export const ROM_COA_DRUID_SPIRIT_GUIDANCE_ID = 493536; +export const ROM_COA_DRUID_REBIRTH_ID = 493537; +export const ROM_COA_DRUID_ADVANCED_REBIRTH_ID = 493559; +export const ROM_COA_DRUID_SUPREME_REBIRTH_ID = 493560; + +export const ROM_COA_DRUID_AMULET_OF_LIGHT_ITEM_ID = 203606; +export const ROM_COA_DRUID_GOLDEN_AMULET_ITEM_ID = 203605; + +export type RomCoaSpiritGuidanceFactionOutcome = + | "player-target-prohibited" + | "becomes-friendly" + | "remains-hostile" + | "unknown-reputation"; + +/** + * CoA says Spirit Guidance cannot be used on players. For NPCs, nonnegative + * caster reputation makes the target friendly; negative reputation leaves it + * hostile. Unknown reputation stays unknown instead of assuming conversion. + * + * This intentionally does not supply a duration: the current CoA page lists + * 16.2 seconds for the +55 skill value, but gives no rank-to-duration formula. + * The local RuneWaker component's 3-second value therefore cannot be carried + * over as the current CoA duration for every cast. + */ +export function romCoaSpiritGuidanceFactionOutcome(args: { + readonly targetKind: "npc" | "player"; + readonly casterReputation: number | null; +}): RomCoaSpiritGuidanceFactionOutcome { + if (args.targetKind === "player") return "player-target-prohibited"; + if (args.casterReputation === null || !Number.isFinite(args.casterReputation)) { + return "unknown-reputation"; + } + return args.casterReputation < 0 ? "remains-hostile" : "becomes-friendly"; +} + +export interface RomCoaDruidRebirthDebtRule { + /** The exact percentage stated by the current CoA skill tooltip. */ + readonly debtReductionPercent: 30 | 45 | 75; + /** Amulet conditions for the quantified skill variant. */ + readonly itemRule: + | { readonly kind: "optional-unquantified-bonus"; readonly itemIds: readonly [number, number] } + | { readonly kind: "required"; readonly itemId: number }; + /** + * Basic Rebirth's optional amulet bonus is stated but not quantified by CoA. + * The advanced and supreme tooltips already include their required amulet + * in the stated 45% and 75% effects. + */ + readonly extraDebtReductionPercent: number | null; +} + +const DRUID_REBIRTH_RULES: Readonly> = { + [ROM_COA_DRUID_REBIRTH_ID]: { + debtReductionPercent: 30, + itemRule: { + kind: "optional-unquantified-bonus", + itemIds: [ROM_COA_DRUID_GOLDEN_AMULET_ITEM_ID, ROM_COA_DRUID_AMULET_OF_LIGHT_ITEM_ID], + }, + extraDebtReductionPercent: null, + }, + [ROM_COA_DRUID_ADVANCED_REBIRTH_ID]: { + debtReductionPercent: 45, + itemRule: { kind: "required", itemId: ROM_COA_DRUID_AMULET_OF_LIGHT_ITEM_ID }, + extraDebtReductionPercent: 0, + }, + [ROM_COA_DRUID_SUPREME_REBIRTH_ID]: { + debtReductionPercent: 75, + itemRule: { kind: "required", itemId: ROM_COA_DRUID_GOLDEN_AMULET_ITEM_ID }, + extraDebtReductionPercent: 0, + }, +}; + +/** + * Look up the quantified CoA debt-reduction rule by exact local primary-skill + * ID. This reports mechanics metadata without inventing a debt unit, rounding + * rule, inventory state, or the unspecified optional bonus on basic Rebirth. + */ +export function romCoaDruidRebirthDebtRule( + sourceSkillId: number, +): RomCoaDruidRebirthDebtRule | null { + return DRUID_REBIRTH_RULES[sourceSkillId] ?? null; +} diff --git a/src/game/romDruidMageCoaCatalog.test.ts b/src/game/romDruidMageCoaCatalog.test.ts new file mode 100644 index 00000000..9f10e203 --- /dev/null +++ b/src/game/romDruidMageCoaCatalog.test.ts @@ -0,0 +1,88 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION, + ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID, +} from "./romDruidMageInspirationRuntime"; +import { + ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION, + ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, +} from "./romMageDruidGreenGuardianRuntime"; + +describe("current CoA Druid/Mage Inspiration catalog entry", () => { + const passive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID + && ability.classId === "rom-druid" && ability.secondaryClassId === "rom-mage"); + + it("updates the existing generated exact-pair passive without adding a skill row", () => { + expect(passive).toBeDefined(); + expect(passive).toMatchObject({ + classId: "rom-druid", + secondaryClassId: "rom-mage", + dbcSpellId: ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID, + name: "Inspiration", + unlockLevel: 30, + sourceUnlockLevel: 30, + passive: true, + romSkillGroup: "passive", + target: "self", + castTimeMs: 0, + cooldownMs: 0, + costs: [], + effects: [], + }); + expect(passive?.id).toBe("rom-druid-rom-mage-elite-30"); + expect(ROM_ALL_ABILITIES.filter((ability) => ability.dbcSpellId === ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID)) + .toHaveLength(1); + }); + + it("uses current CoA spend-trigger values in both the passive and its rank tooltip", () => { + expect(passive?.description).toBe(ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION); + expect(passive?.description).toContain("whenever you spend Nature's Power"); + expect(passive?.description).toContain("Physical Attack Speed and Casting Speed by 2% per stack"); + expect(passive?.description).toContain("up to 10 stacks for 10 seconds"); + expect(passive?.description).toContain("cannot be proven identical to local Fireball 490204"); + expect(passive?.description).not.toMatch(/chance.*Fireball|next spell.*1 second/i); + expect(passive?.ranks).toHaveLength(1); + expect(passive?.ranks?.[0]).toMatchObject({ + spellId: ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID, + costs: [], + effects: [], + description: ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION, + }); + }); +}); + +describe("current CoA Mage/Druid Green Guardian catalog entry", () => { + const skill = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID + && ability.classId === "rom-mage" && ability.secondaryClassId === "rom-druid"); + + it("turns only the existing exact-pair row into the current level-25 instant self skill", () => { + expect(skill).toMatchObject({ + id: "rom-mage-rom-druid-elite-30", + classId: "rom-mage", + secondaryClassId: "rom-druid", + dbcSpellId: ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, + unlockLevel: 25, + passive: false, + romSkillGroup: "elite", + target: "self", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 0, + costs: [], + effects: [{ kind: "apply-aura" }], + }); + expect(skill?.description).toBe(ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION); + expect(skill?.ranks?.[0]).toMatchObject({ + level: 25, + spellId: ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, + castTimeMs: 0, + cooldownMs: 0, + costs: [], + description: ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION, + effects: [{ kind: "apply-aura" }], + }); + expect(ROM_ALL_ABILITIES.filter((ability) => ability.dbcSpellId === ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID)) + .toHaveLength(1); + }); +}); diff --git a/src/game/romDruidMageInspiration.integration.test.ts b/src/game/romDruidMageInspiration.integration.test.ts new file mode 100644 index 00000000..1427b34f --- /dev/null +++ b/src/game/romDruidMageInspiration.integration.test.ts @@ -0,0 +1,188 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_DRUID_MAGE_INSPIRATION_AURA_TAG, + romDruidMageInspirationApplySpendStack, + romDruidMageInspirationHastePercent, +} from "./romDruidMageInspirationRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; + +const EARTH_CHAIN_ID = "rom-druid-rom-mage-elite-15"; +const earthChain = ROM_ALL_ABILITIES.find((ability) => ability.id === EARTH_CHAIN_ID); + +function inspirationAura(targetId: string) { + return useCombatStore.getState().auras.find((aura) => aura.targetId === targetId + && aura.definition.utilityTags?.includes(ROM_DRUID_MAGE_INSPIRATION_AURA_TAG)); +} + +function priest(name: string, seed: string, index: number) { + return createConfiguredPartyMember({ + name, + classId: "rom-priest", + specialization: "Primary", + role: "damage", + }, 45, index, seed); +} + +describe("CoA Druid/Mage Inspiration player and companion integration", () => { + beforeEach(() => { + resetPartyRuntimeClock(); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + raceId: "rom-human", + level: 45, + role: "healer", + }); + usePartyStore.getState().initializeParty( + "inspiration-party-test", 45, useCombatStore.getState().health, "healer", 4, "rom", + ); + }); + + it("awards one nearby-party stack for a player's completed Nature Power spend and applies cast haste", () => { + if (!earthChain) throw new Error("Missing generated Druid/Mage Earth Chain row"); + useCombatStore.getState().initializeCharacter({ + classId: "rom-druid", + secondaryClassId: "rom-mage", + raceId: "rom-elf", + level: 45, + role: "damage", + }); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + + const seed = "inspiration-player-spend"; + const edge = priest("Range Edge", seed, 0); + const outside = priest("Outside Range", seed, 1); + const fallen = { ...priest("Fallen Ally", seed, 2), health: 0 }; + usePartyStore.setState({ members: [edge, outside, fallen] }); + registerPartyRuntimePosition(edge.id, [3, 4, 0]); + registerPartyRuntimePosition(outside.id, [5.01, 0, 0]); + registerPartyRuntimePosition(fallen.id, [1, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + useCombatStore.setState((state) => ({ + resourcePools: { ...state.resourcePools, "nature-power": 1 }, + maxResourcePools: { ...state.maxResourcePools, "nature-power": 10 }, + })); + const targetId = "inspiration-player-target"; + useCombatStore.getState().registerMob(targetId, { name: "Target", level: 1, maxHealth: 100_000, xpReward: 0 }); + setMobPosition(targetId, [2, 0, 0]); + useCombatStore.getState().selectMob(targetId); + + expect(useCombatStore.getState().castAbility(EARTH_CHAIN_ID, { + origin: [0, 0, 0], targetActorId: targetId, now: 1_000, + }).ok).toBe(true); + const unbuffedCastDuration = useCombatStore.getState().activeCast?.originalDurationMs ?? 0; + expect(unbuffedCastDuration).toBeGreaterThan(0); + useCombatStore.getState().tick(2, 3_000); + + expect(useCombatStore.getState().resourcePools["nature-power"]).toBe(0); + expect(inspirationAura(PLAYER_AGGRO_ID)).toMatchObject({ stacks: 1, expiresAt: 13_000 }); + expect(inspirationAura(edge.id)?.stacks).toBe(1); + expect(inspirationAura(outside.id)).toBeUndefined(); + expect(inspirationAura(fallen.id)).toBeUndefined(); + + expect(useCombatStore.getState().castAbility(EARTH_CHAIN_ID, { + origin: [0, 0, 0], targetActorId: targetId, now: 7_000, + }).ok).toBe(true); + expect(useCombatStore.getState().activeCast?.originalDurationMs).toBeLessThan(unbuffedCastDuration); + }); + + it("awards one caster-centered stack when a generated Druid/Mage companion spends Nature Power", () => { + if (!earthChain) throw new Error("Missing generated Druid/Mage Earth Chain row"); + const seed = "inspiration-companion-spend"; + const caster = createConfiguredPartyMember({ + name: "Druid/Mage", + classId: "rom-druid", + secondaryClassId: "rom-mage", + specialization: "Primary", + role: "damage", + }, 45, 0, seed); + const outside = priest("Outside Range", seed, 1); + usePartyStore.setState({ + members: [{ + ...caster, + resourcePools: { ...caster.resourcePools, "nature-power": 1 }, + activeCast: { + abilityId: EARTH_CHAIN_ID, + school: "nature", + mode: "cast", + startedAt: 0, + completesAt: 1_000, + originalDurationMs: 1_000, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: "inspiration-companion-target", + }, + activeCastTargetId: "inspiration-companion-target", + status: "attacking", + }, outside], + command: "attack", + activeMobId: "inspiration-companion-target", + }); + registerPartyRuntimePosition(caster.id, [0, 0, 0]); + registerPartyRuntimePosition(outside.id, [5.01, 0, 0]); + useCombatStore.getState().synchronizeActors(); + useCombatStore.getState().registerMob("inspiration-companion-target", { + name: "Target", level: 1, maxHealth: 100_000, xpReward: 0, + }); + setMobPosition("inspiration-companion-target", [2, 0, 0]); + useCombatStore.getState().damageMob("inspiration-companion-target", 1, 500); + + advanceDungeonPartyCombat(1_000); + + expect(usePartyStore.getState().members[0]?.resourcePools["nature-power"]).toBe(0); + expect(inspirationAura(caster.id)?.stacks).toBe(1); + expect(inspirationAura(PLAYER_AGGRO_ID)?.stacks).toBe(1); + expect(inspirationAura(outside.id)).toBeUndefined(); + }); + + it("applies Inspiration spell haste only once to a Mage receiving the party buff", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-mage", + secondaryClassId: "rom-druid", + raceId: "rom-elf", + level: 45, + role: "damage", + }); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + + const targetId = "inspiration-mage-target"; + useCombatStore.getState().registerMob(targetId, { name: "Target", level: 1, maxHealth: 100_000, xpReward: 0 }); + setMobPosition(targetId, [2, 0, 0]); + useCombatStore.getState().selectMob(targetId); + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.id === "rom-mage-primary-1"); + expect(ability?.castTimeMs).toBe(3_000); + + expect(useCombatStore.getState().castAbility("rom-mage-primary-1", { + origin: [0, 0, 0], targetActorId: targetId, now: 1_000, + }).ok).toBe(true); + const unbuffedDuration = useCombatStore.getState().activeCast?.originalDurationMs ?? 0; + expect(unbuffedDuration).toBeGreaterThan(0); + useCombatStore.getState().tick(3, 4_000); + useCombatStore.setState((state) => ({ + auras: [...romDruidMageInspirationApplySpendStack( + state.auras, "druid-mage-source", [PLAYER_AGGRO_ID], 5_000, + )], + })); + expect(inspirationAura(PLAYER_AGGRO_ID)?.stacks).toBe(1); + expect(romDruidMageInspirationHastePercent( + useCombatStore.getState().auras, PLAYER_AGGRO_ID, 5_000, + )).toBe(2); + + expect(useCombatStore.getState().castAbility("rom-mage-primary-1", { + origin: [0, 0, 0], targetActorId: targetId, now: 5_000, + }).ok).toBe(true); + expect(useCombatStore.getState().activeCast?.startedAt).toBe(5_000); + const buffedDuration = useCombatStore.getState().activeCast?.originalDurationMs ?? 0; + const durationReduction = 1 - buffedDuration / unbuffedDuration; + expect(durationReduction).toBeGreaterThan(0.01); + expect(durationReduction).toBeLessThan(0.03); + }); +}); diff --git a/src/game/romDruidMageInspirationRuntime.test.ts b/src/game/romDruidMageInspirationRuntime.test.ts new file mode 100644 index 00000000..c5da92d9 --- /dev/null +++ b/src/game/romDruidMageInspirationRuntime.test.ts @@ -0,0 +1,77 @@ +import { describe, expect, it } from "vitest"; +import { + isRomDruidMagePair, + ROM_DRUID_MAGE_INSPIRATION_DURATION_MS, + ROM_DRUID_MAGE_INSPIRATION_MAX_STACKS, + ROM_DRUID_MAGE_INSPIRATION_RADIUS, + romDruidMageInspirationApplySpendStack, + romDruidMageInspirationHastePercent, + romDruidMageInspirationRecipientIds, + romDruidMageInspirationBonusPercent, + romDruidMageInspirationStacksAfterSpend, +} from "./romDruidMageInspirationRuntime"; + +describe("current CoA Druid/Mage Inspiration", () => { + it("gates the current passive to the exact Druid/Mage pair", () => { + expect(isRomDruidMagePair({ classId: "rom-druid", secondaryClassId: "rom-mage" })).toBe(true); + expect(isRomDruidMagePair({ classId: "rom-mage", secondaryClassId: "rom-druid" })).toBe(false); + expect(isRomDruidMagePair({ classId: "rom-druid", secondaryClassId: "rom-rogue" })).toBe(false); + }); + + it("adds one stack for each positive Nature's Power spend event, regardless of amount", () => { + expect(romDruidMageInspirationStacksAfterSpend(0, 1, true)).toBe(1); + expect(romDruidMageInspirationStacksAfterSpend(3, 5, true)).toBe(4); + expect(romDruidMageInspirationStacksAfterSpend(3, 0, true)).toBe(3); + expect(romDruidMageInspirationStacksAfterSpend(3, -1, true)).toBe(3); + expect(romDruidMageInspirationStacksAfterSpend(3, 1, false)).toBe(3); + }); + + it("caps at ten stacks for a 20% total attack-speed and cast-speed bonus", () => { + expect(romDruidMageInspirationStacksAfterSpend(9, 1, true)).toBe(ROM_DRUID_MAGE_INSPIRATION_MAX_STACKS); + expect(romDruidMageInspirationStacksAfterSpend(10, 1, true)).toBe(10); + expect(romDruidMageInspirationBonusPercent(10)).toBe(20); + expect(romDruidMageInspirationBonusPercent(99)).toBe(20); + expect(ROM_DRUID_MAGE_INSPIRATION_DURATION_MS).toBe(10_000); + expect(ROM_DRUID_MAGE_INSPIRATION_RADIUS).toBe(5); + }); + + it("adds one party-recipient stack per spend and refreshes the shared 10-second aura", () => { + const first = romDruidMageInspirationApplySpendStack([], "druid", ["player", "ally"], 1_000); + const second = romDruidMageInspirationApplySpendStack(first, "druid", ["player", "player"], 6_000); + const playerAura = second.find((aura) => aura.targetId === "player"); + const allyAura = second.find((aura) => aura.targetId === "ally"); + + expect(second).toHaveLength(2); + expect(playerAura?.stacks).toBe(2); + expect(playerAura?.appliedAt).toBe(6_000); + expect(playerAura?.expiresAt).toBe(16_000); + expect(playerAura?.definition.modifiers).toContainEqual({ + kind: "stat", stat: "melee-haste", operation: "flat", value: 2, perStack: true, + }); + expect(playerAura?.definition.modifiers).toContainEqual({ + kind: "stat", stat: "ranged-haste", operation: "flat", value: 2, perStack: true, + }); + expect(playerAura?.definition.modifiers).toContainEqual({ + kind: "stat", stat: "spell-haste", operation: "flat", value: 2, perStack: true, + }); + expect(romDruidMageInspirationHastePercent(second, "player", 6_000)).toBe(4); + expect(allyAura?.stacks).toBe(1); + expect(allyAura?.expiresAt).toBe(11_000); + }); + + it("selects only living modeled recipients at or inside the interpreted five-unit radius", () => { + expect(romDruidMageInspirationRecipientIds([0, 0, 0], [ + { id: "caster", position: [0, 0, 0], living: true }, + { id: "edge", position: [3, 4, 0], living: true }, + { id: "outside", position: [5.01, 0, 0], living: true }, + { id: "dead", position: [1, 0, 0], living: false }, + { id: "unplaced", position: null, living: true }, + ])).toEqual(["caster", "edge"]); + }); + + it("normalizes malformed stack counts at the documented zero-to-ten bounds", () => { + expect(romDruidMageInspirationStacksAfterSpend(-4, 0, true)).toBe(0); + expect(romDruidMageInspirationStacksAfterSpend(2.9, 0, true)).toBe(2); + expect(romDruidMageInspirationBonusPercent(-2)).toBe(0); + }); +}); diff --git a/src/game/romDruidMageInspirationRuntime.ts b/src/game/romDruidMageInspirationRuntime.ts new file mode 100644 index 00000000..a3dbd8f1 --- /dev/null +++ b/src/game/romDruidMageInspirationRuntime.ts @@ -0,0 +1,125 @@ +import { applyAura, type ActiveAura, type AuraDefinition, type CombatEntityId } from "./combatAuras"; + +/** Current CoA Druid/Mage Inspiration stack behavior. */ +export const ROM_DRUID_MAGE_INSPIRATION_PASSIVE_ID = 494322; +export const ROM_DRUID_MAGE_INSPIRATION_MAX_STACKS = 10; +export const ROM_DRUID_MAGE_INSPIRATION_BONUS_PER_STACK_PERCENT = 2; +export const ROM_DRUID_MAGE_INSPIRATION_DURATION_MS = 10_000; +/** Current CoA skill page's `Range: 50`, converted with the project's 10:1 CoA range convention. */ +export const ROM_DRUID_MAGE_INSPIRATION_RADIUS = 5; +export const ROM_DRUID_MAGE_INSPIRATION_AURA_TAG = "rom-druid-mage-inspiration"; +export const ROM_DRUID_MAGE_INSPIRATION_DESCRIPTION = + "Passive: whenever you spend Nature's Power, nearby party members gain one Inspiration stack, increasing Physical Attack Speed and Casting Speed by 2% per stack, up to 10 stacks for 10 seconds. CoA also describes a Fireball travel-speed and Nature's Power rider, but current CoA Fireball 499943 cannot be proven identical to local Fireball 490204, so those clauses are not implemented."; + +export type RomDruidMageInspirationPosition = readonly [number, number, number]; + +export interface RomDruidMageInspirationRecipient { + readonly id: CombatEntityId; + readonly position: RomDruidMageInspirationPosition | null; + readonly living: boolean; +} + +/** Select modeled living party actors inside the interpreted caster-centered CoA Range 50. */ +export function romDruidMageInspirationRecipientIds( + sourcePosition: RomDruidMageInspirationPosition, + candidates: readonly RomDruidMageInspirationRecipient[], +): readonly CombatEntityId[] { + const radiusSquared = ROM_DRUID_MAGE_INSPIRATION_RADIUS ** 2; + return [...new Set(candidates.filter((candidate) => { + if (!candidate.living || !candidate.position) return false; + const dx = candidate.position[0] - sourcePosition[0]; + const dy = candidate.position[1] - sourcePosition[1]; + const dz = candidate.position[2] - sourcePosition[2]; + return dx * dx + dy * dy + dz * dz <= radiusSquared; + }).map((candidate) => candidate.id))]; +} + +export function romDruidMageInspirationAuraDefinition(): AuraDefinition { + return { + id: "rom:druid-mage:inspiration", + name: "Inspiration", + description: "Increases physical attack speed and casting speed by 2% per stack.", + disposition: "buff", + durationMs: ROM_DRUID_MAGE_INSPIRATION_DURATION_MS, + maxStacks: ROM_DRUID_MAGE_INSPIRATION_MAX_STACKS, + stackBehavior: "add", + uniqueBySource: false, + utilityTags: [ROM_DRUID_MAGE_INSPIRATION_AURA_TAG], + modifiers: [ + { + kind: "stat", + stat: "melee-haste", + operation: "flat", + value: ROM_DRUID_MAGE_INSPIRATION_BONUS_PER_STACK_PERCENT, + perStack: true, + }, + { + kind: "stat", + stat: "ranged-haste", + operation: "flat", + value: ROM_DRUID_MAGE_INSPIRATION_BONUS_PER_STACK_PERCENT, + perStack: true, + }, + { + kind: "stat", + stat: "spell-haste", + operation: "flat", + value: ROM_DRUID_MAGE_INSPIRATION_BONUS_PER_STACK_PERCENT, + perStack: true, + }, + ], + }; +} + +/** Apply one stack to each recipient selected by the caller; the shared aura refreshes for 10 seconds. */ +export function romDruidMageInspirationApplySpendStack( + current: readonly ActiveAura[], + sourceId: CombatEntityId, + recipientIds: readonly CombatEntityId[], + now: number, +): readonly ActiveAura[] { + let auras = current; + const definition = romDruidMageInspirationAuraDefinition(); + for (const targetId of new Set(recipientIds)) { + auras = applyAura(auras, { definition, sourceId, targetId, now, stacks: 1 }).auras; + } + return auras; +} + +export function romDruidMageInspirationHastePercent( + auras: readonly ActiveAura[], + targetId: string, + now: number, +): number { + return auras + .filter((aura) => aura.targetId === targetId + && aura.definition.utilityTags?.includes(ROM_DRUID_MAGE_INSPIRATION_AURA_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)) + .reduce((total, aura) => total + romDruidMageInspirationBonusPercent(aura.stacks), 0); +} + +export function isRomDruidMagePair(row: { + readonly classId?: string; + readonly secondaryClassId?: string | null; +}): boolean { + return row.classId === "rom-druid" && row.secondaryClassId === "rom-mage"; +} + +/** + * CoA gives one Inspiration stack when the caster spends Nature's Power. + * This resolves one positive resource-spend event, not each point spent. + */ +export function romDruidMageInspirationStacksAfterSpend( + currentStacks: number, + spentNaturePower: number, + passiveLearned: boolean, +): number { + const stacks = Math.max(0, Math.min(ROM_DRUID_MAGE_INSPIRATION_MAX_STACKS, Math.floor(currentStacks))); + if (!passiveLearned || !(spentNaturePower > 0)) return stacks; + return Math.min(ROM_DRUID_MAGE_INSPIRATION_MAX_STACKS, stacks + 1); +} + +export function romDruidMageInspirationBonusPercent(stacks: number): number { + const boundedStacks = Math.max(0, Math.min(ROM_DRUID_MAGE_INSPIRATION_MAX_STACKS, Math.floor(stacks))); + return boundedStacks * ROM_DRUID_MAGE_INSPIRATION_BONUS_PER_STACK_PERCENT; +} diff --git a/src/game/romDruidNaturePower.test.ts b/src/game/romDruidNaturePower.test.ts index 5dca6584..c22b3ff5 100644 --- a/src/game/romDruidNaturePower.test.ts +++ b/src/game/romDruidNaturePower.test.ts @@ -12,10 +12,15 @@ const empty: RomCastMechanics = { targetHealthPercent: 1, }; -function cast(spellId: number, naturePower: number, passiveTags: readonly string[] = []): readonly AbilityEffect[] { +function cast( + spellId: number, + naturePower: number, + passiveTags: readonly string[] = [], + targetTags: readonly string[] = [], +): readonly AbilityEffect[] { const ability = ROM_ALL_ABILITIES.find((entry) => entry.dbcSpellId === spellId); expect(ability, `RoM Druid spell ${spellId}`).toBeDefined(); - return romEffectsForCast(ability!, { ...empty, naturePower, passiveTags }); + return romEffectsForCast(ability!, { ...empty, naturePower, passiveTags, targetTags }); } function passiveTag(spellId: number): string { @@ -188,17 +193,15 @@ describe("RoM Druid passive state triggers", () => { .toMatchObject({ ticks: 6, intervalMs: 2_000 }); }); - it("extends Recover by six seconds with Extended Recovery and gates Knee Ulcer's five-second root", () => { + it("extends Recover by six seconds and does not retain the obsolete Druid/Rogue Knee Ulcer root", () => { const recoverBase = cast(493528, 0); const recoverExtended = cast(493528, 0, [passiveTag(494200)]); expect(recoverBase.find((effect) => effect.kind === "hot")).toMatchObject({ ticks: 7, intervalMs: 2_000 }); expect(recoverExtended.find((effect) => effect.kind === "hot")).toMatchObject({ ticks: 10, intervalMs: 2_000 }); - expect(cast(494321, 0).filter((effect) => effect.kind === "apply-aura" && effect.control?.kind === "root")) + expect(cast(494321, 1, [], ["rom-druid-corrosive-poison"])).toHaveLength(3); + expect(cast(494321, 1, [passiveTag(499944)], ["rom-druid-corrosive-poison"]) + .filter((effect) => effect.kind === "apply-aura" && effect.control?.kind === "root")) .toHaveLength(0); - expect(cast(494321, 0, [passiveTag(499944)]).filter((effect) => effect.kind === "apply-aura" - && effect.control?.kind === "root")).toEqual([ - expect.objectContaining({ control: { kind: "root" }, aura: expect.objectContaining({ durationMs: 5_000 }) }), - ]); }); }); diff --git a/src/game/romDruidOverrides.ts b/src/game/romDruidOverrides.ts index 7ea6a6da..3b21afdd 100644 --- a/src/game/romDruidOverrides.ts +++ b/src/game/romDruidOverrides.ts @@ -1,5 +1,14 @@ import type { AbilityEffect } from "./abilityCatalog"; import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; +import { + isRomDruidRoguePair, + romDruidRogueCorrosivePoisonEffect, + romDruidRogueCooldownRider, +} from "./romDruidRogueCurrentCoa"; +import { + isRomMageDruidPair, + romMageDruidGreenGuardianAuraEffect, +} from "./romMageDruidGreenGuardianRuntime"; export const ROM_DRUID_GREEN_GUARDIAN_TAG = "rom-druid-green-guardian"; export const ROM_DRUID_MOTHER_EARTH_PROTECTION_TAG = "rom-druid-mother-earth-protection"; @@ -85,6 +94,22 @@ export function overrideRomDruidEffects( row: RomGeneratedAbilityLike, translated: readonly AbilityEffect[], ): readonly AbilityEffect[] | null { + if (isRomDruidRoguePair(row)) { + if (row.sourceSkillId === 494024) return [romDruidRogueCorrosivePoisonEffect()]; + if (row.sourceSkillId === 494321) return [ + { kind: "damage", coefficient: 3.297, school: "shadow" }, + { + kind: "utility", + action: "class-script", + effectType: -1, + auraType: -1, + miscValue: 0, + triggerSpellId: 494024, + durationMs: 12_000, + }, + ]; + if (row.sourceSkillId === 494023) return []; + } switch (row.sourceSkillId) { case 493533: case 493558: { // Both Mother Earth's Protection ranks can trigger Green Guardian on expiry. @@ -101,7 +126,9 @@ export function overrideRomDruidEffects( }; }); } - case 494331: // Keep source HoT payloads on the learned passive for its expiry trigger. + case 494331: + if (isRomMageDruidPair(row)) return [romMageDruidGreenGuardianAuraEffect()]; + // Keep RuneWaker's legacy HoTs only for rows outside the current CoA pair. return [ passiveState(494331, row.name, ROM_DRUID_GREEN_GUARDIAN_TAG), ...translated.filter((effect) => effect.kind === "hot"), @@ -143,8 +170,8 @@ export function overrideRomDruidEffects( ...effect, falloffPerJump: 0.7, })); - case 494321: // Its root is supplied by the optional Knee Ulcer passive. - return translated.filter((effect) => effect.kind !== "apply-aura" || effect.control?.kind !== "root"); + case 494321: // The CoA rework replaces RuneWaker's healing reduction and Knee Ulcer root. + return translated.filter((effect) => effect.kind === "damage"); case 494938: // 505938 supplies the 40-second lifetime; the tooltip states 4-second party pulses. return [spiritOfLifeHot(translated)]; default: @@ -293,11 +320,23 @@ export function romDruidCastEffects( && !(empowered && effect.kind === "resource" && effect.resource === "nature-power")); return [...selectedHits, ...selected, ...(empowered ? [naturePowerDrain()] : [])]; } + case 499956: { // Briar Technique unlocks this source row, with both DMG branches on distinct components. + const selectedHits = empowered + ? [damage[1], damage[3]].filter((effect) => effect !== undefined) + : [damage[0], damage[2]].filter((effect) => effect !== undefined); + if (selectedHits.length !== 2) return effects; + const selected = effects.filter((effect) => effect.kind !== "damage" + && !(empowered && effect.kind === "resource" && effect.resource === "nature-power")); + return [...selectedHits, ...selected, ...(empowered ? [naturePowerDrain()] : [])]; + } case 494022: { // Poisonous Widow Embrace selects one damage component and refunds a spent point. const selectedDamage = damage[empowered ? 1 : 0]; if (!selectedDamage) return effects; const selected = effects.filter((effect) => effect.kind !== "damage" || effect === selectedDamage); - return empowered ? spendBeforeNaturePowerRefund(selected) : selected; + const branch = empowered ? spendBeforeNaturePowerRefund(selected) : selected; + return isRomDruidRoguePair(ability) + ? [...branch, romDruidRogueCooldownRider()] + : branch; } case 493528: { // Extended Recovery's source-backed duration increase; proc chance is absent. if (!hasTag(passiveTags, "rom-druid-extended-recovery")) return effects; @@ -305,24 +344,13 @@ export function romDruidCastEffects( ? { ...effect, ticks: effect.ticks + 3 } : effect); } - case 494321: { // The passive's root is only emitted when Knee Ulcer is learned. - if (!hasTag(passiveTags, "rom-druid-knee-ulcer")) return effects; - return [...effects, { - kind: "apply-aura", - recipient: "ability-target", - aura: { - id: "rom-druid-knee-ulcer-root", - name: "Knee Ulcer", - disposition: "debuff", - durationMs: 5_000, - dispelCategory: "magic", - }, - control: { kind: "root" }, - sourceEffectType: -1, - sourceAuraType: -1, - miscValue: 0, - triggerSpellId: 499944, - }]; + case 494321: { // CoA's current poison-gated channel replaces the old healing-reduction/root row. + if (!isRomDruidRoguePair(ability)) return effects; + return [ + ...effects.filter((effect) => effect.kind === "damage" || (effect.kind === "utility" + && effect.action === "class-script" && effect.triggerSpellId === 494024)), + romDruidRogueCooldownRider(), + ]; } default: return effects; diff --git a/src/game/romDruidRogueCurrentCoa.test.ts b/src/game/romDruidRogueCurrentCoa.test.ts new file mode 100644 index 00000000..26fd235c --- /dev/null +++ b/src/game/romDruidRogueCurrentCoa.test.ts @@ -0,0 +1,138 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES, ROM_ELITE_ABILITIES } from "./romAbilityCatalog"; +import { channelAmountEffects, channelPulseAt, channelPulseCount } from "./combatChannelAmounts"; +import { romAbilityRequiredTargetStateTag, romEffectsForCast, type RomCastMechanics } from "./romCombatMechanics"; +import { ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG } from "./romDruidRogueCurrentCoa"; + +const empty: RomCastMechanics = { + sealStacks: 0, + bleedCount: 0, + charged: false, + mainHandDagger: false, + casterMaxHealth: 10_000, + targetHealthPercent: 1, +}; + +function ability(spellId: number) { + const found = ROM_ALL_ABILITIES.find((entry) => entry.dbcSpellId === spellId + && entry.classId === "rom-druid" && entry.secondaryClassId === "rom-rogue"); + expect(found, `Druid/Rogue ability ${spellId}`).toBeDefined(); + return found!; +} + +describe("current CoA Druid/Rogue Necrotic Wound profile", () => { + it("uses the sourced gate, costs, channel, range, radius, and three full per-hit values", () => { + const wound = ability(494321); + expect(wound).toMatchObject({ + name: "Necrotic Wound", + target: "hostile", + range: { min: 0, max: 15 }, + radius: 8, + targeting: { shape: "circle", radius: 8 }, + castMode: "channel", + castTimeMs: 1_500, + channelPulses: 3, + channelTickMs: 500, + cooldownMs: 0, + costs: [ + { resource: "mana", amount: 4, percentage: true }, + { resource: "nature-power", amount: 1 }, + ], + }); + expect(romAbilityRequiredTargetStateTag(wound)).toBe(ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG); + expect(romEffectsForCast(wound, { ...empty, naturePower: 1 })).toEqual([]); + + const currentEffects = romEffectsForCast(wound, { + ...empty, + naturePower: 1, + targetTags: [ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG], + }); + expect(currentEffects.filter((effect) => effect.kind === "apply-aura" + && effect.aura.modifiers?.some((modifier) => modifier.kind === "healing" && modifier.direction === "taken"))) + .toHaveLength(0); + expect(currentEffects.filter((effect) => effect.kind === "apply-aura" && effect.control?.kind === "root")) + .toHaveLength(0); + expect(currentEffects.filter((effect) => effect.kind === "damage")) + .toEqual([{ kind: "damage", coefficient: 3.297, school: "shadow" }]); + expect(currentEffects.filter((effect) => effect.kind === "utility" && effect.action === "class-script")) + .toEqual([expect.objectContaining({ triggerSpellId: 494024, durationMs: 12_000 })]); + expect(currentEffects.filter((effect) => effect.kind === "cooldown-reset")) + .toEqual([{ kind: "cooldown-reset", mode: "reduce", abilityName: "Sinister Request", amountMs: 1_000 }]); + + const channelAmounts = channelAmountEffects(wound, 3); + expect(channelAmounts).toEqual([{ effect: currentEffects.find((effect) => effect.kind === "damage"), multiplier: 1 }]); + expect(channelPulseCount(wound)).toBe(3); + expect([0, 1, 2].map((pulse) => channelPulseAt(wound, 1_000, 1_500, pulse))) + .toEqual([1_500, 2_000, 2_500]); + }); + + it("replaces Corrosive Poison with the current +105, one-second Dark DoT and adds the spread prerequisite", () => { + const poison = ability(494024); + const dot = poison.effects.find((effect) => effect.kind === "dot"); + expect(poison).toMatchObject({ + range: { max: 15 }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: 1_000, + costs: [{ resource: "energy", amount: 25 }], + }); + expect(dot).toMatchObject({ + kind: "dot", + school: "shadow", + basePoints: 11_342, + sourceLevel: 105, + ticks: 12, + intervalMs: 1_000, + tag: ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG, + }); + }); + + it("adds the exact one-second cooldown rider to both successful casts", () => { + const cooldownRiders = [494022, 494321].map((spellId) => romEffectsForCast(ability(spellId), { + ...empty, + naturePower: 1, + targetTags: spellId === 494321 ? [ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG] : [], + }).filter((effect) => effect.kind === "cooldown-reset")); + expect(cooldownRiders).toEqual([ + [{ kind: "cooldown-reset", mode: "reduce", abilityName: "Sinister Request", amountMs: 1_000 }], + [{ kind: "cooldown-reset", mode: "reduce", abilityName: "Sinister Request", amountMs: 1_000 }], + ]); + + const kneeUlcer = ROM_ELITE_ABILITIES.find((entry) => entry.dbcSpellId === 499944); + expect(kneeUlcer).toBeDefined(); + const passiveTag = kneeUlcer!.effects.find((effect) => effect.kind === "apply-aura"); + expect(passiveTag?.kind).toBe("apply-aura"); + const withObsoletePassive = romEffectsForCast(ability(494321), { + ...empty, + naturePower: 1, + targetTags: [ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG], + passiveTags: passiveTag?.kind === "apply-aura" ? passiveTag.aura.utilityTags : [], + }); + expect(withObsoletePassive.some((effect) => effect.kind === "apply-aura" && effect.control?.kind === "root")) + .toBe(false); + }); + + it("uses the current Sinister Request identity and does not leak the old Speed Catalysis aura", () => { + const request = ability(494023); + expect(request).toMatchObject({ + name: "Sinister Request", + target: "self", + range: { max: 5 }, + radius: 15, + cooldownMs: 15_000, + costs: [], + effects: expect.arrayContaining([ + { kind: "resource", amount: 100, resource: "mana", percentage: true, scope: "party" }, + { kind: "resource", amount: 100, resource: "rage", percentage: true, scope: "party" }, + { kind: "resource", amount: 100, resource: "focus", percentage: true, scope: "party" }, + { kind: "resource", amount: 100, resource: "energy", percentage: true, scope: "party" }, + { kind: "resource", amount: 100, resource: "psi", percentage: true, scope: "party" }, + { kind: "resource", amount: 100, resource: "nature-power", percentage: true, scope: "party" }, + ]), + }); + expect(request.description).toContain("restores the MP, Rage, Focus, Energy, Psi, and Nature's Power"); + expect(request.description).toContain("within radius 150"); + expect(request.description).toContain("Cooldown: 15 seconds"); + expect(request.description).not.toContain("attack and casting speed"); + }); +}); diff --git a/src/game/romDruidRogueCurrentCoa.ts b/src/game/romDruidRogueCurrentCoa.ts new file mode 100644 index 00000000..24a6e9f0 --- /dev/null +++ b/src/game/romDruidRogueCurrentCoa.ts @@ -0,0 +1,61 @@ +import type { AbilityEffect } from "./abilityCatalog"; + +export const ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG = "rom-druid-corrosive-poison"; + +export function isRomDruidRoguePair(row: { + readonly classId?: string; + readonly secondaryClassId?: string; +}): boolean { + return row.classId === "rom-druid" && row.secondaryClassId === "rom-rogue"; +} + +/** Current CoA's +105 Corrosive Poison value; lower levels use the simulator's source-level scaling. */ +export function romDruidRogueCorrosivePoisonEffect(): Extract { + return { + kind: "dot", + coefficient: 0, + school: "shadow", + basePoints: 11_342, + sourceLevel: 105, + ticks: 12, + intervalMs: 1_000, + tag: ROM_DRUID_ROGUE_CORROSIVE_POISON_TAG, + }; +} + +export function romDruidRogueCooldownRider(): AbilityEffect { + return { + kind: "cooldown-reset", + mode: "reduce", + abilityName: "Sinister Request", + amountMs: 1_000, + }; +} + +export const ROM_DRUID_ROGUE_SINISTER_REQUEST_RESOURCES = Object.freeze([ + "mana", + "rage", + "focus", + "energy", + "psi", + "nature-power", +] as const); + +export function romDruidRogueSinisterRequestEffects(): readonly AbilityEffect[] { + return ROM_DRUID_ROGUE_SINISTER_REQUEST_RESOURCES.map((resource) => ({ + kind: "resource" as const, + amount: 100, + resource, + percentage: true, + scope: "party" as const, + })); +} + +export const ROM_DRUID_ROGUE_NECROTIC_WOUND_DESCRIPTION = + "Costs 4% MP and 1 Nature's Power. Requires the target to have Corrosive Poison. Channels for 1.5 seconds and deals 329.7% Dark damage per hit over 3 hits to enemies within radius 80 around the target, then spreads Corrosive Poison to them. No cooldown. Each successful cast reduces Sinister Request's cooldown by 1 second."; + +export const ROM_DRUID_ROGUE_CORROSIVE_POISON_DESCRIPTION = + "Costs 25 Energy. Instantly applies Corrosive Poison to one target, dealing 11,342 Dark damage every second for 12 seconds. Range 150; 1-second cooldown."; + +export const ROM_DRUID_ROGUE_SINISTER_REQUEST_DESCRIPTION = + "Instantly restores the MP, Rage, Focus, Energy, Psi, and Nature's Power of party members within radius 150 to their maximum values. Cooldown: 15 seconds. Each successful Poisonous Widow Embrace or Necrotic Wound cast reduces this cooldown by 1 second."; diff --git a/src/game/romDruidRogueSinisterRequest.integration.test.ts b/src/game/romDruidRogueSinisterRequest.integration.test.ts new file mode 100644 index 00000000..d67d2533 --- /dev/null +++ b/src/game/romDruidRogueSinisterRequest.integration.test.ts @@ -0,0 +1,194 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore, type PartyMember } from "./partyStore"; +import { useCombatStore } from "./combatStore"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { ROM_DRUID_ROGUE_SINISTER_REQUEST_RESOURCES } from "./romDruidRogueCurrentCoa"; +import { abilityAtLevel, type ResourceType } from "./abilityCatalog"; + +const RESOURCE_TYPES = ROM_DRUID_ROGUE_SINISTER_REQUEST_RESOURCES as readonly ResourceType[]; +const STARTING_VALUES: Readonly> = { + mana: 20, + rage: 10, + focus: 10, + energy: 10, + psi: 1, + "nature-power": 1, + health: 0, + "runic-power": 0, + "holy-power": 0, + chi: 0, + "soul-power": 0, +}; + +function memberWithPools(seed: string, resources = RESOURCE_TYPES, index = 0): PartyMember { + const member = createConfiguredPartyMember({ + name: "Druid/Rogue", + classId: "rom-druid", + secondaryClassId: "rom-rogue", + raceId: "rom-elf", + specialization: "Druid/Rogue", + specializationId: "rom-druid:rom-rogue", + talentTreeId: "rom-druid-rom-rogue", + talentRanks: {}, + role: "damage", + }, 80, index, seed); + const resourcePools = Object.fromEntries( + resources.map((resource) => [resource, STARTING_VALUES[resource]]), + ) as Partial>; + return { + ...member, + resource: resourcePools[member.resourceType] ?? member.resource, + resourcePools, + }; +} + +function sinisterRequestId(): string { + const request = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 494023 + && ability.classId === "rom-druid" && ability.secondaryClassId === "rom-rogue"); + if (!request) throw new Error("Druid/Rogue Sinister Request catalog row is missing."); + return request.id; +} + +function assertPoolsAreFull(actorId: string, expectedResources: readonly ResourceType[]): void { + const resources = useCombatStore.getState().actors[actorId]?.resources; + expect(resources).toBeDefined(); + for (const resource of expectedResources) { + expect(resources![resource]?.current).toBe(resources![resource]?.maximum); + } +} + +describe("current CoA Druid/Rogue Sinister Request runtime", () => { + beforeEach(() => { + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useDungeonSimulationStore.setState({ sessionMode: "play" }); + useCombatStore.getState().initializeCharacter({ + classId: "rom-druid", + secondaryClassId: "rom-rogue", + level: 80, + xp: 0, + }); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + usePartyStore.getState().initializeParty("sinister-request-test", 80, + useCombatStore.getState().health, "damage", 3, "rom"); + }); + + it("fills the player's and nearby companions' existing pools, includes radius edge, and leaves outside/absent pools alone", () => { + const nearby = memberWithPools("sinister-player-nearby", RESOURCE_TYPES, 0); + const edge = memberWithPools("sinister-player-edge", ["mana", "energy"], 1); + const outside = memberWithPools("sinister-player-outside", RESOURCE_TYPES, 2); + usePartyStore.setState({ members: [nearby, edge, outside] }); + registerPartyRuntimePosition(nearby.id, [5, 0, 0]); + registerPartyRuntimePosition(edge.id, [15, 0, 0]); + registerPartyRuntimePosition(outside.id, [15.01, 0, 0]); + + useCombatStore.setState((state) => { + const maxResourcePools = { + ...state.maxResourcePools, + mana: 240, + rage: 100, + focus: 100, + energy: 100, + psi: 6, + "nature-power": 15, + }; + const resourcePools = { + ...state.resourcePools, + mana: 1, + rage: 1, + focus: 1, + energy: 1, + psi: 1, + "nature-power": 1, + }; + return { + maxResourcePools, + resourcePools, + maxResource: 240, + resource: 1, + }; + }); + useCombatStore.getState().synchronizeActors(); + + const beforeOutside = { ...useCombatStore.getState().actors[outside.id].resources }; + const abilityId = sinisterRequestId(); + const catalogRow = ROM_ALL_ABILITIES.find((ability) => ability.id === abilityId)!; + expect(abilityAtLevel(catalogRow, 80).effects).toHaveLength(RESOURCE_TYPES.length); + expect(useCombatStore.getState()).toMatchObject({ classId: "rom-druid", secondaryClassId: "rom-rogue" }); + const castResult = useCombatStore.getState().castAbility(abilityId, { targetActorId: null, now: 1_000 }); + expect(castResult).toMatchObject({ ok: true }); + + assertPoolsAreFull(PLAYER_AGGRO_ID, RESOURCE_TYPES); + assertPoolsAreFull(nearby.id, RESOURCE_TYPES); + assertPoolsAreFull(edge.id, ["mana", "energy"]); + expect(useCombatStore.getState().actors[edge.id].resources.focus).toBeUndefined(); + for (const resource of RESOURCE_TYPES) { + expect(useCombatStore.getState().actors[outside.id].resources[resource]).toEqual(beforeOutside[resource]); + } + + const events = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "resource" && event.abilityId === abilityId + )); + expect(events.filter((event) => event.targetActorId === PLAYER_AGGRO_ID)).toHaveLength(RESOURCE_TYPES.length); + expect(events.filter((event) => event.targetActorId === nearby.id)).toHaveLength(RESOURCE_TYPES.length); + expect(events.filter((event) => event.targetActorId === edge.id)).toHaveLength(2); + expect(events.some((event) => event.targetActorId === outside.id)).toBe(false); + expect(events.every((event) => event.sourceActorId === PLAYER_AGGRO_ID)).toBe(true); + }); + + it("applies a companion cast to the in-range party, caps each existing pool, and attributes resource events to the caster", () => { + const abilityId = sinisterRequestId(); + const casterBase = memberWithPools("sinister-companion-caster", RESOURCE_TYPES, 0); + const caster = { + ...casterBase, + activeCast: { + abilityId, + school: "nature" as const, + mode: "cast" as const, + startedAt: 0, + completesAt: 0, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0] as const, + targetId: casterBase.id, + }, + activeCastTargetId: casterBase.id, + status: "healing" as const, + }; + const nearby = memberWithPools("sinister-companion-nearby", RESOURCE_TYPES.filter((resource) => resource !== "psi"), 1); + const edge = memberWithPools("sinister-companion-edge", ["mana", "rage"], 2); + const outside = memberWithPools("sinister-companion-outside", RESOURCE_TYPES, 3); + usePartyStore.setState({ members: [caster, nearby, edge, outside] }); + registerPartyRuntimePosition(caster.id, [0, 0, 0]); + registerPartyRuntimePosition(nearby.id, [5, 0, 0]); + registerPartyRuntimePosition(edge.id, [15, 0, 0]); + registerPartyRuntimePosition(outside.id, [15.01, 0, 0]); + useCombatStore.getState().synchronizeActors(); + const beforeOutside = { ...useCombatStore.getState().actors[outside.id].resources }; + + advanceDungeonPartyCombat(1_000); + + assertPoolsAreFull(PLAYER_AGGRO_ID, ["mana"]); + assertPoolsAreFull(caster.id, RESOURCE_TYPES); + assertPoolsAreFull(nearby.id, RESOURCE_TYPES.filter((resource) => resource !== "psi")); + expect(useCombatStore.getState().actors[nearby.id].resources.psi).toBeUndefined(); + assertPoolsAreFull(edge.id, ["mana", "rage"]); + for (const resource of RESOURCE_TYPES) { + expect(useCombatStore.getState().actors[outside.id].resources[resource]).toEqual(beforeOutside[resource]); + } + + const events = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "resource" && event.abilityId === abilityId + )); + expect(events.filter((event) => event.targetActorId === PLAYER_AGGRO_ID)).toHaveLength(1); + expect(events.filter((event) => event.targetActorId === caster.id)).toHaveLength(RESOURCE_TYPES.length); + expect(events.filter((event) => event.targetActorId === nearby.id)).toHaveLength(RESOURCE_TYPES.length - 1); + expect(events.filter((event) => event.targetActorId === edge.id)).toHaveLength(2); + expect(events.some((event) => event.targetActorId === outside.id)).toBe(false); + expect(events.every((event) => event.sourceActorId === caster.id)).toBe(true); + }); +}); diff --git a/src/game/romDruidRogueSinisterRequest.test.ts b/src/game/romDruidRogueSinisterRequest.test.ts new file mode 100644 index 00000000..b215cc3f --- /dev/null +++ b/src/game/romDruidRogueSinisterRequest.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { ROM_DRUID_ROGUE_SINISTER_REQUEST_RESOURCES } from "./romDruidRogueCurrentCoa"; + +describe("current CoA Druid/Rogue Sinister Request catalog", () => { + it("restores each listed party resource to its maximum with the current 15-second cooldown", () => { + const request = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 494023 + && ability.classId === "rom-druid" && ability.secondaryClassId === "rom-rogue"); + + expect(request).toBeDefined(); + expect(request).toMatchObject({ + name: "Sinister Request", + target: "self", + range: { max: 5 }, + radius: 15, + cooldownMs: 15_000, + costs: [], + effects: ROM_DRUID_ROGUE_SINISTER_REQUEST_RESOURCES.map((resource) => ({ + kind: "resource", + amount: 100, + resource, + percentage: true, + scope: "party", + })), + }); + expect(request!.description).toContain("restores the MP, Rage, Focus, Energy, Psi, and Nature's Power"); + expect(request!.description).toContain("within radius 150"); + expect(request!.description).toContain("Cooldown: 15 seconds"); + expect(request!.description).not.toContain("does not yet apply"); + expect(request!.description).not.toContain("attack and casting speed"); + }); +}); diff --git a/src/game/romDruidRuntime.test.ts b/src/game/romDruidRuntime.test.ts index f5514c49..3ec80c8f 100644 --- a/src/game/romDruidRuntime.test.ts +++ b/src/game/romDruidRuntime.test.ts @@ -1,8 +1,8 @@ import { beforeAll, beforeEach, describe, expect, it } from "vitest"; -import { preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { abilityById, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; -import { equipmentAdjustedCombatAmount, PLAYER_AURA_ENTITY_ID, useCombatStore } from "./combatStore"; +import { PLAYER_AURA_ENTITY_ID, useCombatStore } from "./combatStore"; import { installCombatClock } from "./combatClock"; import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; import { companionResourceMaximum } from "./combatActorAuthority"; @@ -163,6 +163,73 @@ describe("RuneWaker Druid runtime", () => { expect(useCombatStore.getState().resourcePools["nature-power"]).toBe(4); }); + it("casts the current Druid/Rogue Necrotic Wound only with poison and Nature Power, then spreads three hits", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-druid", + secondaryClassId: "rom-rogue", + raceId: "rom-elf", + level: 80, + }); + useCombatStore.setState((state) => ({ + resource: 1_000, + maxResource: 1_000, + resourcePools: { ...state.resourcePools, mana: 1_000, energy: 100, "nature-power": 1 }, + maxResourcePools: { ...state.maxResourcePools, mana: 1_000, energy: 100 }, + cooldowns: { ...state.cooldowns, [ability(494023).id]: 11_000 }, + })); + const primary = "rom-druid-wound-primary"; + const nearby = "rom-druid-wound-nearby"; + const outside = "rom-druid-wound-outside"; + for (const [id, position] of [ + [primary, [4, 0, 0]], + [nearby, [11, 0, 0]], + [outside, [13, 0, 0]], + ] as const) { + useCombatStore.getState().registerMob(id, { name: id, maxHealth: 1_000_000, xpReward: 0 }); + setMobPosition(id, position); + useCombatStore.getState().damageMob(id, 1, 100); + } + + const wound = ability(494321); + const poison = ability(494024); + const runtimePoison = abilityById(poison.id); + expect(runtimePoison).toMatchObject({ + id: poison.id, + dbcSpellId: 494024, + effects: expect.arrayContaining([expect.objectContaining({ + kind: "dot", + tag: "rom-druid-corrosive-poison", + })]), + }); + expect(useCombatStore.getState().castAbility(wound.id, { targetActorId: primary, now: 1_000 })) + .toMatchObject({ ok: false, reason: "condition-not-met" }); + expect(useCombatStore.getState().castAbility(poison.id, { targetActorId: primary, now: 2_000 }).ok).toBe(true); + useCombatStore.setState((state) => ({ + resourcePools: { ...state.resourcePools, "nature-power": 0 }, + })); + expect(useCombatStore.getState().castAbility(wound.id, { targetActorId: primary, now: 3_500 })) + .toMatchObject({ ok: false, reason: "not-enough-resource" }); + useCombatStore.setState((state) => ({ + resourcePools: { ...state.resourcePools, "nature-power": 1 }, + })); + + expect(useCombatStore.getState().castAbility(wound.id, { targetActorId: primary, now: 5_000 }).ok).toBe(true); + expect(useCombatStore.getState().resourcePools).toMatchObject({ mana: 960, "nature-power": 0, energy: 75 }); + finishCast(5_000); + + const woundHits = useCombatStore.getState().combatEvents.filter((event) => ( + event.abilityId === wound.id && event.kind === "damage" + )); + expect(woundHits).toHaveLength(6); + const activePoisonTargets = useCombatStore.getState().effects.filter((effect) => ( + effect.kind === "dot" && effect.tag === "rom-druid-corrosive-poison" && effect.remainingTicks === 12 + )).map((effect) => effect.targetId).sort(); + expect(activePoisonTargets).toEqual([nearby, primary].sort()); + expect(useCombatStore.getState().mobs[outside]!.health).toBe(999_999); + expect(useCombatStore.getState().cooldowns[ability(494023).id]).toBe(10_000); + expect(useCombatStore.getState().mobs[primary]!.statuses.some((status) => status.kind === "root")).toBe(false); + }); + it("applies Grace of the Forest's Nature Power bonus only when a point is held", () => { prepareDruid("rom-warden"); const grace = ability(494937); @@ -273,19 +340,13 @@ describe("RuneWaker Druid runtime", () => { expect(buffs.every((aura) => aura.targetId === ally.id && aura.definition.disposition === "buff")).toBe(true); }); - it("triggers both Green Guardian HoTs only after the caster's protection expires", () => { + it("suppresses the stale Green Guardian HoTs when the exact-pair active skill's protection expires", () => { prepareMageDruid(); const state = useCombatStore.getState(); const passive = ability(494331); const protection = ability(493533); - expect(state.abilities.some((entry) => entry.id === passive.id && entry.passive)).toBe(true); - - const percentHot = passive.effects.find((effect) => effect.kind === "hot" && effect.percentMaxHealth !== undefined); - const flatHot = passive.effects.find((effect) => effect.kind === "hot" && effect.percentMaxHealth === undefined); - expect(percentHot).toMatchObject({ kind: "hot", percentMaxHealth: 0.02, ticks: 5, intervalMs: 2_000 }); - expect(flatHot).toMatchObject({ kind: "hot", basePoints: 39, pointsPerLevel: 9, ticks: 5, intervalMs: 2_000 }); - - const targetMaxHealth = state.maxHealth; + expect(state.abilities.some((entry) => entry.id === passive.id && !entry.passive)).toBe(true); + expect(passive.effects).toEqual([expect.objectContaining({ kind: "apply-aura" })]); const protectionCast = useCombatStore.getState().castAbility(protection.id, { targetActorId: null, now: 1_000, @@ -301,30 +362,8 @@ describe("RuneWaker Druid runtime", () => { expect(useCombatStore.getState().effects.filter((effect) => effect.sourceAbilityId === passive.id)).toHaveLength(0); expect(useCombatStore.getState().health).toBe(startingHealth); useCombatStore.getState().tick(0, 6_000); - const triggered = useCombatStore.getState().effects.filter((effect) => effect.sourceAbilityId === passive.id); - expect(triggered).toHaveLength(2); - expect(triggered.every((effect) => effect.kind === "hot" && effect.targetId === null - && effect.remainingTicks === 5 && effect.nextTickAt === 8_000)).toBe(true); - expect(useCombatStore.getState().health).toBe(startingHealth); - - const flatTickAmount = equipmentAdjustedCombatAmount( - flatHot as Extract, { kind: "hot" }>, - 80, - state.gearStats, - "rom-mage", - passive, - ); - expect(flatTickAmount).toBe(750); - const expectedPerTick = Math.round(targetMaxHealth * 0.02 + flatTickAmount); - const expectedTotal = expectedPerTick * 5; - let observedTicks = 0; - for (const now of [8_000, 10_000, 12_000, 14_000, 16_000]) { - useCombatStore.getState().tick(0, now); - observedTicks += 1; - expect(useCombatStore.getState().health - startingHealth).toBe(expectedPerTick * observedTicks); - } - expect(useCombatStore.getState().health - startingHealth).toBe(expectedTotal); expect(useCombatStore.getState().effects.filter((effect) => effect.sourceAbilityId === passive.id)).toHaveLength(0); + expect(useCombatStore.getState().health).toBe(startingHealth); }); it("does not trigger Green Guardian for another pair or another aura caster", () => { @@ -358,7 +397,7 @@ describe("RuneWaker Druid runtime", () => { expect(useCombatStore.getState().effects.filter((effect) => effect.sourceAbilityId === passive.id)).toHaveLength(0); }); - it("heals the friendly recipient of Mother Earth's Protection when it expires", () => { + it("suppresses stale Green Guardian HoTs on a friendly protection recipient", () => { prepareMageDruid(); usePartyStore.getState().initializeParty("green-guardian-recipient", 80, 1, "damage", 5, "rom"); const recipient = usePartyStore.getState().members[0]!; @@ -370,10 +409,6 @@ describe("RuneWaker Druid runtime", () => { const passive = ability(494331); const protection = ability(493533); - const percentHot = passive.effects.find((effect) => effect.kind === "hot" && effect.percentMaxHealth !== undefined); - const flatHot = passive.effects.find((effect) => effect.kind === "hot" && effect.percentMaxHealth === undefined); - const percentMaxHealth = percentHot?.kind === "hot" ? percentHot.percentMaxHealth ?? 0 : 0; - expect(percentMaxHealth).toBe(0.02); expect(useCombatStore.getState().castAbility(protection.id, { targetActorId: recipient.id, now: 1_000, @@ -386,26 +421,11 @@ describe("RuneWaker Druid runtime", () => { expect(protectionAura?.expiresAt).toBe(6_000); useCombatStore.getState().tick(0, protectionAura!.expiresAt!); expect(useCombatStore.getState().effects.filter((effect) => effect.sourceAbilityId === passive.id - && effect.targetId === recipient.id)).toHaveLength(2); - - const targetMaxHealth = recipient.maxHealth; - const flatTickAmount = equipmentAdjustedCombatAmount( - flatHot as Extract, { kind: "hot" }>, - 80, - useCombatStore.getState().gearStats, - "rom-mage", - passive, - ); - const expectedPerTick = Math.round(targetMaxHealth * percentMaxHealth + flatTickAmount); - for (const now of [8_000, 10_000, 12_000, 14_000, 16_000]) { - const before = usePartyStore.getState().members.find((member) => member.id === recipient.id)!.health; - useCombatStore.getState().tick(0, now); - const after = usePartyStore.getState().members.find((member) => member.id === recipient.id)!.health; - expect(after - before).toBe(expectedPerTick); - } + && effect.targetId === recipient.id)).toHaveLength(0); + expect(usePartyStore.getState().members.find((member) => member.id === recipient.id)!.health).toBe(1); }); - it("uses a party Mage/Druid's Green Guardian when their protection expires", () => { + it("suppresses stale Green Guardian HoTs for a companion's protection expiry", () => { prepareMageDruid(); const caster = createConfiguredPartyMember({ name: "Mage Druid", @@ -442,8 +462,7 @@ describe("RuneWaker Druid runtime", () => { const triggered = useCombatStore.getState().effects.filter((effect) => ( effect.sourceAbilityId === passive.id && effect.sourceActorId === caster.id )); - expect(triggered).toHaveLength(2); - expect(triggered.every((effect) => effect.kind === "hot" - && effect.targetId === null && effect.nextTickAt === 8_000)).toBe(true); + expect(passive.passive).toBe(false); + expect(triggered).toHaveLength(0); }); }); diff --git a/src/game/romKnightFearless.integration.test.ts b/src/game/romKnightFearless.integration.test.ts new file mode 100644 index 00000000..b20c02c5 --- /dev/null +++ b/src/game/romKnightFearless.integration.test.ts @@ -0,0 +1,96 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { PLAYER_AURA_ENTITY_ID, useCombatStore } from "./combatStore"; +import { abilitiesForCharacter } from "./abilityCatalog"; + +const FEARLESS_ABILITY_ID = "rom-knight-rom-warrior-elite-35"; + +describe("RoM Knight/Warrior Fearless", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 40 }); + usePartyStore.getState().initializeParty("rom-knight-fearless", 40, useCombatStore.getState().health, "damage", 2, "rom"); + }); + + it("gives the player source-defined stats and 20 seconds of Fear immunity", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-knight", secondaryClassId: "rom-warrior", raceId: "rom-human", level: 40, role: "tank", + }); + useCombatStore.setState((state) => ({ + resourcePools: { ...state.resourcePools, rage: 100 }, + })); + + const cast = useCombatStore.getState().castAbility(FEARLESS_ABILITY_ID, undefined, 1_000); + expect(cast).toMatchObject({ ok: true }); + const auras = useCombatStore.getState().auras.filter((active) => ( + active.targetId === PLAYER_AURA_ENTITY_ID && active.definition.name.startsWith("Fearless:") + )); + expect(auras).toHaveLength(2); + expect(auras.every((aura) => aura.definition.controlImmunities?.includes("fear"))).toBe(true); + expect(auras.flatMap((aura) => aura.definition.modifiers ?? [])).toEqual(expect.arrayContaining([ + { kind: "stat", stat: "strength", operation: "percent", value: 0.03 }, + { kind: "stat", stat: "stamina", operation: "percent", value: 0.03 }, + ])); + expect(auras.every((aura) => aura.expiresAt === 21_000)).toBe(true); + }); + + it("gives a generated Knight/Warrior companion the same Fear immunity", () => { + const seed = "rom-knight-fearless-companion"; + const knight = createConfiguredPartyMember({ + name: "Fearless Knight", + classId: "rom-knight", + secondaryClassId: "rom-warrior", + raceId: "rom-human", + specialization: "Knight/Warrior", + role: "tank", + }, 40, 0, seed); + const targetId = "rom-knight-fearless-target"; + const activeCooldowns = Object.fromEntries( + abilitiesForCharacter("rom-knight", "rom-warrior") + .filter((ability) => !ability.passive && ability.id !== FEARLESS_ABILITY_ID) + .map((ability) => [ability.id, 60_000]), + ); + usePartyStore.getState().initializeParty( + seed, 40, useCombatStore.getState().health, "tank", 2, "rom", + ); + usePartyStore.setState({ + members: [{ + ...knight, + gearStats: EMPTY_ITEM_STATS, + resourcePools: { ...knight.resourcePools, rage: 50 }, + cooldowns: activeCooldowns, + globalCooldownEndsAt: 0, + nextActionAt: 0, + status: "ready", + }], + command: "attack", + activeMobId: targetId, + }); + registerPartyRuntimePosition(knight.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + useCombatStore.getState().registerMob(targetId, { name: "Fearless target", maxHealth: 100_000, xpReward: 0 }); + setMobPosition(targetId, [2, 0, 0]); + useCombatStore.getState().damageMob(targetId, 1, 100); + updatePartyRuntimeTargetVisibility(knight.id, targetId, true); + + advanceDungeonPartyCombat(1_000); + + const auras = useCombatStore.getState().auras.filter((active) => ( + active.sourceId === knight.id && active.targetId === knight.id + && active.definition.name.startsWith("Fearless:") + )); + expect(auras).toHaveLength(2); + expect(auras.every((aura) => aura.definition.controlImmunities?.includes("fear"))).toBe(true); + expect(auras.every((aura) => aura.expiresAt === 21_000)).toBe(true); + }); +}); diff --git a/src/game/romKnightGodsSwordCoaMechanics.test.ts b/src/game/romKnightGodsSwordCoaMechanics.test.ts new file mode 100644 index 00000000..46b0790c --- /dev/null +++ b/src/game/romKnightGodsSwordCoaMechanics.test.ts @@ -0,0 +1,66 @@ +import { describe, expect, it } from "vitest"; +import { + ROM_COA_KNIGHT_ROGUE_GODS_SWORD_ID, + ROM_COA_KNIGHT_ROGUE_GODS_SWORD_OFFHAND_DPS_COEFFICIENT, + romCoaKnightRogueGodsSwordBonusLightDamage, + type RomCoaKnightRogueGodsSwordInput, +} from "./romKnightGodsSwordCoaMechanics"; + +const eligibleInput: RomCoaKnightRogueGodsSwordInput = { + classId: "rom-knight", + secondaryClassId: "rom-rogue", + learnedPassiveSpellIds: [ROM_COA_KNIGHT_ROGUE_GODS_SWORD_ID], + landedOffensivePhysicalAbilityDamageEvent: true, + offhandWeaponDps: 100, +}; + +describe("current CoA Knight/Rogue God's Sword passive", () => { + it("adds 350% of offhand weapon DPS as separate Light damage", () => { + expect(ROM_COA_KNIGHT_ROGUE_GODS_SWORD_OFFHAND_DPS_COEFFICIENT).toBe(3.5); + expect(romCoaKnightRogueGodsSwordBonusLightDamage(eligibleInput)).toBe(350); + expect(romCoaKnightRogueGodsSwordBonusLightDamage({ + ...eligibleInput, + offhandWeaponDps: 12.5, + })).toBe(43.75); + }); + + it("requires the Knight/Rogue pairing and learned passive", () => { + expect(romCoaKnightRogueGodsSwordBonusLightDamage({ + ...eligibleInput, + classId: "rom-warrior", + })).toBe(0); + expect(romCoaKnightRogueGodsSwordBonusLightDamage({ + ...eligibleInput, + secondaryClassId: "rom-warrior", + })).toBe(0); + expect(romCoaKnightRogueGodsSwordBonusLightDamage({ + ...eligibleInput, + learnedPassiveSpellIds: [], + })).toBe(0); + expect(romCoaKnightRogueGodsSwordBonusLightDamage({ + ...eligibleInput, + learnedPassiveSpellIds: [491_620], + })).toBe(0); + }); + + it("requires a landed offensive physical-ability damage event", () => { + expect(romCoaKnightRogueGodsSwordBonusLightDamage({ + ...eligibleInput, + landedOffensivePhysicalAbilityDamageEvent: false, + })).toBe(0); + }); + + it("requires positive finite offhand DPS and returns only finite damage", () => { + for (const offhandWeaponDps of [0, -1, Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY]) { + expect(romCoaKnightRogueGodsSwordBonusLightDamage({ + ...eligibleInput, + offhandWeaponDps, + })).toBe(0); + } + + expect(romCoaKnightRogueGodsSwordBonusLightDamage({ + ...eligibleInput, + offhandWeaponDps: Number.MAX_VALUE, + })).toBe(0); + }); +}); diff --git a/src/game/romKnightGodsSwordCoaMechanics.ts b/src/game/romKnightGodsSwordCoaMechanics.ts new file mode 100644 index 00000000..c803877a --- /dev/null +++ b/src/game/romKnightGodsSwordCoaMechanics.ts @@ -0,0 +1,49 @@ +/** Current CoA Knight/Rogue God's Sword passive (skill 491621). */ +export const ROM_COA_KNIGHT_ROGUE_GODS_SWORD_ID = 491_621; + +/** CoA's passive adds 350% of offhand weapon DPS as Light damage. */ +export const ROM_COA_KNIGHT_ROGUE_GODS_SWORD_OFFHAND_DPS_COEFFICIENT = 3.5; + +export interface RomCoaKnightRogueGodsSwordInput { + readonly classId: string; + readonly secondaryClassId: string | null | undefined; + readonly learnedPassiveSpellIds: readonly number[]; + /** True for a landed offensive physical-ability damage event. */ + readonly landedOffensivePhysicalAbilityDamageEvent: boolean; + readonly offhandWeaponDps: number; +} + +/** + * Return God's Sword's separate Light-damage rider for one qualifying event. + * + * Current CoA describes God's Sword (491621) as a Knight/Rogue passive whose + * offensive physical abilities inflict 350% offhand weapon DPS Light damage + * with high aggro generation. The helper models only that documented damage; + * it does not invent an aggro multiplier or decide how callers divide + * multi-hit, channel, or area actions into damage events. + * + * The explicit patch chain identifies this as the same reworked ability: + * 10.6.1 made it an active offhand-DPS physical rider, 11.1.5 changed its + * damage to 350% Light, and 12.1.0 made it passive. + * + * Sources: + * - Current CoA Knight/Rogue skill list: https://chroniclesofarcadia.com/wiki/skills/list/6-3?locale=ru + * - CoA patch 10.6.1: https://chroniclesofarcadia.com/en/patch/10-6-1-1000 + * - CoA patch 11.1.5: https://chroniclesofarcadia.com/tr/patch/11-1-5-3000 + * - CoA patch 12.1.0: https://chroniclesofarcadia.com/patch/12-1-0-5000 + */ +export function romCoaKnightRogueGodsSwordBonusLightDamage( + input: RomCoaKnightRogueGodsSwordInput, +): number { + if (input.classId !== "rom-knight" + || input.secondaryClassId !== "rom-rogue" + || !input.learnedPassiveSpellIds.includes(ROM_COA_KNIGHT_ROGUE_GODS_SWORD_ID) + || !input.landedOffensivePhysicalAbilityDamageEvent + || !Number.isFinite(input.offhandWeaponDps) + || input.offhandWeaponDps <= 0) { + return 0; + } + + const damage = input.offhandWeaponDps * ROM_COA_KNIGHT_ROGUE_GODS_SWORD_OFFHAND_DPS_COEFFICIENT; + return Number.isFinite(damage) ? damage : 0; +} diff --git a/src/game/romKnightGodsSwordRuntime.integration.test.ts b/src/game/romKnightGodsSwordRuntime.integration.test.ts new file mode 100644 index 00000000..8a0f72b3 --- /dev/null +++ b/src/game/romKnightGodsSwordRuntime.integration.test.ts @@ -0,0 +1,202 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { abilitiesForCharacter, learnedAbilityForBuild } from "./abilityCatalog"; +import { resolveDamageValue as resolveAuraDamageValue } from "./combatAuras"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS, type WeaponStats } from "./itemStats"; +import type { InventoryItem } from "./lootTypes"; + +const OFFHAND_ID = "coa-gods-sword-test-offhand"; +const OFFHAND: WeaponStats = { + damageMin: 100, + damageMax: 300, + damageSchool: "physical", + speedMs: 2_000, +}; + +function offhandItem(instanceId = OFFHAND_ID): InventoryItem { + return { + instanceId, + itemId: 1, + itemKey: instanceId, + name: "Test Off-hand Dagger", + quality: "uncommon", + inventorySlot: "off-hand", + armorType: null, + weaponType: "mace", + itemLevel: 1, + sourceItemLevel: 1, + stats: { ...EMPTY_ITEM_STATS, meleeWeapon: OFFHAND, hitRating: 1_000_000 }, + quantity: 1, + sourceBossKey: "test", + sourceBossName: "Test", + acquiredAt: 0, + }; +} + +function registerTarget(id: string): void { + useCombatStore.getState().registerMob(id, { + name: id, + level: 1, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.getState().selectMob(id); +} + +function expectedLightRiderAmount(actorId: string): number { + const auras = useCombatStore.getState().auras.filter((aura) => aura.targetId === actorId); + return Math.round(resolveAuraDamageValue(350, auras, { + direction: "dealt", + school: "holy", + attackKind: "spell", + })); +} + +describe("current CoA Knight/Rogue God's Sword runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-knight", + secondaryClassId: "rom-rogue", + raceId: "rom-human", + level: 80, + xp: 0, + }); + usePartyStore.getState().initializeParty("coa-gods-sword-runtime", 80, useCombatStore.getState().health); + }); + + it("adds one separate 350% off-hand-DPS Light hit to a landed player physical ability", () => { + const item = offhandItem(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-knight", + secondaryClassId: "rom-rogue", + raceId: "rom-human", + level: 80, + xp: 0, + inventory: [item], + equipment: { player: { "off-hand": item.instanceId } }, + }); + registerTarget("coa-gods-sword-player-target"); + + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.dbcSpellId === 490148)!; + expect(useCombatStore.getState().abilities.find((candidate) => candidate.dbcSpellId === 491621)) + .toMatchObject({ passive: true, unlockLevel: 15 }); + expect(useCombatStore.getState().castAbility(ability.id, undefined, 1_000)).toMatchObject({ ok: true }); + + const events = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" + && event.sourceActorId === PLAYER_AGGRO_ID + && event.targetActorId === "coa-gods-sword-player-target" + && event.abilityId === ability.id + )); + expect(events.some((event) => event.school === "holy" && event.rawAmount !== 350 + && event.effectiveAmount > 0)).toBe(true); + expect(events.filter((event) => event.school === "holy" + && event.rawAmount === expectedLightRiderAmount(PLAYER_AGGRO_ID))) + .toHaveLength(1); + }); + + it("does not add the CoA rider before the passive is learned or without an off-hand weapon", () => { + const simulate = (level: number, equipOffhand: boolean) => { + const item = offhandItem(`coa-gods-sword-gate-${level}-${equipOffhand}`); + useCombatStore.getState().initializeCharacter({ + classId: "rom-knight", + secondaryClassId: "rom-rogue", + raceId: "rom-human", + level, + xp: 0, + ...(equipOffhand ? { + inventory: [item], + equipment: { player: { "off-hand": item.instanceId } }, + } : {}), + }); + const targetId = `coa-gods-sword-gate-target-${level}-${equipOffhand}`; + registerTarget(targetId); + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.dbcSpellId === 490148)!; + useCombatStore.getState().castAbility(ability.id, undefined, 1_000); + return useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" + && event.targetActorId === targetId + && event.abilityId === ability.id + && event.school === "holy" + && event.rawAmount === 350 + )); + }; + + expect(simulate(14, true)).toHaveLength(0); + expect(simulate(80, false)).toHaveLength(0); + }); + + it("adds the same landed-hit rider for a generated Knight/Rogue companion", () => { + useCombatStore.getState().initializeCharacter({ classId: "rom-mage", level: 80, xp: 0 }); + const seed = "coa-gods-sword-party"; + const companion = createConfiguredPartyMember({ + name: "Knight/Rogue", + classId: "rom-knight", + secondaryClassId: "rom-rogue", + raceId: "rom-human", + specialization: "Knight/Rogue", + role: "damage", + }, 80, 0, seed); + const sourceAbility = abilitiesForCharacter("rom-knight", "rom-rogue") + .find((candidate) => candidate.dbcSpellId === 490148)!; + const ability = learnedAbilityForBuild(sourceAbility, 80, companion.talentRanks)!; + const targetId = "coa-gods-sword-companion-target"; + const item = { + ...offhandItem(`${companion.id}:${OFFHAND_ID}`), + }; + + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2, "rom"); + usePartyStore.setState({ + members: [{ + ...companion, + gearStats: { ...EMPTY_ITEM_STATS, hitRating: 1_000_000 }, + globalCooldownEndsAt: 0, + nextActionAt: 0, + activeCast: { + abilityId: ability.id, + school: "physical", + mode: "cast", + startedAt: 1_000, + completesAt: 1_000, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId, + }, + activeCastTargetId: targetId, + status: "attacking", + }], + command: "attack", + activeMobId: targetId, + }); + useCombatStore.setState((state) => ({ + inventory: [...state.inventory, item], + equipment: { ...state.equipment, [companion.id]: { "off-hand": item.instanceId } }, + })); + registerPartyRuntimePosition(companion.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + registerTarget(targetId); + + advanceDungeonPartyCombat(1_000); + const events = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" + && event.sourceActorId === companion.id + && event.targetActorId === targetId + && event.abilityId === ability.id + )); + expect(events.some((event) => event.school === "holy" && event.rawAmount !== 350 + && event.effectiveAmount > 0)).toBe(true); + expect(events.filter((event) => event.school === "holy" + && event.rawAmount === expectedLightRiderAmount(companion.id))) + .toHaveLength(1); + }); +}); diff --git a/src/game/romKnightOverrides.test.ts b/src/game/romKnightOverrides.test.ts index d4064731..0a6573ee 100644 --- a/src/game/romKnightOverrides.test.ts +++ b/src/game/romKnightOverrides.test.ts @@ -1,6 +1,12 @@ import { describe, expect, it } from "vitest"; import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; import { + ROM_KNIGHT_CURRENT_COA_WHIRLWIND_SHIELD_ID, + ROM_KNIGHT_LOCAL_WHIRLWIND_SHIELD_ID, + romKnightCompassionWhirlwindShieldCooldownReductionMs, + romKnightCompassionWhirlwindShieldHealAmount, + romKnightDeadlyWhirlwindAura, + romKnightDivinePunishmentAuraForSealStacks, romKnightRogueHolyStrikeCriticalRateIncreasePercent, romKnightWarriorWhirlwindAdjustment, } from "./romKnightOverrides"; @@ -50,7 +56,7 @@ describe("RoM Knight/Rogue God's Sword", () => { const holyStrike = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 490148)!; const passive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 491621)!; - it("provides the local 40% critical-rate increase only to Holy Strike for the learned pair passive", () => { + it("does not apply the superseded local Holy Strike crit tooltip without a current CoA payload", () => { expect(passive).toMatchObject({ classId: "rom-knight", secondaryClassId: "rom-rogue", @@ -63,7 +69,7 @@ describe("RoM Knight/Rogue God's Sword", () => { "rom-rogue", holyStrike, [491621], - )).toBe(40); + )).toBe(0); }); it("does not apply God's Sword to other pairings, abilities, unlearned passives, or non-RuneWaker spells", () => { @@ -83,3 +89,46 @@ describe("RoM Knight/Rogue God's Sword", () => { expect(bonuses).toEqual([0, 0, 0, 0]); }); }); + +describe("current CoA Knight pair effects", () => { + it("applies current Deadly Wound healing reduction and PvP duration", () => { + expect(romKnightDeadlyWhirlwindAura(false).aura).toMatchObject({ + durationMs: 10_000, + modifiers: [{ kind: "healing", direction: "taken", operation: "percent", value: -0.3 }], + }); + expect(romKnightDeadlyWhirlwindAura(true).aura.durationMs).toBe(5_000); + }); + + it("scales Divine Punishment vulnerability by the pre-spend Holy Seal count", () => { + expect(romKnightDivinePunishmentAuraForSealStacks(0)).toBeNull(); + expect(romKnightDivinePunishmentAuraForSealStacks(1)?.aura.modifiers).toEqual([ + { kind: "damage", direction: "taken", operation: "percent", value: 0.02 }, + ]); + expect(romKnightDivinePunishmentAuraForSealStacks(4)?.aura.modifiers).toEqual([ + { kind: "damage", direction: "taken", operation: "percent", value: 0.08 }, + ]); + expect(romKnightDivinePunishmentAuraForSealStacks(8)?.aura.durationMs).toBe(10_000); + }); + + it("bridges current CoA Knight/Shaman Compassion to the local Knight/Priest row by exact passive and skill IDs", () => { + const local = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_KNIGHT_LOCAL_WHIRLWIND_SHIELD_ID)!; + const currentAlias = { ...local, dbcSpellId: ROM_KNIGHT_CURRENT_COA_WHIRLWIND_SHIELD_ID }; + const compassion = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 491635)!; + expect(local.name).toBe("Whirlwind Shield"); + expect(compassion).toMatchObject({ classId: "rom-knight", secondaryClassId: "rom-priest" }); + expect(romKnightCompassionWhirlwindShieldCooldownReductionMs( + "rom-knight", "rom-priest", local, [491635], + )).toBe(1_000); + expect(romKnightCompassionWhirlwindShieldCooldownReductionMs( + "rom-knight", "rom-priest", currentAlias, [491635], + )).toBe(1_000); + expect(romKnightCompassionWhirlwindShieldCooldownReductionMs( + "rom-knight", "rom-shaman", local, [491635], + )).toBe(0); + expect(romKnightCompassionWhirlwindShieldCooldownReductionMs( + "rom-knight", "rom-warrior", local, [491635], + )).toBe(0); + expect(romKnightCompassionWhirlwindShieldHealAmount(0)).toBe(120); + expect(romKnightCompassionWhirlwindShieldHealAmount(1_000)).toBe(320); + }); +}); diff --git a/src/game/romKnightOverrides.ts b/src/game/romKnightOverrides.ts index 648f8fe5..1eabfe2f 100644 --- a/src/game/romKnightOverrides.ts +++ b/src/game/romKnightOverrides.ts @@ -5,9 +5,13 @@ import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; export const ROM_KNIGHT_DIVINE_PUNISHMENT_TAG = "rom-divine-punishment"; export const ROM_KNIGHT_GODS_VENGEANCE_TAG = "rom-gods-vengeance"; export const ROM_KNIGHT_SHIELD_OF_VALOR_TAG = "rom-shield-of-valor"; -export const ROM_KNIGHT_HOLY_LIGHTS_FURY_TAG = "rom-holy-lights-fury"; +export const ROM_KNIGHT_COMPASSION_OF_HOLY_LIGHT_TAG = "rom-compassion-of-holy-light"; +export const ROM_KNIGHT_HOLY_ILLUMINATION_TAG = "rom-holy-illumination"; export const ROM_KNIGHT_MASTER_OF_PARRY_TAG = "rom-knight-master-of-parry"; export const ROM_KNIGHT_MASTER_OF_PARRY_BLOCK_PROC = "rom-knight-master-of-parry-block"; +export const ROM_KNIGHT_DEADLY_WHIRLWIND_TAG = "rom-deadly-whirlwind"; +export const ROM_KNIGHT_CURRENT_COA_WHIRLWIND_SHIELD_ID = 1_493_719; +export const ROM_KNIGHT_LOCAL_WHIRLWIND_SHIELD_ID = 490_175; /** Shield of Valor reduces Holy Seal's remaining cooldown only on an active-aura parry. */ export function romKnightShieldOfValorCooldownReductionMs(auraActive: boolean, parried: boolean): number { @@ -39,22 +43,97 @@ export function romKnightWarriorWhirlwindAdjustment( return { rageCostReduction: 10, cooldownReductionMs: 20_000 }; } -/** RuneWaker Knight/Rogue passive 491621 boosts only Holy Strike's critical rate. */ +/** Current CoA changed God's Sword to passive, but the current passive payload is unpublished. */ export function romKnightRogueHolyStrikeCriticalRateIncreasePercent( characterClassId: string, secondaryClassId: string | null | undefined, ability: Pick, learnedPassiveSpellIds: readonly number[], ): number { - if (characterClassId !== "rom-knight" - || secondaryClassId !== "rom-rogue" - || ability.source !== "runewaker" - || ability.classId !== "rom-knight" - || ability.dbcSpellId !== 490148 - || !learnedPassiveSpellIds.includes(491621)) return 0; + // The RuneWaker snapshot's 40% Holy Strike bonus conflicts with current CoA, + // which only says God's Sword became passive and does not publish its payload. + void characterClassId; + void secondaryClassId; + void ability; + void learnedPassiveSpellIds; + return 0; +} - // The populated local tooltip specifies a 40% Holy Strike critical-rate increase. - return 40; +function hasPassiveTag( + passiveTags: readonly string[] | ReadonlySet, + tag: string, +): boolean { + return Array.isArray(passiveTags) + ? passiveTags.includes(tag) + : (passiveTags as ReadonlySet).has(tag); +} + +/** CoA 6-1: Deadly Wound reduces healing received by 30%; player targets last 5s. */ +export function romKnightDeadlyWhirlwindAura(targetIsPlayer: boolean): Extract { + return { + kind: "apply-aura", + recipient: "ability-target", + aura: { + id: "rom-knight-deadly-wound", + name: "Deadly Wound", + disposition: "debuff", + durationMs: targetIsPlayer ? 5_000 : 10_000, + dispelCategory: "magic", + modifiers: [{ kind: "healing", direction: "taken", operation: "percent", value: -0.3 }], + utilityTags: [ROM_KNIGHT_DEADLY_WHIRLWIND_TAG], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 491_639, + }; +} + +/** CoA 10.6.1: Divine Punishment makes the target take 2% more damage per Seal for 10s. */ +export function romKnightDivinePunishmentAuraForSealStacks( + sealStacks: number, +): Extract | null { + const stacks = Math.max(0, Math.min(4, Math.trunc(sealStacks))); + if (stacks <= 0) return null; + return { + kind: "apply-aura", + recipient: "ability-target", + aura: { + id: "rom-knight-divine-punishment-damage-taken", + name: "Divine Punishment", + disposition: "debuff", + durationMs: 10_000, + dispelCategory: "magic", + modifiers: [{ kind: "damage", direction: "taken", operation: "percent", value: stacks * 0.02 }], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: stacks * 2, + triggerSpellId: 491_608, + }; +} + +/** Current CoA 11.1.5 cooldown rider, bridged by the exact Whirlwind Shield name. */ +export function romKnightCompassionWhirlwindShieldCooldownReductionMs( + characterClassId: string, + secondaryClassId: string | null | undefined, + ability: Pick, + learnedPassiveSpellIds: readonly number[], +): number { + return characterClassId === "rom-knight" + && secondaryClassId === "rom-priest" + && ability.source === "runewaker" + && ability.classId === "rom-knight" + && (ability.dbcSpellId === ROM_KNIGHT_LOCAL_WHIRLWIND_SHIELD_ID + || ability.dbcSpellId === ROM_KNIGHT_CURRENT_COA_WHIRLWIND_SHIELD_ID) + && learnedPassiveSpellIds.includes(491_635) + ? 1_000 + : 0; +} + +/** CoA 11.1.5 Compassion heal formula; called only after a Whirlwind Shield hit lands. */ +export function romKnightCompassionWhirlwindShieldHealAmount(stamina: number): number { + return Math.max(0, Math.round(120 + Math.max(0, stamina) * 0.2)); } const ROM_KNIGHT_MASTER_OF_PARRY_PROC: AuraProcDefinition = { @@ -83,11 +162,83 @@ function divinePunishmentPassive(row: RomGeneratedAbilityLike): readonly Ability }]; } +function deadWhirlwindPassive(row: RomGeneratedAbilityLike): readonly AbilityEffect[] { + return [{ + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-knight-passive-491639", + name: row.name, + disposition: "buff", + durationMs: null, + utilityTags: [ROM_KNIGHT_DEADLY_WHIRLWIND_TAG], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 491_639, + }]; +} + +function compassionOfHolyLightPassive(row: RomGeneratedAbilityLike): readonly AbilityEffect[] { + return [{ + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-knight-passive-491635", + name: "Compassion of Holy Light", + disposition: "buff", + durationMs: null, + utilityTags: [ROM_KNIGHT_COMPASSION_OF_HOLY_LIGHT_TAG], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 491_635, + }]; +} + +function holyIlluminationPassive(row: RomGeneratedAbilityLike): readonly AbilityEffect[] { + return [{ + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-knight-passive-491632", + name: row.name, + disposition: "buff", + durationMs: null, + utilityTags: [ROM_KNIGHT_HOLY_ILLUMINATION_TAG], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 491_632, + }]; +} + /** Source-backed Knight passive and cast adjustments. */ export function overrideRomKnightEffects( row: RomGeneratedAbilityLike, translated: readonly AbilityEffect[], ): readonly AbilityEffect[] | null { + if (row.classId === "rom-knight" + && row.secondaryClassId === "rom-warrior" + && row.sourceSkillId === 490088) { + // Fearless's local description promises Fear immunity, while its source + // component only exposes the +3% Strength and Stamina modifiers. The + // [SC_SKILLTIPS_FEAR] suffix is a tooltip category marker; discard the + // generic parser's false-positive Fear control and attach immunity to its + // actual stat buff rows. + return translated + .filter((effect) => !(effect.kind === "apply-aura" && effect.control?.kind === "fear")) + .map((effect) => effect.kind === "apply-aura" && (effect.aura.modifiers?.length ?? 0) > 0 ? { + ...effect, + aura: { + ...effect.aura, + controlImmunities: [...new Set([...(effect.aura.controlImmunities ?? []), "fear" as const])], + }, + } : effect); + } if (row.sourceSkillId === 492935) { const durationMs = Math.max(0, ...(row.source?.components ?? []).map((component) => ( Math.max(0, Number(component.effectTime ?? 0)) * 1_000 @@ -113,6 +264,7 @@ export function overrideRomKnightEffects( return effect; }); } + if (row.sourceSkillId === 491639 && row.passive) return deadWhirlwindPassive(row); if (row.sourceSkillId === 491608 && row.passive) return divinePunishmentPassive(row); if (row.sourceSkillId === 499934 && row.passive) return [{ kind: "apply-aura", @@ -129,21 +281,8 @@ export function overrideRomKnightEffects( miscValue: 0, triggerSpellId: 499934, }]; - if (row.sourceSkillId === 491635 && row.passive) return [{ - kind: "apply-aura", - recipient: "caster", - aura: { - id: "rom-knight-passive-491635", - name: row.name, - disposition: "buff", - durationMs: null, - utilityTags: [ROM_KNIGHT_HOLY_LIGHTS_FURY_TAG], - }, - sourceEffectType: -1, - sourceAuraType: -1, - miscValue: 0, - triggerSpellId: 491635, - }]; + if (row.sourceSkillId === 491635 && row.passive) return compassionOfHolyLightPassive(row); + if (row.sourceSkillId === 491632 && row.passive) return holyIlluminationPassive(row); if (row.sourceSkillId === 490468) return translated.map((effect) => effect.kind === "apply-aura" ? { ...effect, aura: { @@ -159,61 +298,76 @@ export function romKnightCastEffects( ability: AbilityDefinition, effects: readonly AbilityEffect[], passiveTags: readonly string[] | ReadonlySet = [], + sealStacks = 0, ): readonly AbilityEffect[] { - const hasHolyLightsFury = Array.isArray(passiveTags) - ? passiveTags.includes(ROM_KNIGHT_HOLY_LIGHTS_FURY_TAG) - : (passiveTags as ReadonlySet).has(ROM_KNIGHT_HOLY_LIGHTS_FURY_TAG); - if (ability.source === "runewaker" - && ability.classId === "rom-knight" - && ability.dbcSpellId === 490149 - && hasHolyLightsFury) { - // RuneWaker's local tooltip gives a flat 3-second reduction to Holy Seal. - // The added damage rider has no numeric payload in this source snapshot. - return [...effects, { - kind: "cooldown-reset", - mode: "reduce", - abilityName: "Holy Seal", - amountMs: 3_000, - }]; + if (ability.source !== "runewaker" + || (ability.classId !== "rom-knight" && ability.dbcSpellId !== 490_133)) return effects; + + let adjusted = effects; + if (ability.dbcSpellId === 490_151 && hasPassiveTag(passiveTags, ROM_KNIGHT_DIVINE_PUNISHMENT_TAG)) { + adjusted = adjusted.map((effect) => { + if (effect.kind !== "damage" && effect.kind !== "dot") return effect; + return { + ...effect, + coefficient: effect.coefficient * 1.285, + ...(effect.coefficientPerLevel === undefined ? {} : { coefficientPerLevel: effect.coefficientPerLevel * 1.285 }), + ...(effect.basePoints === undefined ? {} : { basePoints: effect.basePoints * 1.285 }), + ...(effect.pointsPerLevel === undefined ? {} : { pointsPerLevel: effect.pointsPerLevel * 1.285 }), + ...(effect.bonusPowerCoefficient === undefined ? {} : { bonusPowerCoefficient: effect.bonusPowerCoefficient * 1.285 }), + }; + }); + const punishmentAura = romKnightDivinePunishmentAuraForSealStacks(sealStacks); + if (punishmentAura) adjusted = [...adjusted, { ...punishmentAura, requiresLandedHit: true }]; } - if (ability.source !== "runewaker" - || ability.classId !== "rom-knight" - || ability.dbcSpellId !== 490151 - || !(Array.isArray(passiveTags) - ? passiveTags.includes(ROM_KNIGHT_DIVINE_PUNISHMENT_TAG) - : (passiveTags as ReadonlySet).has(ROM_KNIGHT_DIVINE_PUNISHMENT_TAG))) return effects; + if (ability.dbcSpellId === 490_133 && hasPassiveTag(passiveTags, ROM_KNIGHT_DEADLY_WHIRLWIND_TAG)) { + adjusted = [...adjusted, { ...romKnightDeadlyWhirlwindAura(false), requiresLandedHit: true }]; + } - const increasedDamage = effects.map((effect) => { - if (effect.kind !== "damage" && effect.kind !== "dot") return effect; - return { - ...effect, - coefficient: effect.coefficient * 1.01, - ...(effect.coefficientPerLevel === undefined ? {} : { coefficientPerLevel: effect.coefficientPerLevel * 1.01 }), - ...(effect.basePoints === undefined ? {} : { basePoints: effect.basePoints * 1.01 }), - ...(effect.pointsPerLevel === undefined ? {} : { pointsPerLevel: effect.pointsPerLevel * 1.01 }), - ...(effect.bonusPowerCoefficient === undefined ? {} : { bonusPowerCoefficient: effect.bonusPowerCoefficient * 1.01 }), - }; - }); - - // Generated passive 491608 includes component 502052: a ten-second, +1% - // Light-damage vulnerability. The generic modifier map treats type 225 as - // Light resistance, which would make the target take less damage despite - // the local tooltip explicitly saying it takes more Light damage. - return [...increasedDamage, { - kind: "apply-aura", - recipient: "ability-target", - aura: { - id: "rom-knight-divine-punishment-light-vulnerability", - name: "Divine Punishment", - disposition: "debuff", - durationMs: 10_000, - modifiers: [{ kind: "damage", direction: "taken", school: "holy", operation: "percent", value: 0.01 }], - dispelCategory: "magic", - }, - sourceEffectType: -1, - sourceAuraType: 225, - miscValue: 1, - triggerSpellId: 502052, - }]; + if (ability.dbcSpellId === ROM_KNIGHT_LOCAL_WHIRLWIND_SHIELD_ID) { + adjusted = adjusted.map((effect) => effect.kind === "damage" + ? { + ...effect, + coefficient: 0, + basePoints: 0, + dieSides: 1, + weaponDpsCoefficient: 7.014, + school: "holy" as const, + } + : effect); + if (hasPassiveTag(passiveTags, ROM_KNIGHT_COMPASSION_OF_HOLY_LIGHT_TAG)) { + adjusted = [...adjusted, { + kind: "heal", + coefficient: 0, + basePoints: 120, + dieSides: 1, + staminaCoefficient: 0.2, + scope: "party", + center: "caster", + radius: 100, + requiresLandedHit: true, + }]; + } + if (hasPassiveTag(passiveTags, ROM_KNIGHT_HOLY_ILLUMINATION_TAG) + || hasPassiveTag(passiveTags, ROM_KNIGHT_COMPASSION_OF_HOLY_LIGHT_TAG)) { + adjusted = [...adjusted, { + kind: "apply-aura", + scope: "party", + radius: 100, + requiresLandedHit: true, + aura: { + id: "rom-knight-holy-illumination-proc", + name: "Holy Illumination", + disposition: "buff", + durationMs: 10_000, + modifiers: [{ kind: "damage", direction: "taken", operation: "percent", value: -0.15 }], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 491_632, + }]; + } + } + return adjusted; } diff --git a/src/game/romKnightPeriodicRuntime.test.ts b/src/game/romKnightPeriodicRuntime.test.ts index 3545adb8..8def7a60 100644 --- a/src/game/romKnightPeriodicRuntime.test.ts +++ b/src/game/romKnightPeriodicRuntime.test.ts @@ -8,7 +8,8 @@ import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; import { ROM_KNIGHT_DIVINE_PUNISHMENT_TAG, ROM_KNIGHT_GODS_VENGEANCE_TAG, - ROM_KNIGHT_HOLY_LIGHTS_FURY_TAG, + ROM_KNIGHT_COMPASSION_OF_HOLY_LIGHT_TAG, + romKnightDivinePunishmentAuraForSealStacks, ROM_KNIGHT_SHIELD_OF_VALOR_TAG, } from "./romKnightOverrides"; import { romEffectsForCast } from "./romCombatMechanics"; @@ -118,7 +119,7 @@ describe("RuneWaker Knight periodic skills", () => { && event.effectiveAmount > 0)).toBe(true); }); - it("limits Divine Punishment's sourced 1% bonus to Punishment", () => { + it("uses current CoA's 28.5% Divine Punishment damage bonus only on Punishment", () => { useCombatStore.getState().initializeCharacter({ classId: "rom-knight", secondaryClassId: "rom-warrior", raceId: "rom-human", level: 80, }); @@ -163,9 +164,9 @@ describe("RuneWaker Knight periodic skills", () => { expect(damageValues(baseline)).toHaveLength(2); expect(damageValues(boosted)).toHaveLength(2); for (const [index, base] of damageValues(baseline).entries()) { - expect(damageValues(boosted)[index]!.coefficient).toBeCloseTo(base.coefficient * 1.01); - expect(damageValues(boosted)[index]!.basePoints).toBeCloseTo(base.basePoints * 1.01); - expect(damageValues(boosted)[index]!.pointsPerLevel).toBeCloseTo(base.pointsPerLevel * 1.01); + expect(damageValues(boosted)[index]!.coefficient).toBeCloseTo(base.coefficient * 1.285); + expect(damageValues(boosted)[index]!.basePoints).toBeCloseTo(base.basePoints * 1.285); + expect(damageValues(boosted)[index]!.pointsPerLevel).toBeCloseTo(base.pointsPerLevel * 1.285); } expect(romEffectsForCast(abilityById("rom-knight-primary-1")!, { ...context, @@ -173,54 +174,38 @@ describe("RuneWaker Knight periodic skills", () => { })).toEqual(romEffectsForCast(abilityById("rom-knight-primary-1")!, context)); }); - it("makes Divine Punishment apply its sourced Light-damage vulnerability", () => { - useCombatStore.getState().initializeCharacter({ - classId: "rom-knight", secondaryClassId: "rom-warrior", raceId: "rom-human", level: 80, - }); - useCombatStore.getState().registerMob("divine-punishment-target", { - name: "Divine Punishment Target", maxHealth: 100_000, - }); - setMobPosition("divine-punishment-target", [3, 0, 0]); - useCombatStore.getState().selectMob("divine-punishment-target"); - - expect(useCombatStore.getState().castAbility("rom-knight-primary-1", undefined, 1_000)) - .toMatchObject({ ok: true }); - expect(useCombatStore.getState().castAbility("rom-knight-general-0", undefined, 12_000)) - .toMatchObject({ ok: true }); - - const vulnerability = useCombatStore.getState().auras.find((aura) => ( - aura.targetId === "divine-punishment-target" - && aura.definition.id === "rom-knight-divine-punishment-light-vulnerability" - )); - expect(vulnerability?.definition).toMatchObject({ + it("replaces the old Light-only aura with current CoA's general per-seal vulnerability data", () => { + expect(romKnightDivinePunishmentAuraForSealStacks(3)?.aura).toMatchObject({ durationMs: 10_000, - modifiers: [{ kind: "damage", direction: "taken", school: "holy", operation: "percent", value: 0.01 }], + modifiers: [{ kind: "damage", direction: "taken", operation: "percent", value: 0.06 }], }); - expect(vulnerability?.expiresAt).toBe(22_000); + expect(romKnightDivinePunishmentAuraForSealStacks(3)?.aura.id) + .toBe("rom-knight-divine-punishment-damage-taken"); }); - it("reduces Holy Seal cooldown by three seconds with Holy Light's Fury", () => { + it("uses the local Knight/Priest Compassion row bridged to current CoA behavior and no longer changes Holy Seal cooldown", () => { useCombatStore.getState().initializeCharacter({ classId: "rom-knight", secondaryClassId: "rom-priest", raceId: "rom-human", level: 80, }); const state = useCombatStore.getState(); const holySeal = state.abilities.find((ability) => ability.dbcSpellId === 490149)!; - const furyPassive = state.abilities.find((ability) => ability.dbcSpellId === 491635)!; - expect(furyPassive.passive).toBe(true); - expect(furyPassive.effects).toEqual([ + const compassionPassive = state.abilities.find((ability) => ability.dbcSpellId === 491635)!; + expect(compassionPassive).toMatchObject({ name: "Compassion of Holy Light", passive: true }); + expect(compassionPassive.effects).toEqual([ expect.objectContaining({ kind: "apply-aura", - aura: expect.objectContaining({ utilityTags: [ROM_KNIGHT_HOLY_LIGHTS_FURY_TAG] }), + aura: expect.objectContaining({ utilityTags: [ROM_KNIGHT_COMPASSION_OF_HOLY_LIGHT_TAG] }), }), ]); - - useCombatStore.getState().registerMob("holy-lights-fury-target", { - name: "Holy Light's Fury Target", maxHealth: 100_000, - }); - setMobPosition("holy-lights-fury-target", [3, 0, 0]); - useCombatStore.getState().selectMob("holy-lights-fury-target"); - expect(useCombatStore.getState().castAbility(holySeal.id, undefined, 1_000)).toMatchObject({ ok: true }); - expect(useCombatStore.getState().cooldowns[holySeal.id]).toBe(8_000); + const tags = state.auras.find((aura) => aura.definition.utilityTags?.includes(ROM_KNIGHT_COMPASSION_OF_HOLY_LIGHT_TAG)) + ?.definition.utilityTags ?? []; + expect(romEffectsForCast(holySeal, { + sealStacks: 0, bleedCount: 0, charged: false, mainHandDagger: false, + casterMaxHealth: state.maxHealth, targetHealthPercent: 1, passiveTags: tags, + })).toEqual(romEffectsForCast(holySeal, { + sealStacks: 0, bleedCount: 0, charged: false, mainHandDagger: false, + casterMaxHealth: state.maxHealth, targetHealthPercent: 1, + })); }); it.each([true, false])("lets God's Vengeance preserve Holy Seal when the 50% roll is %s", (preservesSeal) => { diff --git a/src/game/romKnightWhirlwind.integration.test.ts b/src/game/romKnightWhirlwind.integration.test.ts index 34079ad0..fe5ac652 100644 --- a/src/game/romKnightWhirlwind.integration.test.ts +++ b/src/game/romKnightWhirlwind.integration.test.ts @@ -16,11 +16,32 @@ function playerWhirlwind(state: ReturnType): Abi return ability; } +function testShield(instanceId: string) { + return { + instanceId, + itemId: 1, + itemKey: instanceId, + name: "Test Shield", + quality: "uncommon" as const, + inventorySlot: "off-hand" as const, + armorType: "shield" as const, + weaponType: null, + itemLevel: 1, + sourceItemLevel: 1, + stats: { ...useCombatStore.getState().gearStats }, + quantity: 1, + sourceBossKey: "test", + sourceBossName: "Test", + acquiredAt: 1, + }; +} + describe("RuneWaker Knight/Warrior Deadly Whirlwind integration", () => { beforeEach(() => { clearMobRuntimeRegistry(); clearPartyRuntimeRegistry(); resetPartyRuntimeClock(); + usePartyStore.setState({ members: [] }); }); it("reduces player Whirlwind to 40 Rage and a 10-second cooldown when Deadly Whirlwind is learned", () => { @@ -51,7 +72,7 @@ describe("RuneWaker Knight/Warrior Deadly Whirlwind integration", () => { const result = useCombatStore.getState().castAbility(whirlwind.id, undefined, 1_000); - expect(result).toMatchObject({ ok: true }); + expect(result, JSON.stringify(result)).toMatchObject({ ok: true }); const final = useCombatStore.getState(); expect(final.resourcePools.rage).toBe(0); expect(final.cooldowns[whirlwind.id]).toBe(11_000); @@ -101,4 +122,100 @@ describe("RuneWaker Knight/Warrior Deadly Whirlwind integration", () => { && event.sourceActorId === knight.id && event.abilityId === whirlwind.id && event.targetActorId === "party-knight-whirlwind-target" && event.effectiveAmount > 0)).toBe(true); }); + + it("applies current Compassion to player Whirlwind Shield only after a landed hit", () => { + const playerShield = testShield("compassion-player-shield"); + useCombatStore.getState().initializeCharacter({ + classId: "rom-knight", secondaryClassId: "rom-priest", raceId: "rom-human", level: 80, + inventory: [playerShield], + equipment: { player: { "off-hand": playerShield.instanceId } }, + }); + const initial = useCombatStore.getState(); + const shield = initial.abilities.find((ability) => ability.dbcSpellId === 490175)!; + expect(shield).toMatchObject({ cooldownMs: 5_000, radius: 100 }); + expect(initial.abilities.find((ability) => ability.dbcSpellId === 491635)).toMatchObject({ + classId: "rom-knight", secondaryClassId: "rom-priest", passive: true, + }); + + const allySeed = createConfiguredPartyMember({ + name: "Wounded Ally", classId: "priest", specialization: "Holy", role: "healer", + }, 80, 0, "compassion-player-ally"); + const ally = { ...allySeed, health: 1 }; + usePartyStore.setState({ members: [ally] }); + registerPartyRuntimePosition(ally.id, [2, 0, 0]); + useCombatStore.getState().synchronizeActors(); + useCombatStore.getState().registerMob("compassion-player-target", { + name: "Compassion Target", maxHealth: 100_000, xpReward: 0, + }); + setMobPosition("compassion-player-target", [8, 0, 0]); + useCombatStore.getState().selectMob("compassion-player-target"); + + const result = useCombatStore.getState().castAbility(shield.id, undefined, 1_000); + const final = useCombatStore.getState(); + + expect(result, JSON.stringify(result)).toMatchObject({ ok: true }); + expect(final.cooldowns[shield.id]).toBe(5_000); + expect(usePartyStore.getState().members.find((member) => member.id === ally.id)!.health).toBeGreaterThan(1); + expect(final.combatEvents.some((event) => event.kind === "damage" + && event.abilityId === shield.id && event.targetActorId === "compassion-player-target" + && event.effectiveAmount > 0 && event.school === "holy")).toBe(true); + expect(final.auras.some((aura) => aura.definition.id === "rom-knight-holy-illumination-proc" + && aura.targetId === ally.id && aura.expiresAt === 11_000)).toBe(true); + }); + + it("applies current Compassion heal, Holy Illumination and 4-second cooldown for a generated companion", () => { + useCombatStore.getState().initializeCharacter({ classId: "priest", level: 80 }); + const seed = "compassion-party-knight-shaman"; + const knightSeed = createConfiguredPartyMember({ + name: "Knight Shaman", + classId: "rom-knight", + secondaryClassId: "rom-priest", + specialization: "Primary", + role: "damage", + }, 80, 0, seed); + const abilities = abilitiesForCharacter("rom-knight", "rom-priest"); + const shield = abilities.find((ability) => ability.dbcSpellId === 490175)!; + const knight = { + ...knightSeed, + health: 1, + cooldowns: Object.fromEntries(abilities + .filter((ability) => ability.id !== shield.id) + .map((ability) => [ability.id, 60_000])), + }; + const partyShield = testShield("compassion-party-shield"); + usePartyStore.setState({ members: [knight], command: "attack" }); + const assignments = { + ...useCombatStore.getState().equipment, + [knight.id]: { "off-hand": partyShield.instanceId }, + }; + useCombatStore.setState((state) => ({ + equipment: assignments, + inventory: [...state.inventory, partyShield], + })); + usePartyStore.getState().syncEquipment(assignments, useCombatStore.getState().inventory); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(knight.id, [0, 0, 0]); + useCombatStore.getState().registerMob("compassion-party-target", { + name: "Compassion Party Target", maxHealth: 100_000, xpReward: 0, + }); + setMobPosition("compassion-party-target", [10, 0, 0]); + useCombatStore.getState().damageMob("compassion-party-target", 1, 100); + updatePartyRuntimeTargetVisibility(knight.id, "compassion-party-target", true); + + advanceDungeonPartyCombat(1_000); + + const finalMember = usePartyStore.getState().members.find((member) => member.id === knight.id)!; + const final = useCombatStore.getState(); + expect(final.combatEvents.some((event) => event.kind === "damage" + && event.sourceActorId === knight.id && event.abilityId === shield.id + && event.targetActorId === "compassion-party-target" && event.effectiveAmount > 0)).toBe(true); + expect(finalMember.health).toBeGreaterThan(1); + expect(finalMember.cooldowns[shield.id]).toBe(5_000); + expect(final.combatEvents.some((event) => event.kind === "damage" + && event.sourceActorId === knight.id && event.abilityId === shield.id + && event.targetActorId === "compassion-party-target" && event.effectiveAmount > 0 + && event.school === "holy")).toBe(true); + expect(final.auras.some((aura) => aura.definition.id === "rom-knight-holy-illumination-proc" + && aura.sourceId === knight.id && aura.targetId === knight.id && aura.expiresAt === 11_000)).toBe(true); + }); }); diff --git a/src/game/romLeopardInstinctOverrides.test.ts b/src/game/romLeopardInstinctOverrides.test.ts new file mode 100644 index 00000000..545e4dfa --- /dev/null +++ b/src/game/romLeopardInstinctOverrides.test.ts @@ -0,0 +1,74 @@ +import { describe, expect, it } from "vitest"; +import { + ROM_COA_LEOPARD_INSTINCT_MAX_STACKS, + createRomLeopardInstinctState, + romLeopardInstinctModifiers, + romLeopardInstinctOnDodge, + romLeopardInstinctOnHitReceived, +} from "./romLeopardInstinctOverrides"; + +describe("current CoA Leopard Instinct passive", () => { + it("starts as a zero-stack passive state without activation or timing fields", () => { + const state = createRomLeopardInstinctState(); + expect(state).toEqual({ stacks: 0 }); + expect("expiresAt" in state).toBe(false); + expect("cooldownUntil" in state).toBe(false); + expect("absorbs" in state).toBe(false); + expect(romLeopardInstinctModifiers(state)).toEqual({ + dodgeRateBonusPercent: 0, + magicResistanceRateBonusPercent: 0, + }); + }); + + it("adds one stack per received hit and keeps both sourced rates separate", () => { + let state = createRomLeopardInstinctState(); + state = romLeopardInstinctOnHitReceived(state); + expect(state.stacks).toBe(1); + expect(romLeopardInstinctModifiers(state)).toEqual({ + dodgeRateBonusPercent: 3, + magicResistanceRateBonusPercent: 3, + }); + + state = romLeopardInstinctOnHitReceived(state); + expect(romLeopardInstinctModifiers(state)).toEqual({ + dodgeRateBonusPercent: 6, + magicResistanceRateBonusPercent: 6, + }); + }); + + it("caps received-hit stacks at ten", () => { + let state = createRomLeopardInstinctState(); + for (let hit = 0; hit < ROM_COA_LEOPARD_INSTINCT_MAX_STACKS + 4; hit += 1) { + state = romLeopardInstinctOnHitReceived(state); + } + + expect(state.stacks).toBe(ROM_COA_LEOPARD_INSTINCT_MAX_STACKS); + expect(romLeopardInstinctModifiers(state)).toEqual({ + dodgeRateBonusPercent: 30, + magicResistanceRateBonusPercent: 30, + }); + }); + + it("loses exactly one stack on dodge and does not underflow", () => { + let state = createRomLeopardInstinctState(4); + state = romLeopardInstinctOnDodge(state); + expect(state).toEqual({ stacks: 3 }); + expect(romLeopardInstinctModifiers(state)).toEqual({ + dodgeRateBonusPercent: 9, + magicResistanceRateBonusPercent: 9, + }); + + const empty = createRomLeopardInstinctState(); + expect(romLeopardInstinctOnDodge(empty)).toBe(empty); + }); + + it("does not model damage absorption", () => { + const state = romLeopardInstinctOnHitReceived(createRomLeopardInstinctState()); + const modifiers = romLeopardInstinctModifiers(state); + expect("absorbs" in modifiers).toBe(false); + expect(modifiers).toEqual({ + dodgeRateBonusPercent: 3, + magicResistanceRateBonusPercent: 3, + }); + }); +}); diff --git a/src/game/romLeopardInstinctOverrides.ts b/src/game/romLeopardInstinctOverrides.ts new file mode 100644 index 00000000..090c290d --- /dev/null +++ b/src/game/romLeopardInstinctOverrides.ts @@ -0,0 +1,74 @@ +/** + * Source-backed current-CoA state for Knight/Rogue Leopard Instinct (495402). + * It is a passive: each hit received adds one stack (up to 10), and + * dodging removes one stack. Each stack grants +3% Dodge and +3% Magic + * Resistance Rate. The old three-hit absorb, activation, duration, and + * cooldown behavior do not apply to this current passive. + * + * Sources: + * - https://chroniclesofarcadia.com/tr/patch/11-1-5-3000 + * - https://chroniclesofarcadia.com/fr/patch/12-1-2-1000 + * + * The helper exposes Magic Resistance Rate separately. The combat runtime + * currently has no matching stat consumer, so callers must not reinterpret + * it as elemental resistance without a confirmed conversion. + */ + +export const ROM_COA_LEOPARD_INSTINCT_ID = 495402; +export const ROM_COA_LEOPARD_INSTINCT_MAX_STACKS = 10; +export const ROM_COA_LEOPARD_INSTINCT_BONUS_PER_STACK_PERCENT = 3; + +export interface RomLeopardInstinctState { + readonly stacks: number; +} + +export interface RomLeopardInstinctModifiers { + /** Sourced bonus to Dodge rate. */ + readonly dodgeRateBonusPercent: number; + /** Sourced bonus to Magic Resistance Rate; kept separate from elemental resistance. */ + readonly magicResistanceRateBonusPercent: number; +} + +const NO_MODIFIERS: RomLeopardInstinctModifiers = { + dodgeRateBonusPercent: 0, + magicResistanceRateBonusPercent: 0, +}; + +/** Initial passive state; stacks persist until combat events change them. */ +export function createRomLeopardInstinctState(stacks = 0): RomLeopardInstinctState { + return { stacks: clampStacks(stacks) }; +} + +/** Add one stack for each received hit, capped at ten. */ +export function romLeopardInstinctOnHitReceived( + state: RomLeopardInstinctState, +): RomLeopardInstinctState { + const stacks = clampStacks(state.stacks); + if (stacks >= ROM_COA_LEOPARD_INSTINCT_MAX_STACKS) return state; + return { stacks: stacks + 1 }; +} + +/** A dodge removes one stack; the passive has no absorb charge behavior. */ +export function romLeopardInstinctOnDodge( + state: RomLeopardInstinctState, +): RomLeopardInstinctState { + const stacks = clampStacks(state.stacks); + if (stacks <= 0) return state; + return { stacks: stacks - 1 }; +} + +/** Resolve Dodge and Magic Resistance Rate independently from current stacks. */ +export function romLeopardInstinctModifiers( + state: RomLeopardInstinctState | null, +): RomLeopardInstinctModifiers { + if (!state) return NO_MODIFIERS; + const bonus = clampStacks(state.stacks) * ROM_COA_LEOPARD_INSTINCT_BONUS_PER_STACK_PERCENT; + return { + dodgeRateBonusPercent: bonus, + magicResistanceRateBonusPercent: bonus, + }; +} + +function clampStacks(stacks: number): number { + return Math.max(0, Math.min(ROM_COA_LEOPARD_INSTINCT_MAX_STACKS, Math.trunc(stacks))); +} diff --git a/src/game/romMageDruidGreenGuardian.integration.test.ts b/src/game/romMageDruidGreenGuardian.integration.test.ts new file mode 100644 index 00000000..d5e9fd4c --- /dev/null +++ b/src/game/romMageDruidGreenGuardian.integration.test.ts @@ -0,0 +1,108 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition, updatePartyRuntimePosition } from "./partyRuntimeRegistry"; +import { + isRomMageDruidPair, + ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG, + ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, + romMageDruidGreenGuardianMovementSpeedMultiplier, +} from "./romMageDruidGreenGuardianRuntime"; + +const skill = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID + && ability.classId === "rom-mage" && ability.secondaryClassId === "rom-druid"); + +function guardianAura(targetId: string) { + return useCombatStore.getState().auras.find((aura) => aura.targetId === targetId + && aura.definition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG)); +} + +describe("CoA Mage/Druid Green Guardian runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-mage", + secondaryClassId: "rom-druid", + raceId: "rom-elf", + level: 45, + role: "damage", + }); + usePartyStore.getState().initializeParty( + "green-guardian-test", 45, useCombatStore.getState().health, "damage", 2, "rom", + ); + }); + + it("casts as a self skill, accrues only after standing, pauses after movement, and speeds player movement", () => { + if (!skill) throw new Error("Missing generated Mage/Druid Green Guardian row"); + expect(isRomMageDruidPair(useCombatStore.getState())).toBe(true); + expect(useCombatStore.getState().castAbility(skill.id, undefined, 1_000)).toMatchObject({ ok: true }); + expect(guardianAura(PLAYER_AGGRO_ID)?.stacks).toBe(0); + + useCombatStore.getState().tick(0.5, 1_500); + useCombatStore.getState().tick(0.5, 2_000); + useCombatStore.getState().tick(0.5, 2_500); + expect(guardianAura(PLAYER_AGGRO_ID)?.stacks).toBe(1); + expect(romMageDruidGreenGuardianMovementSpeedMultiplier( + useCombatStore.getState().auras, PLAYER_AGGRO_ID, 2_500, + )).toBe(1.01); + + useCombatStore.getState().setPlayerPosition([1, 0, 0]); + useCombatStore.getState().tick(0.25, 2_750); + expect(guardianAura(PLAYER_AGGRO_ID)?.stacks).toBe(1); + useCombatStore.getState().tick(0.5, 3_250); + expect(guardianAura(PLAYER_AGGRO_ID)?.stacks).toBe(1); + useCombatStore.getState().tick(0.5, 3_750); + expect(guardianAura(PLAYER_AGGRO_ID)?.stacks).toBe(2); + }); + + it("starts a generated Mage/Druid companion at zero and accrues against its runtime position", () => { + if (!skill) throw new Error("Missing generated Mage/Druid Green Guardian row"); + const seed = "green-guardian-companion-test"; + const companion = createConfiguredPartyMember({ + name: "Green Guardian Mage", + classId: "rom-mage", + secondaryClassId: "rom-druid", + specialization: "Primary", + role: "damage", + }, 45, 0, seed); + usePartyStore.getState().initializeParty(seed, 45, useCombatStore.getState().health, "damage", 2, "rom"); + usePartyStore.setState({ members: [companion] }); + registerPartyRuntimePosition(companion.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + const effect = skill.effects.find((candidate) => candidate.kind === "apply-aura"); + if (!effect || effect.kind !== "apply-aura") throw new Error("Green Guardian has no self aura effect"); + expect(useCombatStore.getState().applyActorAura(companion.id, companion.id, skill, effect, 1_000)).toBe(true); + expect(guardianAura(companion.id)?.stacks).toBe(0); + + useCombatStore.getState().tick(0.5, 1_500); + useCombatStore.getState().tick(0.5, 2_000); + useCombatStore.getState().tick(0.5, 2_500); + expect(guardianAura(companion.id)?.stacks).toBe(1); + expect(romMageDruidGreenGuardianMovementSpeedMultiplier( + useCombatStore.getState().auras, companion.id, 2_500, + )).toBe(1.01); + + updatePartyRuntimePosition(companion.id, 1, 0, 0); + useCombatStore.getState().tick(0.25, 2_750); + expect(guardianAura(companion.id)?.stacks).toBe(1); + useCombatStore.getState().tick(1, 3_750); + expect(guardianAura(companion.id)?.stacks).toBe(2); + }); + + it("does not grant movement speed to the reverse Druid/Mage pair", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-druid", + secondaryClassId: "rom-mage", + raceId: "rom-elf", + level: 45, + role: "damage", + }); + expect(isRomMageDruidPair(useCombatStore.getState())).toBe(false); + expect(romMageDruidGreenGuardianMovementSpeedMultiplier([], PLAYER_AGGRO_ID, 2_500)).toBe(1); + }); +}); diff --git a/src/game/romMageDruidGreenGuardian.party.integration.test.ts b/src/game/romMageDruidGreenGuardian.party.integration.test.ts new file mode 100644 index 00000000..36c9afc2 --- /dev/null +++ b/src/game/romMageDruidGreenGuardian.party.integration.test.ts @@ -0,0 +1,94 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition, updatePartyRuntimeTargetVisibility } from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG, ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID } from "./romMageDruidGreenGuardianRuntime"; + +describe("CoA Mage/Druid Green Guardian companion cast selection", () => { + beforeEach(() => { + resetPartyRuntimeClock(); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + raceId: "rom-elf", + level: 45, + role: "healer", + }); + usePartyStore.getState().initializeParty( + "green-guardian-party-test", 45, useCombatStore.getState().health, "damage", 2, "rom", + ); + }); + + it("casts the learned zero-cost self skill through party combat and starts at zero stacks", () => { + const seed = "green-guardian-party-cast"; + const companion = createConfiguredPartyMember({ + name: "Green Guardian Mage", + classId: "rom-mage", + secondaryClassId: "rom-druid", + specialization: "Primary", + role: "damage", + }, 45, 0, seed); + usePartyStore.setState({ + members: [companion], + command: "attack", + activeMobId: "guardian-target", + }); + registerPartyRuntimePosition(companion.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + useCombatStore.getState().registerMob("guardian-target", { + name: "Guardian target", + level: 1, + maxHealth: 1_000, + xpReward: 0, + }); + setMobPosition("guardian-target", [2, 0, 0]); + useCombatStore.getState().damageMob("guardian-target", 1, 500); + updatePartyRuntimeTargetVisibility(companion.id, "guardian-target", true); + + advanceDungeonPartyCombat(1_000); + + const aura = useCombatStore.getState().auras.find((candidate) => candidate.targetId === companion.id + && candidate.definition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG)); + expect(aura?.stacks).toBe(0); + expect(aura?.sourceId).toBe(companion.id); + const committed = usePartyStore.getState().members[0]; + expect(committed.globalCooldownEndsAt).toBe(2_500); + expect(committed.cooldowns).not.toHaveProperty(String(ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID)); + }); + + it("does not auto-cast Green Guardian for the reverse Druid/Mage pair", () => { + const seed = "green-guardian-party-reverse"; + const companion = createConfiguredPartyMember({ + name: "Reverse Pair Druid", + classId: "rom-druid", + secondaryClassId: "rom-mage", + specialization: "Primary", + role: "damage", + }, 45, 0, seed); + usePartyStore.setState({ + members: [companion], + command: "attack", + activeMobId: "guardian-target", + }); + registerPartyRuntimePosition(companion.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + useCombatStore.getState().registerMob("guardian-target", { + name: "Guardian target", + level: 1, + maxHealth: 1_000, + xpReward: 0, + }); + setMobPosition("guardian-target", [2, 0, 0]); + useCombatStore.getState().damageMob("guardian-target", 1, 500); + updatePartyRuntimeTargetVisibility(companion.id, "guardian-target", true); + + advanceDungeonPartyCombat(1_000); + + expect(useCombatStore.getState().auras.some((candidate) => candidate.targetId === companion.id + && candidate.definition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG))).toBe(false); + }); +}); diff --git a/src/game/romMageDruidGreenGuardianRuntime.test.ts b/src/game/romMageDruidGreenGuardianRuntime.test.ts new file mode 100644 index 00000000..744a9259 --- /dev/null +++ b/src/game/romMageDruidGreenGuardianRuntime.test.ts @@ -0,0 +1,74 @@ +import { describe, expect, it } from "vitest"; +import { + isRomMageDruidPair, + ROM_MAGE_DRUID_GREEN_GUARDIAN_GAIN_INTERVAL_MS, + ROM_MAGE_DRUID_GREEN_GUARDIAN_MAX_STACKS, + ROM_MAGE_DRUID_GREEN_GUARDIAN_MOVEMENT_SPEED_PERCENT_PER_STACK, + romMageDruidGreenGuardianAdvanceStationaryProgress, + romMageDruidGreenGuardianMovementSpeedPercent, + romMageDruidGreenGuardianMovementSpeedMultiplier, + romMageDruidGreenGuardianStacksAfterStationarySecond, + romMageDruidGreenGuardianAuraDefinition, +} from "./romMageDruidGreenGuardianRuntime"; + +describe("current CoA Mage/Druid Green Guardian stacks", () => { + it("applies only to the exact Mage/Druid pair", () => { + expect(isRomMageDruidPair({ classId: "rom-mage", secondaryClassId: "rom-druid" })).toBe(true); + expect(isRomMageDruidPair({ classId: "rom-druid", secondaryClassId: "rom-mage" })).toBe(false); + expect(isRomMageDruidPair({ classId: "rom-mage", secondaryClassId: "rom-priest" })).toBe(false); + }); + + it("gains one stack for an eligible still second, up to the sourced cap of twenty", () => { + expect(ROM_MAGE_DRUID_GREEN_GUARDIAN_GAIN_INTERVAL_MS).toBe(1_000); + expect(romMageDruidGreenGuardianStacksAfterStationarySecond(0)).toBe(1); + expect(romMageDruidGreenGuardianStacksAfterStationarySecond(14)).toBe(15); + expect(romMageDruidGreenGuardianStacksAfterStationarySecond(19)).toBe(20); + expect(romMageDruidGreenGuardianStacksAfterStationarySecond(20)).toBe(20); + expect(ROM_MAGE_DRUID_GREEN_GUARDIAN_MAX_STACKS).toBe(20); + }); + + it("grants one percentage point of movement speed per stack", () => { + expect(ROM_MAGE_DRUID_GREEN_GUARDIAN_MOVEMENT_SPEED_PERCENT_PER_STACK).toBe(1); + expect(romMageDruidGreenGuardianMovementSpeedPercent(0)).toBe(0); + expect(romMageDruidGreenGuardianMovementSpeedPercent(7)).toBe(7); + expect(romMageDruidGreenGuardianMovementSpeedPercent(20)).toBe(20); + expect(romMageDruidGreenGuardianMovementSpeedPercent(99)).toBe(20); + }); + + it("pauses gains for one full stationary second after observed movement without removing stacks", () => { + const first = romMageDruidGreenGuardianAdvanceStationaryProgress(undefined, [0, 0, 0], 1_000); + expect(first).toEqual({ progress: { position: [0, 0, 0], stationaryMs: 0 }, stacksGained: 0 }); + const moved = romMageDruidGreenGuardianAdvanceStationaryProgress(first.progress, [1, 0, 0], 500); + expect(moved.stacksGained).toBe(0); + expect(moved.progress.stationaryMs).toBe(0); + const half = romMageDruidGreenGuardianAdvanceStationaryProgress(moved.progress, [1, 0, 0], 500); + expect(half.stacksGained).toBe(0); + const full = romMageDruidGreenGuardianAdvanceStationaryProgress(half.progress, [1, 0, 0], 500); + expect(full.stacksGained).toBe(1); + expect(romMageDruidGreenGuardianStacksAfterStationarySecond(4)).toBe(5); + }); + + it("uses an indefinite, initially zero-stack aura and a 1% movement bonus per stack", () => { + const definition = romMageDruidGreenGuardianAuraDefinition(); + expect(definition.durationMs).toBeNull(); + expect(definition.maxStacks).toBe(20); + const aura = { + instanceId: "target:green-guardian:source", + definition, + sourceId: "source", + targetId: "target", + appliedAt: 0, + expiresAt: null, + stacks: 7, + absorbs: [], + procStates: [], + }; + expect(romMageDruidGreenGuardianMovementSpeedMultiplier([aura], "target", 1)).toBe(1.07); + }); + + it("normalizes malformed stack counts to the sourced zero-to-twenty bounds", () => { + expect(romMageDruidGreenGuardianStacksAfterStationarySecond(-5)).toBe(1); + expect(romMageDruidGreenGuardianMovementSpeedPercent(4.9)).toBe(4); + expect(romMageDruidGreenGuardianStacksAfterStationarySecond(Number.NaN)).toBe(1); + }); +}); diff --git a/src/game/romMageDruidGreenGuardianRuntime.ts b/src/game/romMageDruidGreenGuardianRuntime.ts new file mode 100644 index 00000000..309da8c3 --- /dev/null +++ b/src/game/romMageDruidGreenGuardianRuntime.ts @@ -0,0 +1,110 @@ +import type { AbilityEffect } from "./abilityCatalog"; +import type { ActiveAura, AuraDefinition } from "./combatAuras"; + +/** Current CoA Mage/Druid Green Guardian stack behavior (skill 494331). */ +export const ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID = 494331; +export const ROM_MAGE_DRUID_GREEN_GUARDIAN_MAX_STACKS = 20; +export const ROM_MAGE_DRUID_GREEN_GUARDIAN_GAIN_INTERVAL_MS = 1_000; +export const ROM_MAGE_DRUID_GREEN_GUARDIAN_MOVEMENT_SPEED_PERCENT_PER_STACK = 1; +export const ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG = "rom-mage-druid-green-guardian"; +export const ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION = "While standing still, gain one Green Guardian stack each second, up to 20. Each stack grants 1% movement speed. Moving pauses stack generation. Current CoA also describes an MP restore when a stack is lost, but the loss trigger and percentage basis are unspecified, so that clause is not implemented."; + +export function romMageDruidGreenGuardianAuraDefinition(): AuraDefinition { + return { + id: "rom:mage-druid:green-guardian", + name: "Green Guardian", + description: ROM_MAGE_DRUID_GREEN_GUARDIAN_DESCRIPTION, + disposition: "buff", + durationMs: null, + maxStacks: ROM_MAGE_DRUID_GREEN_GUARDIAN_MAX_STACKS, + stackBehavior: "replace", + utilityTags: [ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG], + modifiers: [{ + kind: "stat", + stat: "movement-speed", + operation: "percent", + value: ROM_MAGE_DRUID_GREEN_GUARDIAN_MOVEMENT_SPEED_PERCENT_PER_STACK / 100, + perStack: true, + }], + }; +} + +export function romMageDruidGreenGuardianAuraEffect(): Extract { + return { + kind: "apply-aura", + recipient: "caster", + aura: romMageDruidGreenGuardianAuraDefinition(), + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: ROM_MAGE_DRUID_GREEN_GUARDIAN_SKILL_ID, + }; +} + +export function isRomMageDruidPair(row: { + readonly classId?: string; + readonly secondaryClassId?: string | null; +}): boolean { + return row.classId === "rom-mage" && row.secondaryClassId === "rom-druid"; +} + +function boundedStacks(stacks: number): number { + if (!Number.isFinite(stacks)) return 0; + return Math.max(0, Math.min(ROM_MAGE_DRUID_GREEN_GUARDIAN_MAX_STACKS, Math.floor(stacks))); +} + +/** Apply one source-described stack gain after an eligible second spent standing still. */ +export function romMageDruidGreenGuardianStacksAfterStationarySecond(stacks: number): number { + return Math.min(ROM_MAGE_DRUID_GREEN_GUARDIAN_MAX_STACKS, boundedStacks(stacks) + 1); +} + +/** Percentage points of movement speed granted by the current stack count. */ +export function romMageDruidGreenGuardianMovementSpeedPercent(stacks: number): number { + return boundedStacks(stacks) * ROM_MAGE_DRUID_GREEN_GUARDIAN_MOVEMENT_SPEED_PERCENT_PER_STACK; +} + +export function romMageDruidGreenGuardianMovementSpeedMultiplier( + auras: readonly ActiveAura[], + targetId: string, + now: number, +): number { + const stacks = auras + .filter((aura) => aura.targetId === targetId + && aura.definition.utilityTags?.includes(ROM_MAGE_DRUID_GREEN_GUARDIAN_AURA_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)) + .reduce((total, aura) => total + boundedStacks(aura.stacks), 0); + return 1 + romMageDruidGreenGuardianMovementSpeedPercent(stacks) / 100; +} + +export interface RomMageDruidGreenGuardianStationaryProgress { + readonly position: readonly [number, number, number]; + readonly stationaryMs: number; +} + +export interface RomMageDruidGreenGuardianStationaryAdvance { + readonly progress: RomMageDruidGreenGuardianStationaryProgress; + readonly stacksGained: number; +} + +/** + * Advance one simulator tick. Any observed position change resets progress; + * this is the documented one-full-stationary-second approximation for CoA's + * unspecific “brief” movement pause. It does not remove existing stacks. + */ +export function romMageDruidGreenGuardianAdvanceStationaryProgress( + previous: RomMageDruidGreenGuardianStationaryProgress | undefined, + position: readonly [number, number, number], + deltaMs: number, +): RomMageDruidGreenGuardianStationaryAdvance { + const safeDelta = Math.max(0, Number.isFinite(deltaMs) ? deltaMs : 0); + if (!previous) return { progress: { position, stationaryMs: 0 }, stacksGained: 0 }; + const moved = (position[0] - previous.position[0]) ** 2 + + (position[1] - previous.position[1]) ** 2 + + (position[2] - previous.position[2]) ** 2 > 1e-8; + if (moved) return { progress: { position, stationaryMs: 0 }, stacksGained: 0 }; + const total = Math.max(0, previous.stationaryMs) + safeDelta; + return { + progress: { position, stationaryMs: total % ROM_MAGE_DRUID_GREEN_GUARDIAN_GAIN_INTERVAL_MS }, + stacksGained: Math.floor(total / ROM_MAGE_DRUID_GREEN_GUARDIAN_GAIN_INTERVAL_MS), + }; +} diff --git a/src/game/romMageFireWard.catalog.test.ts b/src/game/romMageFireWard.catalog.test.ts new file mode 100644 index 00000000..edc46fe2 --- /dev/null +++ b/src/game/romMageFireWard.catalog.test.ts @@ -0,0 +1,61 @@ +import { describe, expect, it } from "vitest"; +import { abilityById } from "./abilityCatalog"; +import { applyAura, resolveDamageValue } from "./combatAuras"; + +describe("RoM Mage Fire Ward catalog behavior", () => { + it("retains RuneWaker's +10 Fire resistance and applies current CoA's all-magic reduction", () => { + const fireWard = abilityById("rom-mage-general-5"); + expect(fireWard).toMatchObject({ + dbcSpellId: 490_248, + target: "self", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 0, + range: { min: 0, max: 15 }, + radius: 10, + targeting: { shape: "circle", radius: 10 }, + costs: [{ resource: "mana", amount: 120 }], + description: expect.stringContaining("+230 Fire resistance at skill level 105"), + }); + expect(fireWard?.description).toContain("Fire resistance by 10 points"); + expect(fireWard?.description).toContain("11.5%"); + + const auraEffect = fireWard?.effects.find((effect) => effect.kind === "apply-aura"); + expect(auraEffect).toMatchObject({ + kind: "apply-aura", + scope: "party", + radius: 10, + aura: { name: "Fire Ward: fire-resistance" }, + }); + if (!auraEffect || auraEffect.kind !== "apply-aura") throw new Error("Fire Ward aura missing"); + + expect(auraEffect.aura.durationMs).toBe(600_000); + expect(auraEffect.aura.modifiers).toContainEqual(expect.objectContaining({ + kind: "stat", + stat: "resistance:fire", + operation: "flat", + value: 10, + })); + expect(auraEffect.aura.description).toContain("CoA lists +230 at skill level 105"); + + const auras = applyAura([], { + definition: auraEffect.aura, + sourceId: "fire-ward-mage", + targetId: "fire-ward-recipient", + now: 1_000, + }).auras; + const magicalSchools = ["arcane", "fire", "frost", "holy", "nature", "shadow"] as const; + for (const school of magicalSchools) { + expect(resolveDamageValue(100, auras, { + direction: "taken", + school, + attackKind: "spell", + })).toBeCloseTo(88.5); + } + expect(resolveDamageValue(100, auras, { + direction: "taken", + school: "physical", + attackKind: "melee", + })).toBe(100); + }); +}); diff --git a/src/game/romMageFireWard.integration.test.ts b/src/game/romMageFireWard.integration.test.ts new file mode 100644 index 00000000..521848fc --- /dev/null +++ b/src/game/romMageFireWard.integration.test.ts @@ -0,0 +1,104 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { abilityById } from "./abilityCatalog"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; +import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, +} from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; + +const FIRE_WARD_ID = "rom-mage-general-5"; +const FIRE_WARD_AURA_NAME = "Fire Ward: fire-resistance"; + +function fireWardAura(targetId: string, now: number) { + return useCombatStore.getState().auras.find((aura) => aura.targetId === targetId + && aura.definition.name === FIRE_WARD_AURA_NAME + && (aura.expiresAt === null || aura.expiresAt > now)); +} + +function configureParty(seed: string) { + const caster = createConfiguredPartyMember({ + name: "Fire Ward Mage", + classId: "rom-mage", + specialization: "Primary", + role: "damage", + }, 80, 0, seed); + const nearby = createConfiguredPartyMember({ + name: "Nearby Fire Ward Ally", + classId: "rom-priest", + specialization: "Primary", + role: "healer", + }, 80, 1, seed); + const distant = createConfiguredPartyMember({ + name: "Distant Fire Ward Ally", + classId: "rom-priest", + specialization: "Primary", + role: "damage", + }, 80, 2, seed); + + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2, "rom"); + usePartyStore.setState({ members: [caster, nearby, distant] }); + registerPartyRuntimePosition(caster.id, [0, 0, 0]); + registerPartyRuntimePosition(nearby.id, [8, 0, 0]); + registerPartyRuntimePosition(distant.id, [12, 0, 0]); + useCombatStore.getState().synchronizeActors(); + return { caster, nearby, distant }; +} + +describe("RoM Mage Fire Ward current CoA behavior", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useDungeonSimulationStore.setState({ sessionMode: "play" }); + useCombatStore.getState().initializeCharacter({ classId: "rom-mage", raceId: "rom-human", level: 80 }); + useCombatStore.setState({ playerPosition: [0, 0, 0] }); + }); + + it("applies the player's Fire Ward to self and nearby party members only", () => { + const { caster, nearby, distant } = configureParty("player-fire-ward-radius"); + expect(useCombatStore.getState().castAbility(FIRE_WARD_ID, undefined, 1_000)).toMatchObject({ ok: true }); + + expect(fireWardAura(PLAYER_AGGRO_ID, 1_000)).toBeDefined(); + expect(fireWardAura(caster.id, 1_000)).toBeDefined(); + expect(fireWardAura(nearby.id, 1_000)).toBeDefined(); + expect(fireWardAura(distant.id, 1_000)).toBeUndefined(); + }); + + it("applies a generated companion's Fire Ward to itself and nearby party members only", () => { + const seed = "companion-fire-ward-radius"; + const { caster, nearby, distant } = configureParty(seed); + const fireWard = abilityById(FIRE_WARD_ID)!; + usePartyStore.setState({ members: [{ + ...caster, + resource: 10_000, + maxResource: 10_000, + resourcePools: { ...caster.resourcePools, mana: 10_000 }, + activeCast: { + abilityId: fireWard.id, + school: "arcane", + mode: "cast", + startedAt: 1_000, + completesAt: 1_000, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: caster.id, + }, + activeCastTargetId: caster.id, + status: "attacking", + }, nearby, distant] }); + useCombatStore.getState().synchronizeActors(); + + advanceDungeonPartyCombat(1_000); + + expect(fireWardAura(caster.id, 1_000)).toBeDefined(); + expect(fireWardAura(nearby.id, 1_000)).toBeDefined(); + expect(fireWardAura(distant.id, 1_000)).toBeUndefined(); + expect(fireWardAura(PLAYER_AGGRO_ID, 1_000)).toBeDefined(); + }); +}); diff --git a/src/game/romMageMechanics.test.ts b/src/game/romMageMechanics.test.ts index e736fd48..b725c0c0 100644 --- a/src/game/romMageMechanics.test.ts +++ b/src/game/romMageMechanics.test.ts @@ -252,14 +252,14 @@ describe("RoM Mage mechanics", () => { .toMatchObject({ ok: true, affectedMobIds: ["arrow-target", "arrow-path"] }); }); - it("doubles only Fireball and Flame on the 10% Eruption proc and runs Control Flame once", () => { + it("doubles only Fireball and Flame on the 30% Eruption proc and runs Control Flame once", () => { const fireball = abilityById("rom-mage-general-0")!; const tags = new Set([ ROM_MAGE_WARLOCK_PASSIVE_TAGS.eruption, ROM_MAGE_WARLOCK_PASSIVE_TAGS.controlFlame, ]); - const procced = romMageWarlockCastEffects(fireball, fireball.effects, tags, 0.099); - const ordinary = romMageWarlockCastEffects(fireball, fireball.effects, tags, 0.1); + const procced = romMageWarlockCastEffects(fireball, fireball.effects, tags, 0.299); + const ordinary = romMageWarlockCastEffects(fireball, fireball.effects, tags, 0.3); expect(procced.filter((effect) => effect.kind === "damage")).toEqual( fireball.effects.filter((effect) => effect.kind === "damage").map((effect) => effect.kind === "damage" ? expect.objectContaining({ @@ -292,7 +292,7 @@ describe("RoM Mage mechanics", () => { expect(romMageWarlockCastEffects(fireball, fireball.effects, new Set([ ...tags, ROM_MAGE_WARLOCK_PASSIVE_TAGS.controlFlameCooldown, - ]), 0.099).some((effect) => effect.kind === "apply-aura" + ]), 0.299).some((effect) => effect.kind === "apply-aura" && effect.aura.id === "rom-mage-druid-control-flame-buff")).toBe(false); }); diff --git a/src/game/romMageOverrides.ts b/src/game/romMageOverrides.ts index 533cfc13..5ed8539e 100644 --- a/src/game/romMageOverrides.ts +++ b/src/game/romMageOverrides.ts @@ -5,6 +5,8 @@ import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; // Elemental Weakness component (500365) is an all-resistance −30 modifier; // expand it so the debuff affects the same fields used by damage resolution. const MODELED_MAGIC_RESISTANCES = ["arcane", "fire", "frost", "nature", "shadow"] as const; +const MODELED_MAGICAL_DAMAGE_SCHOOLS = ["arcane", "fire", "frost", "holy", "nature", "shadow"] as const; +const ROM_MAGE_FIRE_WARD_RADIUS = 10; export function overrideRomMageEffects( row: RomGeneratedAbilityLike, @@ -18,6 +20,31 @@ export function overrideRomMageEffects( // Light of Day is a landed-hit proc for Mage/Knight builds, not an always-on // damage aura. Its trigger and internal cooldown are applied at hit time. if (row.sourceSkillId === 493034) return []; + if (row.sourceSkillId === 490248) { + return translated.map((effect) => { + if (effect.kind !== "apply-aura") return effect; + const existingModifiers = effect.aura.modifiers ?? []; + return { + ...effect, + scope: "party", + radius: ROM_MAGE_FIRE_WARD_RADIUS, + aura: { + ...effect.aura, + description: "Current CoA reduces received magical damage by 11.5%. The simulator keeps RuneWaker's +10 Fire resistance and 10-minute duration; CoA lists +230 at skill level 105, but no scaling curve is modeled.", + modifiers: [ + ...existingModifiers, + ...MODELED_MAGICAL_DAMAGE_SCHOOLS.map((school) => ({ + kind: "damage" as const, + direction: "taken" as const, + school, + operation: "percent" as const, + value: -0.115, + })), + ], + }, + }; + }); + } if (row.sourceSkillId !== 490247) return null; return translated.map((effect) => { diff --git a/src/game/romMageWarlockOverrides.ts b/src/game/romMageWarlockOverrides.ts index 5dec6cce..a40b8d65 100644 --- a/src/game/romMageWarlockOverrides.ts +++ b/src/game/romMageWarlockOverrides.ts @@ -27,7 +27,7 @@ const INDUSTRY_FIRE_HIT_BASE = 140; const INDUSTRY_FIRE_HIT_PER_LEVEL = 40; const INDUSTRY_FIRE_DOT_BASE = 23.4; const INDUSTRY_FIRE_DOT_PER_LEVEL = 10.4; -const MAGE_ERUPTION_PROC_CHANCE = 0.1; +export const ROM_COA_MAGE_ERUPTION_BASE_PROC_CHANCE = 0.3; function scaledDamage(effect: AbilityEffect, factor: number): AbilityEffect { if (effect.kind !== "damage") return effect; @@ -176,7 +176,7 @@ export function romMageWarlockCastEffects( if ([490204, 491150].includes(ability.dbcSpellId) && passiveTags.has(ROM_MAGE_WARLOCK_PASSIVE_TAGS.eruption) - && eruptionProcRoll < MAGE_ERUPTION_PROC_CHANCE) { + && eruptionProcRoll < ROM_COA_MAGE_ERUPTION_BASE_PROC_CHANCE) { const doubledDamage = effects.map((effect) => scaledDamage(effect, 2)); return passiveTags.has(ROM_MAGE_WARLOCK_PASSIVE_TAGS.controlFlame) && !passiveTags.has(ROM_MAGE_WARLOCK_PASSIVE_TAGS.controlFlameCooldown) diff --git a/src/game/romPlayerCatalog.generated.json b/src/game/romPlayerCatalog.generated.json index 5862c1fd..1af44980 100644 --- a/src/game/romPlayerCatalog.generated.json +++ b/src/game/romPlayerCatalog.generated.json @@ -1 +1 @@ -{"schemaVersion":1,"source":{"rootHint":"RuneWaker source snapshot","hashes":{"learnMagic":"6148199bcd1484ba1a122a6db5e2b3c2f2a161402bfe67fc67eb53f55fc6cfa3","magicCollect":"4aae19865cb07b30f99945aa7319a0096db244ff5e5b4b5d902fc6889474f501","magicObject":"52af13a2d8cfa9a66d4caa2d3c38832edc232f058995a64ef8135a6b82e43691","imageObject":"dd5ffcfd74b253dcecaa2f41a931a634dd45ef5f7c13e849d539ddc47fdee1f9","vocationTable":"f06cdaf60c54415dcbea47e9fa0e77b7527035a2aec73d3289370dc39751e76c","strings":"0c20d43660cb2ee042a78f7a8c18b4e104a263d54dd8c4bc98a54155e8adb3b0","eliteLua":"ee9e337548abd7fc555d85bf2f96813dfd77416c3e65d4cadf74a80838da1486","roleAttr":"8143a90ce826bf3152551a4508d212f186012cbc054e505e426551cb62369c1f","objectStruct":"708f2d087f2654b97d149ab7124d9cdffc915cf8bf18108feff3f1a45f124c20","interfaceFdb":"51bbb5a9d6a19a254b302000d3dd6e3a796f4f759015f3352f576a1055496e30"}},"canonicalClasses":[{"id":"rom-warrior","sourceClassId":1,"name":"Warrior","resource":"rage"},{"id":"rom-scout","sourceClassId":2,"name":"Scout","resource":"focus"},{"id":"rom-rogue","sourceClassId":3,"name":"Rogue","resource":"energy"},{"id":"rom-mage","sourceClassId":4,"name":"Mage","resource":"mana"},{"id":"rom-priest","sourceClassId":5,"name":"Priest","resource":"mana"},{"id":"rom-knight","sourceClassId":6,"name":"Knight","resource":"mana"},{"id":"rom-warden","sourceClassId":7,"name":"Warden","resource":"mana"},{"id":"rom-druid","sourceClassId":8,"name":"Druid","resource":"mana"},{"id":"rom-warlock","sourceClassId":9,"name":"Warlock","resource":"focus"},{"id":"rom-champion","sourceClassId":10,"name":"Champion","resource":"rage"}],"baseStatGrowth":{"rom-warrior":{"strength":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"stamina":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"intellect":{"levelOne":5,"flatGrowth":1.9,"percentGrowth":0.02},"wisdom":{"levelOne":6,"flatGrowth":2.1,"percentGrowth":0.02},"agility":{"levelOne":12,"flatGrowth":4.25,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-scout":{"strength":{"levelOne":11,"flatGrowth":3.85,"percentGrowth":0.02},"stamina":{"levelOne":10,"flatGrowth":3.65,"percentGrowth":0.02},"intellect":{"levelOne":10,"flatGrowth":3.6,"percentGrowth":0.02},"wisdom":{"levelOne":9,"flatGrowth":3.4,"percentGrowth":0.02},"agility":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-rogue":{"strength":{"levelOne":12,"flatGrowth":4.15,"percentGrowth":0.02},"stamina":{"levelOne":11,"flatGrowth":3.9,"percentGrowth":0.02},"intellect":{"levelOne":7,"flatGrowth":2.6,"percentGrowth":0.02},"wisdom":{"levelOne":7,"flatGrowth":2.4,"percentGrowth":0.02},"agility":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-mage":{"strength":{"levelOne":5,"flatGrowth":1.9,"percentGrowth":0.02},"stamina":{"levelOne":9,"flatGrowth":3.4,"percentGrowth":0.02},"intellect":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"wisdom":{"levelOne":12,"flatGrowth":4.25,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-priest":{"strength":{"levelOne":7,"flatGrowth":2.5,"percentGrowth":0.02},"stamina":{"levelOne":10,"flatGrowth":3.6,"percentGrowth":0.02},"intellect":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"wisdom":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-knight":{"strength":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"stamina":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"intellect":{"levelOne":11,"flatGrowth":3.75,"percentGrowth":0.02},"wisdom":{"levelOne":11,"flatGrowth":4.1,"percentGrowth":0.02},"agility":{"levelOne":11,"flatGrowth":3.9,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-warden":{"strength":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"stamina":{"levelOne":12,"flatGrowth":4.2,"percentGrowth":0.02},"intellect":{"levelOne":10,"flatGrowth":3.8,"percentGrowth":0.02},"wisdom":{"levelOne":10,"flatGrowth":4,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-druid":{"strength":{"levelOne":7,"flatGrowth":2.5,"percentGrowth":0.02},"stamina":{"levelOne":11,"flatGrowth":3.7,"percentGrowth":0.02},"intellect":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"wisdom":{"levelOne":13,"flatGrowth":4.9,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.65,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-warlock":{"strength":{"levelOne":5,"flatGrowth":1.9,"percentGrowth":0.02},"stamina":{"levelOne":9,"flatGrowth":3.4,"percentGrowth":0.02},"intellect":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"wisdom":{"levelOne":12,"flatGrowth":4.25,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-champion":{"strength":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"stamina":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"intellect":{"levelOne":5,"flatGrowth":1.9,"percentGrowth":0.02},"wisdom":{"levelOne":6,"flatGrowth":2.1,"percentGrowth":0.02},"agility":{"levelOne":12,"flatGrowth":4.25,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}}},"raceMatrix":{"rom-human":["rom-warrior","rom-scout","rom-rogue","rom-mage","rom-priest","rom-knight"],"rom-elf":["rom-warrior","rom-scout","rom-rogue","rom-mage","rom-warden","rom-druid"],"rom-dwarf":["rom-warrior","rom-rogue","rom-mage","rom-priest","rom-warlock","rom-champion"]},"eliteLevels":[15,20,25,30,35,40,45,50,60,70],"skills":[{"id":"rom-warrior-primary-0","classId":"rom-warrior","group":"primary","unlockLevel":1,"sourceSkillId":490493,"name":"Frenzy","description":"Greatly increases attack speed, accuracy, and damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573727,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500942],"components":[{"id":500942,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-20},{"type":197,"value":50},{"type":56,"value":15}],"abilitySkillLevelArg":1,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490493,"name":"Frenzy","description":"Greatly increases attack speed, accuracy, and damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573727,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500942]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/573727.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-1","classId":"rom-warrior","group":"primary","unlockLevel":2,"sourceSkillId":491133,"name":"Probing Attack","description":"Causes (DMG0) main hand weapon DPS and makes the target Vulnerable.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":574096,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500994,501502],"components":[{"id":500994,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501502,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":8258,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491133,"name":"Probing Attack","description":"Causes (DMG0) main hand weapon DPS and makes the target Vulnerable.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":574096,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500994,501502]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/574096.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-2","classId":"rom-warrior","group":"primary","unlockLevel":2,"sourceSkillId":491136,"name":"Open Flank","description":"When the target is Vulnerable this brute force attack causes (DMG0) main hand weapon DPS to the target and Weakens it.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570821,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501505,501520,501503],"components":[{"id":501505,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501520,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0},{"id":501503,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":8258,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491136,"name":"Open Flank","description":"When the target is Vulnerable this brute force attack causes (DMG0) main hand weapon DPS to the target and Weakens it.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570821,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501505,501520,501503]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/570821.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-3","classId":"rom-warrior","group":"primary","unlockLevel":4,"sourceSkillId":491142,"name":"Tactical Attack","description":"Inflicts (DMG0) main hand weapon DPS and additional damage if target is affected by a Bleed effect caused by Slash. (Requires a two-handed weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577432,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501514,500081],"components":[{"id":501514,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.45,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.45,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":2,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500081,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":491142,"name":"Tactical Attack","description":"Inflicts (DMG0) main hand weapon DPS and additional damage if target is affected by a Bleed effect caused by Slash. (Requires a two-handed weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577432,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501514,500081]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/577432.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-4","classId":"rom-warrior","group":"primary","unlockLevel":6,"sourceSkillId":491139,"name":"Thunder","description":"To be used when the target is in Weakened state. Causes (DMG0) main hand weapon DPS with an additional (Buff4-Time) second Stun.\n(For players this effect lasts for (Buff5-Time) seconds.)\n(Requires a one-hand weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570901,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501508,501511,503836,502923],"components":[{"id":501508,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501511,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[150999123,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503836,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[150999123,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502923,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":491139,"name":"Thunder","description":"To be used when the target is in Weakened state. Causes (DMG0) main hand weapon DPS with an additional (Buff4-Time) second Stun.\n(For players this effect lasts for (Buff5-Time) seconds.)\n(Requires a one-hand weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570901,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501508,501511,503836,502923]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/570901.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-5","classId":"rom-warrior","group":"primary","unlockLevel":10,"sourceSkillId":490089,"name":"Feint","description":"After the enemy dodges, (DMG0) main hand weapon DPS are once inflicted on the target. Additionally accuracy increases by 20%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":2000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570899,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500090],"components":[{"id":500090,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490089,"name":"Feint","description":"After the enemy dodges, (DMG0) main hand weapon DPS are once inflicted on the target. Additionally accuracy increases by 20%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":2000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570899,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500090]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/570899.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-6","classId":"rom-warrior","group":"primary","unlockLevel":14,"sourceSkillId":490129,"name":"Surprise Attack","description":"The Surprise Attack causes (DMG0) main hand weapon physical DPS, additionally Knocking down the target. (Must have a distance of at least 60 from the target.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":12000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570895,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620361,500235],"components":[{"id":620361,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":5,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500235,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4179,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490129,"name":"Surprise Attack","description":"The Surprise Attack causes (DMG0) main hand weapon physical DPS, additionally Knocking down the target. (Must have a distance of at least 60 from the target.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":12000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570895,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620361,500235]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/570895.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-7","classId":"rom-warrior","group":"primary","unlockLevel":18,"sourceSkillId":490130,"name":"Taunt","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-621219)%.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570890,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500118,621219],"components":[{"id":500118,"magicFunc":7,"magicType":5,"effectType":0,"effectTime":5,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621219,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":1}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490130,"name":"Taunt","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-621219)%.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570890,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500118,621219]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/570890.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-8","classId":"rom-warrior","group":"primary","unlockLevel":22,"sourceSkillId":490121,"name":"Moon Cleave","description":"Attack multiple targets within range three times. Each attack inflicts (DMG0) main hand weapon DPS. (Requires a two-handed weapon)","target":"self","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570905,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500105],"components":[{"id":500105,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":2,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490121,"name":"Moon Cleave","description":"Attack multiple targets within range three times. Each attack inflicts (DMG0) main hand weapon DPS. (Requires a two-handed weapon)","target":"self","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570905,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500105]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/570905.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-9","classId":"rom-warrior","group":"primary","unlockLevel":26,"sourceSkillId":490136,"name":"Shout","description":"Stuns up to 5 targets in a range of 90 for (Buff0-Time) seconds.","target":"self","range":9,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":570907,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500125,502719],"components":[{"id":500125,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":59,"effectFlagWords":[151060563,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490136,"name":"Shout","description":"Stuns up to 5 targets in a range of 90 for (Buff0-Time) seconds.","target":"self","range":9,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":570907,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500125,502719]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/570907.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-10","classId":"rom-warrior","group":"passive","unlockLevel":28,"sourceSkillId":490131,"name":"1-H Weapon Mastery","description":"Increases damage with one-handed swords, axes, or hammers by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570894,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620347],"components":[{"id":620347,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":58,"value":5},{"type":61,"value":5},{"type":62,"value":5}],"abilitySkillLevelArg":28,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490131,"name":"1-H Weapon Mastery","description":"Increases damage with one-handed swords, axes, or hammers by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570894,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620347]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/570894.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-11","classId":"rom-warrior","group":"passive","unlockLevel":30,"sourceSkillId":490137,"name":"2-H Weapon Mastery","description":"Increases damage with two-handed swords, axes, or hammers by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570909,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620348],"components":[{"id":620348,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":0,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":63,"value":5},{"type":65,"value":5},{"type":66,"value":5}],"abilitySkillLevelArg":26,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490137,"name":"2-H Weapon Mastery","description":"Increases damage with two-handed swords, axes, or hammers by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570909,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620348]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/570909.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-12","classId":"rom-warrior","group":"primary","unlockLevel":32,"sourceSkillId":490054,"name":"Terror","description":"Force an enemy to flee for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570912,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502011,507288],"components":[{"id":502011,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":4,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":17,"effectFlagWords":[131075,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507288,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":17,"effectFlagWords":[131075,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":490054,"name":"Terror","description":"Force an enemy to flee for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570912,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502011,507288]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/570912.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-13","classId":"rom-warrior","group":"primary","unlockLevel":34,"sourceSkillId":490123,"name":"Aggressiveness","description":"Enhances rage generation by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570918,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500107],"components":[{"id":500107,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":139,"value":20}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490123,"name":"Aggressiveness","description":"Enhances rage generation by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570918,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500107]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/570918.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-14","classId":"rom-warrior","group":"primary","unlockLevel":36,"sourceSkillId":490122,"name":"Survival Instinct","description":"Can only be used when HP is below 50%. Increases [SC_SKILLTIPS_DEF] by (Buff0-0)%, raises the chance of dodging by (Buff4-0)% and increases [SC_SKILLTIPS_PARRY] by (Buff8-0) points for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570916,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500106,506881,506882],"components":[{"id":500106,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":20}],"abilitySkillLevelArg":3.5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495582,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506881,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506882,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":150}],"abilitySkillLevelArg":12.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":490122,"name":"Survival Instinct","description":"Can only be used when HP is below 50%. Increases [SC_SKILLTIPS_DEF] by (Buff0-0)%, raises the chance of dodging by (Buff4-0)% and increases [SC_SKILLTIPS_PARRY] by (Buff8-0) points for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570916,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500106,506881,506882]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/570916.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-15","classId":"rom-warrior","group":"primary","unlockLevel":38,"sourceSkillId":490145,"name":"Group Taunt","description":"Forces multiple targets within a range of 50 to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-621221)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570920,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500134,621221],"components":[{"id":500134,"magicFunc":7,"magicType":5,"effectType":0,"effectTime":4,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621221,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":1}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":490145,"name":"Group Taunt","description":"Forces multiple targets within a range of 50 to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-621221)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570920,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500134,621221]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/570920.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-16","classId":"rom-warrior","group":"primary","unlockLevel":40,"sourceSkillId":490147,"name":"Blasting Cyclone","description":"Causes (DMG0) main hand weapon DPS to multiple targets within range and causes Knockdown.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570924,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500136,500236],"components":[{"id":500136,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500236,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4179,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":490147,"name":"Blasting Cyclone","description":"Causes (DMG0) main hand weapon DPS to multiple targets within range and causes Knockdown.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570924,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500136,500236]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/570924.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-0","classId":"rom-warrior","group":"general","unlockLevel":1,"sourceSkillId":490053,"name":"Slash","description":"Inflicts (DMG0) main hand weapon DPS to the target with an additional chance to add Bleed effect. (Bleed effect only with equipped axe or sword.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570816,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500058,500081],"components":[{"id":500058,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500081,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490053,"name":"Slash","description":"Inflicts (DMG0) main hand weapon DPS to the target with an additional chance to add Bleed effect. (Bleed effect only with equipped axe or sword.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570816,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500058,500081]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/570816.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-1","classId":"rom-warrior","group":"general","unlockLevel":4,"sourceSkillId":490492,"name":"Enraged","description":"Immediately increase rage by (DMG0) points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":40000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573710,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500941],"components":[{"id":500941,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"clearFlags":9,"abilityModifiers":[{"type":134,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":20,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":20,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490492,"name":"Enraged","description":"Immediately increase rage by (DMG0) points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":40000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573710,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500941]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/573710.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-2","classId":"rom-warrior","group":"general","unlockLevel":8,"sourceSkillId":490133,"name":"Whirlwind","description":"Whirling in place you cause (DMG0) main hand weapon DPS to the targets within range.","target":"self","range":30,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570903,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500122],"components":[{"id":500122,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490133,"name":"Whirlwind","description":"Whirling in place you cause (DMG0) main hand weapon DPS to the targets within range.","target":"self","range":30,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570903,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500122]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/570903.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-3","classId":"rom-warrior","group":"general","unlockLevel":12,"sourceSkillId":490095,"name":"Berserk","description":"Increases [SC_SKILLTIPS_01] by (Buff0-1)% and decreases [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570892,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500096],"components":[{"id":500096,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":64,"abilityModifiers":[{"type":135,"value":-3},{"type":134,"value":3}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490095,"name":"Berserk","description":"Increases [SC_SKILLTIPS_01] by (Buff0-1)% and decreases [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570892,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500096]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/570892.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-4","classId":"rom-warrior","group":"passive","unlockLevel":1,"sourceSkillId":491132,"name":"Equip Axe","description":"Can equip 1-H axes.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":573102,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500993],"components":[{"id":500993,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":88,"value":1},{"type":0,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":491132,"name":"Equip Axe","description":"Can equip 1-H axes.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":573102,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500993]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/573102.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-5","classId":"rom-warrior","group":"general","unlockLevel":16,"sourceSkillId":498031,"name":"Defensive Formation","description":"For (Buff0-Time) seconds, increases [SC_SKILLTIPS_DEF] by (Buff0-0)%, and reduces [SC_SKILLTIPS_01] by (Buff0-1)% and [SC_SKILLTIPS_02] by (Buff0-2)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570910,"sourceEffectType":1,"sourceTarget":0,"componentIds":[620336],"components":[{"id":620336,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":64,"abilityModifiers":[{"type":135,"value":5},{"type":134,"value":-5},{"type":171,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":498031,"name":"Defensive Formation","description":"For (Buff0-Time) seconds, increases [SC_SKILLTIPS_DEF] by (Buff0-0)%, and reduces [SC_SKILLTIPS_01] by (Buff0-1)% and [SC_SKILLTIPS_02] by (Buff0-2)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570910,"sourceEffectType":1,"sourceTarget":0,"componentIds":[620336]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/570910.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-6","classId":"rom-warrior","group":"passive","unlockLevel":20,"sourceSkillId":490125,"name":"Brute Strength","description":"Permanently increases [SC_SKILLTIPS_STR] by (current [SC_SKILLTIPS_STR] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":3000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570818,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500109],"components":[{"id":500109,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":26,"abilityModifiers":[{"type":2,"value":11},{"type":161,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490125,"name":"Brute Strength","description":"Permanently increases [SC_SKILLTIPS_STR] by (current [SC_SKILLTIPS_STR] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":3000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570818,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500109]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/570818.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-0","classId":"rom-scout","group":"primary","unlockLevel":1,"sourceSkillId":490494,"name":"Arrow of Essence","description":"Enhances ranged weapon damage by (Buff0-0)% and raises attack speed by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572332,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500939],"components":[{"id":500939,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":52,"value":40},{"type":23,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-4,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490494,"name":"Arrow of Essence","description":"Enhances ranged weapon damage by (Buff0-0)% and raises attack speed by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572332,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500939]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/572332.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-1","classId":"rom-scout","group":"primary","unlockLevel":2,"sourceSkillId":491128,"name":"Wind Arrows","description":"Quick shot at the target, causing (DMG0) ranged weapon DPS.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575129,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501677,501529,501530,501565],"components":[{"id":501677,"magicFunc":0,"magicType":3,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[8192,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.35,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.35,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501529,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501530,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501565,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491128,"name":"Wind Arrows","description":"Quick shot at the target, causing (DMG0) ranged weapon DPS.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575129,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501677,501529,501530,501565]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/575129.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-2","classId":"rom-scout","group":"passive","unlockLevel":6,"sourceSkillId":490445,"name":"Ranged Weapon Mastery","description":"Bow and crossbow accuracy is increased by (Buff0-0)%, and damage is increased by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":3,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572307,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500904],"components":[{"id":500904,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":63,"abilityModifiers":[{"type":197,"value":8},{"type":53,"value":8},{"type":54,"value":8}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":490445,"name":"Ranged Weapon Mastery","description":"Bow and crossbow accuracy is increased by (Buff0-0)%, and damage is increased by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":3,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572307,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500904]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/572307.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-3","classId":"rom-scout","group":"primary","unlockLevel":12,"sourceSkillId":490441,"name":"Mana Drain Shot","description":"Inflicts (DMG0) ranged weapon DPS to the target and reduces its [SC_SKILLTIPS_MDMG] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572301,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500222,507226],"components":[{"id":500222,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":507226,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":164,"abilityModifiers":[{"type":192,"value":-1}],"abilitySkillLevelArg":19,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490441,"name":"Mana Drain Shot","description":"Inflicts (DMG0) ranged weapon DPS to the target and reduces its [SC_SKILLTIPS_MDMG] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572301,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500222,507226]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/572301.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-4","classId":"rom-scout","group":"primary","unlockLevel":14,"sourceSkillId":490454,"name":"Lasso","description":"Throw a lasso, rooting the enemy for (Buff0-Time) seconds. This effect will disappear if the target is further attacked. \n(For players this effect lasts for (Buff1-Time) seconds if not further attacked.)\n(Only one target at a time can be kept under control.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572314,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500924,502955],"components":[{"id":500924,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502955,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490454,"name":"Lasso","description":"Throw a lasso, rooting the enemy for (Buff0-Time) seconds. This effect will disappear if the target is further attacked. \n(For players this effect lasts for (Buff1-Time) seconds if not further attacked.)\n(Only one target at a time can be kept under control.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572314,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500924,502955]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/572314.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-5","classId":"rom-scout","group":"primary","unlockLevel":18,"sourceSkillId":490400,"name":"Piercing Arrow","description":"Fires a piercing arrow at the target and all enemies in a straight line behind the target for (DMG0) ranged weapon DPS + (FixDMG-500935) damage .","target":"hostile","range":4,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"dot","coefficient":0.2,"ticks":2,"intervalMs":2000},"source":{"imageId":572330,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500935],"components":[{"id":500935,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":8,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":3,"dotBase":-3,"dot":{"timeSeconds":1,"type":3,"base":-3,"skillLevelArg":5},"attackType":0,"damagePower":-0.7,"fixedValue":-20,"attack":{"type":0,"calculationType":3,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-20,"fixedType":0,"fixedDamageSkillLevelArg":15,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490400,"name":"Piercing Arrow","description":"Fires a piercing arrow at the target and all enemies in a straight line behind the target for (DMG0) ranged weapon DPS + (FixDMG-500935) damage .","target":"hostile","range":4,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"dot","coefficient":0.2,"ticks":2,"intervalMs":2000},"source":{"imageId":572330,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500935]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/572330.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-6","classId":"rom-scout","group":"passive","unlockLevel":20,"sourceSkillId":490425,"name":"Eagle Eyes","description":"Your chance to deal critical damage is permanently increased by (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572289,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500858],"components":[{"id":500858,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490425,"name":"Eagle Eyes","description":"Your chance to deal critical damage is permanently increased by (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572289,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500858]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/572289.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-7","classId":"rom-scout","group":"primary","unlockLevel":22,"sourceSkillId":490450,"name":"Snipe","description":"For Snipe, your range is increased by 60 and deals (DMG0) ranged weapon DPS plus (FixDMG-500909) damage. (Will be interrupted as soon as damage is taken.)","target":"hostile","range":6,"castTimeMs":3000,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":572310,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500909],"components":[{"id":500909,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-2.5,"fixedValue":-100,"attack":{"type":0,"calculationType":3,"damagePower":-2.5,"damagePowerSkillLevelArg":6,"fixedValue":-100,"fixedType":0,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490450,"name":"Snipe","description":"For Snipe, your range is increased by 60 and deals (DMG0) ranged weapon DPS plus (FixDMG-500909) damage. (Will be interrupted as soon as damage is taken.)","target":"hostile","range":6,"castTimeMs":3000,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":572310,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500909]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/572310.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-8","classId":"rom-scout","group":"primary","unlockLevel":26,"sourceSkillId":490463,"name":"Detection","description":"While the skill lasts the caster can detect nearby hidden enemies. (This skill costs 5 focus points every three seconds. Status disappears once focus reaches 0.)","target":"self","range":3,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":9,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572324,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500933],"components":[{"id":500933,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":62,"effectFlagWords":[1024,0],"clearFlags":256,"abilitySkillLevelArg":0,"dotTime":3,"dotType":3,"dotBase":-5,"dot":{"timeSeconds":3,"type":3,"base":-5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490463,"name":"Detection","description":"While the skill lasts the caster can detect nearby hidden enemies. (This skill costs 5 focus points every three seconds. Status disappears once focus reaches 0.)","target":"self","range":3,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":9,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572324,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500933]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/572324.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-9","classId":"rom-scout","group":"primary","unlockLevel":30,"sourceSkillId":490424,"name":"Combo Shot","description":"Fires triple shots at the target causing (DMG0) ranged weapon DPS. (Will be interrupted as soon as damage is taken.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":8000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572287,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500857],"components":[{"id":500857,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.45,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.45,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490424,"name":"Combo Shot","description":"Fires triple shots at the target causing (DMG0) ranged weapon DPS. (Will be interrupted as soon as damage is taken.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":8000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572287,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500857]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/572287.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-10","classId":"rom-scout","group":"primary","unlockLevel":34,"sourceSkillId":490438,"name":"Neck Strike","description":"Target is Stunned for (Buff0-Time) seconds. (Effect removed when attacked.)\n(For players this effect lasts for (Buff1-Time) seconds.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572298,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500877,503863,502719],"components":[{"id":500877,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":59,"effectFlagWords":[67,0],"clearFlags":2,"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503863,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":59,"effectFlagWords":[67,0],"clearFlags":2,"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490438,"name":"Neck Strike","description":"Target is Stunned for (Buff0-Time) seconds. (Effect removed when attacked.)\n(For players this effect lasts for (Buff1-Time) seconds.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572298,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500877,503863,502719]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/572298.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-11","classId":"rom-scout","group":"primary","unlockLevel":36,"sourceSkillId":490457,"name":"Reflected Shot","description":"Causes (DMG0) ranged weapon DPS. Shot will deflect 2 times to other targets within range. Damage decreases by half each time.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572316,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500927],"components":[{"id":500927,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":490457,"name":"Reflected Shot","description":"Causes (DMG0) ranged weapon DPS. Shot will deflect 2 times to other targets within range. Damage decreases by half each time.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572316,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500927]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/572316.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-12","classId":"rom-scout","group":"primary","unlockLevel":38,"sourceSkillId":490460,"name":"Concentration","description":"For (Buff0-Time) seconds, focus regeneration speed is increased by (Buff0-0)%.","target":"self","range":3,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572323,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500930],"components":[{"id":500930,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":24,"abilityModifiers":[{"type":140,"value":50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":490460,"name":"Concentration","description":"For (Buff0-Time) seconds, focus regeneration speed is increased by (Buff0-0)%.","target":"self","range":3,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572323,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500930]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/572323.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-13","classId":"rom-scout","group":"primary","unlockLevel":40,"sourceSkillId":490464,"name":"Target Area","description":"While the effect lasts, your accuracy is increased by (Buff4-0)% and the critical hit rate is increased by (Buff0-0). (This skill costs (Buff0-Dot) focus per second. Effect disappears once focus reaches 0.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572326,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500934,507339],"components":[{"id":500934,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":180,"hateCost":-10,"settingFlags":235,"specialActionFlags":0,"assistType":32,"clearFlags":256,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":39,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497740,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":3,"dotBase":-3,"dot":{"timeSeconds":1,"type":3,"base":-3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507339,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":180,"hateCost":-10,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"clearFlags":256,"abilityModifiers":[{"type":197,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":490464,"name":"Target Area","description":"While the effect lasts, your accuracy is increased by (Buff4-0)% and the critical hit rate is increased by (Buff0-0). (This skill costs (Buff0-Dot) focus per second. Effect disappears once focus reaches 0.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572326,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500934,507339]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/572326.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-55","classId":"rom-scout","group":"primary","unlockLevel":10,"sourceSkillId":491163,"name":"Frost Arrow","description":"For (Buff0-Time) seconds, all Wind Arrow shots will have a chance of adding Frost, slowing down target for 6 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572304,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501530],"components":[{"id":501530,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":491163,"name":"Frost Arrow","description":"For (Buff0-Time) seconds, all Wind Arrow shots will have a chance of adding Frost, slowing down target for 6 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572304,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501530]}}],"sourceFamily":"primary:55","icon":"/assets/ui/rom-spells/572304.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-56","classId":"rom-scout","group":"passive","unlockLevel":20,"sourceSkillId":491173,"name":"Cripple Joint","description":"Adds a 55% chance to your Joint Blow to Root the target for 5 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":491173,"name":"Cripple Joint","description":"Adds a 55% chance to your Joint Blow to Root the target for 5 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"sourceFamily":"primary:56","icon":"/assets/ui/rom-spells/572282.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-57","classId":"rom-scout","group":"primary","unlockLevel":1,"sourceSkillId":492589,"name":"Autoshot","description":"Fires a shot at the target inflicting ranged weapon Damage. (Afterwards Autoshot modus will be active.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":573064,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501579],"components":[{"id":501579,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.8,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":492589,"name":"Autoshot","description":"Fires a shot at the target inflicting ranged weapon Damage. (Afterwards Autoshot modus will be active.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":573064,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501579]}}],"sourceFamily":"primary:57","icon":"/assets/ui/rom-spells/573064.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-0","classId":"rom-scout","group":"general","unlockLevel":1,"sourceSkillId":490423,"name":"Shot","description":"Fires one shot at the target causing (DMG0) ranged weapon DPS.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572285,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500856,501959,501955,503188,503187,620221,620178,620222,620179],"components":[{"id":500856,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501959,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":26,"abilityModifiers":[{"type":2,"value":10}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501955,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":20,"value":150}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0},{"id":503188,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503187,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":195,"value":50}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620221,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":26,"abilityModifiers":[{"type":2,"value":10}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620178,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":20,"value":20}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0},{"id":620222,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620179,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":195,"value":10}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490423,"name":"Shot","description":"Fires one shot at the target causing (DMG0) ranged weapon DPS.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572285,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500856,501959,501955,503188,503187,620221,620178,620222,620179]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/572285.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-1","classId":"rom-scout","group":"passive","unlockLevel":1,"sourceSkillId":490448,"name":"Bow Training","description":"Can equip bows and crossbows","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572308,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500907],"components":[{"id":500907,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":95,"value":1},{"type":96,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490448,"name":"Bow Training","description":"Can equip bows and crossbows","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572308,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500907]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/572308.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-2","classId":"rom-scout","group":"general","unlockLevel":4,"sourceSkillId":491292,"name":"Vampire Arrows","description":"Inflicts (DMG0) ranged weapon DPS and additionally consumes the target's (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575130,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501693,501690],"components":[{"id":501693,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.55,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.55,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501690,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":491292,"name":"Vampire Arrows","description":"Inflicts (DMG0) ranged weapon DPS and additionally consumes the target's (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575130,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501693,501690]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/575130.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-3","classId":"rom-scout","group":"general","unlockLevel":8,"sourceSkillId":490420,"name":"Joint Blow","description":"Causes (DMG0) points of physical damage and Slows the target by 40% for (Buff4-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":572282,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500845,500848,503862,501559,504258],"components":[{"id":500845,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-16.4,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-16.4,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500848,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503862,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501559,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504258,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490420,"name":"Joint Blow","description":"Causes (DMG0) points of physical damage and Slows the target by 40% for (Buff4-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":572282,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500845,500848,503862,501559,504258]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/572282.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-4","classId":"rom-scout","group":"general","unlockLevel":12,"sourceSkillId":490434,"name":"Blood Arrow","description":"For (Buff0-Time) seconds, your HP is reduced by (Buff0-Dot)% every second and the physical attack of your ranged weapons is increased by (Buff0-0)%. (Right-click the buff icon to stop the effect.)","target":"self","range":3,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572294,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500871],"components":[{"id":500871,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":65643,"specialActionFlags":0,"assistType":8,"clearFlags":1056,"abilityModifiers":[{"type":52,"value":10}],"abilitySkillLevelArg":9,"dotTime":1,"dotType":5,"dotBase":-3,"dot":{"timeSeconds":1,"type":5,"base":-3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":-5,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490434,"name":"Blood Arrow","description":"For (Buff0-Time) seconds, your HP is reduced by (Buff0-Dot)% every second and the physical attack of your ranged weapons is increased by (Buff0-0)%. (Right-click the buff icon to stop the effect.)","target":"self","range":3,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572294,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500871]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/572294.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-5","classId":"rom-scout","group":"general","unlockLevel":16,"sourceSkillId":490428,"name":"Throat Attack","description":"Causes (DMG0) physical damage and interrupts the target's spell casting. (The interrupted spell will enter a cooldown phase. If the interrupted spell has no cooldown, all spells will enter a cooldown time of 3 seconds.)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":572290,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500864,502703],"components":[{"id":500864,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-16.4,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-16.4,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502703,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490428,"name":"Throat Attack","description":"Causes (DMG0) physical damage and interrupts the target's spell casting. (The interrupted spell will enter a cooldown phase. If the interrupted spell has no cooldown, all spells will enter a cooldown time of 3 seconds.)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":572290,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500864,502703]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/572290.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-6","classId":"rom-scout","group":"general","unlockLevel":20,"sourceSkillId":490451,"name":"Wrist Attack","description":"Damage dealt by the target is decreased by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572312,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500921],"components":[{"id":500921,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":60,"effectFlagWords":[524288,0],"abilityModifiers":[{"type":173,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490451,"name":"Wrist Attack","description":"Damage dealt by the target is decreased by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572312,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500921]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/572312.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-7","classId":"rom-scout","group":"passive","unlockLevel":24,"sourceSkillId":491159,"name":"Swiftness","description":"Permanently increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570818,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501521],"components":[{"id":501521,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":30,"abilityModifiers":[{"type":6,"value":11},{"type":165,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":491159,"name":"Swiftness","description":"Permanently increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570818,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501521]}}],"sourceFamily":"general:7","icon":"/assets/ui/rom-spells/570818.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-8","classId":"rom-scout","group":"passive","unlockLevel":28,"sourceSkillId":490505,"name":"Speed Shooting Mastery","description":"The speed of bows and crossbows is increased by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572286,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500959],"components":[{"id":500959,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":69,"value":-11},{"type":70,"value":-11}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490505,"name":"Speed Shooting Mastery","description":"The speed of bows and crossbows is increased by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572286,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500959]}}],"sourceFamily":"general:8","icon":"/assets/ui/rom-spells/572286.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-0","classId":"rom-rogue","group":"primary","unlockLevel":1,"sourceSkillId":490506,"name":"Assassins Rage","description":"For (Buff0-Time) seconds, the chance to deal critical hits is raised by (Buff0-0), and during that time critical damage is enhanced as well.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573049,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500960],"components":[{"id":500960,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":1500},{"type":19,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490506,"name":"Assassins Rage","description":"For (Buff0-Time) seconds, the chance to deal critical hits is raised by (Buff0-0), and during that time critical damage is enhanced as well.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573049,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500960]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/573049.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-1","classId":"rom-rogue","group":"primary","unlockLevel":2,"sourceSkillId":490323,"name":"Low Blow","description":"Inflicts (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage, and if the target already suffers a Bleed effect, it can cause an additional Grievous Wound for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571981,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620312,620314],"components":[{"id":620312,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1,"damagePowerSkillLevelArg":7,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620314,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":53,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":490323,"name":"Low Blow","description":"Inflicts (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage, and if the target already suffers a Bleed effect, it can cause an additional Grievous Wound for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571981,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620312,620314]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/571981.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-2","classId":"rom-rogue","group":"primary","unlockLevel":6,"sourceSkillId":490313,"name":"Wound Attack","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. For each Bleeding or Grievous Wound caused by the Rogue skills (cast by you), Wound Attack can cause additional damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570831,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620278,620279,620280],"components":[{"id":620278,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.05,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.05,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620279,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":7,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620280,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":7,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":490313,"name":"Wound Attack","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. For each Bleeding or Grievous Wound caused by the Rogue skills (cast by you), Wound Attack can cause additional damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570831,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620278,620279,620280]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/570831.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-3","classId":"rom-rogue","group":"passive","unlockLevel":10,"sourceSkillId":490504,"name":"Dagger Mastery","description":"Increases dagger damage by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570915,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620334],"components":[{"id":620334,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":59,"value":10}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490504,"name":"Dagger Mastery","description":"Increases dagger damage by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570915,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620334]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/570915.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-4","classId":"rom-rogue","group":"primary","unlockLevel":14,"sourceSkillId":490311,"name":"Blind Spot","description":"Attacks target from behind, causing (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage and adds a bleeding that deals (Buff4-Dot) damage every 2 seconds for (Buff4-Time) seconds. (Must hold a dagger and be behind the target.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570827,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620282,620297],"components":[{"id":620282,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.5,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.5,"damagePowerSkillLevelArg":5,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620297,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490311,"name":"Blind Spot","description":"Attacks target from behind, causing (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage and adds a bleeding that deals (Buff4-Dot) damage every 2 seconds for (Buff4-Time) seconds. (Must hold a dagger and be behind the target.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570827,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620282,620297]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/570827.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-5","classId":"rom-rogue","group":"primary","unlockLevel":16,"sourceSkillId":490347,"name":"Numbing Dagger","description":"Throws a poisoned dagger that can numb the target for (Buff0-Time) seconds. Can only be used on Humanoids and living creatures. (Requires you to be Poisonous; consumes 1 projectile, the numbed target awakens when attacked; only one target at a time can be kept under control.)\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572005,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500737,503046],"components":[{"id":500737,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":50,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[33554515,0],"clearFlags":1026,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503046,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":50,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[33554515,0],"clearFlags":1026,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490347,"name":"Numbing Dagger","description":"Throws a poisoned dagger that can numb the target for (Buff0-Time) seconds. Can only be used on Humanoids and living creatures. (Requires you to be Poisonous; consumes 1 projectile, the numbed target awakens when attacked; only one target at a time can be kept under control.)\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572005,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500737,503046]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/572005.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-6","classId":"rom-rogue","group":"primary","unlockLevel":16,"sourceSkillId":490329,"name":"Poison","description":"For (Buff0-Time) seconds normal attacks have a 50% chance to add Poisoned effects and the target's damage is lowered by 2%. (Can be stacked four times, consumes 1 poison bottle.)","target":"self","range":0.1,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571984,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500715],"components":[{"id":500715,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":106,"onAttackTrigger":{"rate":50,"rank":0,"id":490357},"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490329,"name":"Poison","description":"For (Buff0-Time) seconds normal attacks have a 50% chance to add Poisoned effects and the target's damage is lowered by 2%. (Can be stacked four times, consumes 1 poison bottle.)","target":"self","range":0.1,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571984,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500715]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/571984.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-7","classId":"rom-rogue","group":"primary","unlockLevel":18,"sourceSkillId":490312,"name":"Hide","description":"You go into hiding to avoid discovery by the enemy. Your movement speed is reduced by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570829,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500675],"components":[{"id":500675,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":163,"specialActionFlags":0,"assistType":52,"effectFlagWords":[512,0],"clearFlags":11,"abilityModifiers":[{"type":24,"value":-50}],"abilitySkillLevelArg":-1.2,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":850537,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490312,"name":"Hide","description":"You go into hiding to avoid discovery by the enemy. Your movement speed is reduced by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570829,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500675]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/570829.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-8","classId":"rom-rogue","group":"primary","unlockLevel":18,"sourceSkillId":490507,"name":"Premeditation","description":"Makes your next attack a critical attack, and the power of the critical attack is increased by (Buff0-0)%. (Cannot be used in combat.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571991,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500961],"components":[{"id":500961,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,64],"clearFlags":28673,"abilityModifiers":[{"type":19,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490507,"name":"Premeditation","description":"Makes your next attack a critical attack, and the power of the critical attack is increased by (Buff0-0)%. (Cannot be used in combat.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571991,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500961]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/571991.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-9","classId":"rom-rogue","group":"primary","unlockLevel":22,"sourceSkillId":490337,"name":"Sneak Attack","description":"By attacking the target from behind, Sneak Attack causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage with an additional (Buff4-Time)-second Stun and (Buff8-Time)-second Bleed effect. (Cannot be used when already in combat. Can only be used when behind the target. Requires dagger to cause Bleed effect.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571989,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620284,500725,500726],"components":[{"id":620284,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500725,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777283,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"summonCreatureId":0},{"id":500726,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":35,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":5},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490337,"name":"Sneak Attack","description":"By attacking the target from behind, Sneak Attack causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage with an additional (Buff4-Time)-second Stun and (Buff8-Time)-second Bleed effect. (Cannot be used when already in combat. Can only be used when behind the target. Requires dagger to cause Bleed effect.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571989,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620284,500725,500726]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/571989.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-10","classId":"rom-rogue","group":"passive","unlockLevel":26,"sourceSkillId":490316,"name":"Treasure Hunter","description":"Increases your and your party's chances of finding items by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570833,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500679],"components":[{"id":500679,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":35,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490316,"name":"Treasure Hunter","description":"Increases your and your party's chances of finding items by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570833,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500679]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/570833.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-11","classId":"rom-rogue","group":"primary","unlockLevel":30,"sourceSkillId":490354,"name":"Vanish","description":"Vanish from sight for (Buff0-Time) seconds, removing all aggro and leaving combat.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":572014,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500745,501567],"components":[{"id":500745,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501567,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":16,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490354,"name":"Vanish","description":"Vanish from sight for (Buff0-Time) seconds, removing all aggro and leaving combat.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":572014,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500745,501567]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/572014.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-12","classId":"rom-rogue","group":"passive","unlockLevel":32,"sourceSkillId":490143,"name":"Off Hand Mastery","description":"Increase off hand damage by (Buff0-0)% and accuracy by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570915,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620335],"components":[{"id":620335,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":0,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":36,"value":4},{"type":37,"value":4}],"abilitySkillLevelArg":7,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":490143,"name":"Off Hand Mastery","description":"Increase off hand damage by (Buff0-0)% and accuracy by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570915,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620335]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/570915.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-13","classId":"rom-rogue","group":"primary","unlockLevel":34,"sourceSkillId":490341,"name":"Sprint","description":"Increases movement speed by (Buff0-0)% for 30 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":10,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571995,"sourceEffectType":1,"sourceTarget":4,"componentIds":[500729],"components":[{"id":500729,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":137,"clearFlags":512,"abilityModifiers":[{"type":24,"value":10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490341,"name":"Sprint","description":"Increases movement speed by (Buff0-0)% for 30 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":10,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571995,"sourceEffectType":1,"sourceTarget":4,"componentIds":[500729]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/571995.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-14","classId":"rom-rogue","group":"primary","unlockLevel":36,"sourceSkillId":490355,"name":"Evasion","description":"Increases dodge rate by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572016,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500744],"components":[{"id":500744,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":31,"abilityModifiers":[{"type":198,"value":10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":490355,"name":"Evasion","description":"Increases dodge rate by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572016,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500744]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/572016.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-15","classId":"rom-rogue","group":"primary","unlockLevel":38,"sourceSkillId":490338,"name":"Combo Throw","description":"Throws 2 hidden weapons in series, each of which causes (DMG0) damage, based on the DPS of the main hand weapon + (FixDMG0) x [SC_SKILLTIPS_THROWDMG] [SC_SKILLTIPS_DMG|physical damage].\n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571993,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502578,620283],"components":[{"id":502578,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-3,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":5.5,"fixedValue":-3,"fixedType":4,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620283,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-3,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":5.5,"fixedValue":-3,"fixedType":4,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":490338,"name":"Combo Throw","description":"Throws 2 hidden weapons in series, each of which causes (DMG0) damage, based on the DPS of the main hand weapon + (FixDMG0) x [SC_SKILLTIPS_THROWDMG] [SC_SKILLTIPS_DMG|physical damage].\n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571993,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502578,620283]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/571993.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-16","classId":"rom-rogue","group":"primary","unlockLevel":40,"sourceSkillId":490346,"name":"Shadow Prison","description":"Binds the enemy's shadow. The target cannot move or use skills for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572003,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500735,503861,502719],"components":[{"id":500735,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503861,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":490346,"name":"Shadow Prison","description":"Binds the enemy's shadow. The target cannot move or use skills for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572003,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500735,503861,502719]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/572003.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-17","classId":"rom-rogue","group":"primary","unlockLevel":42,"sourceSkillId":490350,"name":"Informer","description":"Increases party members' chance to deal critical hits by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572009,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620298],"components":[{"id":620298,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":42,"prerequisites":[],"sourceSkillId":490350,"name":"Informer","description":"Increases party members' chance to deal critical hits by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572009,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620298]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/572009.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-18","classId":"rom-rogue","group":"primary","unlockLevel":44,"sourceSkillId":490333,"name":"Fervent Attack","description":"For (Buff0-Time) seconds, [SC_SKILLTIPS_DPS] is increased by (Buff0-0)% and [SC_SKILLTIPS_DEF] is decreased by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571987,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500719],"components":[{"id":500719,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":9,"abilityModifiers":[{"type":23,"value":-5},{"type":135,"value":-5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":44,"prerequisites":[],"sourceSkillId":490333,"name":"Fervent Attack","description":"For (Buff0-Time) seconds, [SC_SKILLTIPS_DPS] is increased by (Buff0-0)% and [SC_SKILLTIPS_DEF] is decreased by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571987,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500719]}}],"sourceFamily":"primary:18","icon":"/assets/ui/rom-spells/571987.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-0","classId":"rom-rogue","group":"general","unlockLevel":1,"sourceSkillId":490306,"name":"Shadowstab","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage with an additional Bleed effect. For (Buff4-Time) seconds Bleed causes (Buff4-Dot) damage every 2 seconds. (Extra effect is produced only if the main hand is wielding a dagger.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570822,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620277,620313],"components":[{"id":620277,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620313,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":45},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490306,"name":"Shadowstab","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage with an additional Bleed effect. For (Buff4-Time) seconds Bleed causes (Buff4-Dot) damage every 2 seconds. (Extra effect is produced only if the main hand is wielding a dagger.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570822,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620277,620313]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/570822.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-1","classId":"rom-rogue","group":"general","unlockLevel":4,"sourceSkillId":490309,"name":"Throw","description":"Throws a hidden weapon at the target, causing (DMG0) main hand weapon DPS plus (FixDMG0) x [SC_SKILLTIPS_THROWDMG] [SC_SKILLTIPS_DMG|physical damage].\n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570824,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502578,620283],"components":[{"id":502578,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-3,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":5.5,"fixedValue":-3,"fixedType":4,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620283,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-3,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":5.5,"fixedValue":-3,"fixedType":4,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490309,"name":"Throw","description":"Throws a hidden weapon at the target, causing (DMG0) main hand weapon DPS plus (FixDMG0) x [SC_SKILLTIPS_THROWDMG] [SC_SKILLTIPS_DMG|physical damage].\n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570824,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502578,620283]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/570824.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-2","classId":"rom-rogue","group":"general","unlockLevel":8,"sourceSkillId":490317,"name":"Blind Stab","description":"Inflicts (DMG0) damage, based on the DPS of the main hand weapon, + (FixDMG0) x Dexterity [SC_SKILLTIPS_DMG|physical damage] with an additional Blind effect for (Buff4-Time) seconds. (Must be in front of the target to use skill.) \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571977,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620281,500691,503835],"components":[{"id":620281,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500691,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"effectFlagWords":[32,0],"abilityModifiers":[{"type":197,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503835,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"effectFlagWords":[32,0],"abilityModifiers":[{"type":197,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490317,"name":"Blind Stab","description":"Inflicts (DMG0) damage, based on the DPS of the main hand weapon, + (FixDMG0) x Dexterity [SC_SKILLTIPS_DMG|physical damage] with an additional Blind effect for (Buff4-Time) seconds. (Must be in front of the target to use skill.) \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571977,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620281,500691,503835]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/571977.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-3","classId":"rom-rogue","group":"passive","unlockLevel":12,"sourceSkillId":490310,"name":"Projectile Training","description":"Can equip projectiles.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570826,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500658],"components":[{"id":500658,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":98,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490310,"name":"Projectile Training","description":"Can equip projectiles.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570826,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500658]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/570826.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-4","classId":"rom-rogue","group":"passive","unlockLevel":16,"sourceSkillId":490146,"name":"Off Hand Training","description":"1-H weapons can be held in off hand.\n(Class-related limitations still apply.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570914,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500135],"components":[{"id":500135,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":106,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490146,"name":"Off Hand Training","description":"1-H weapons can be held in off hand.\n(Class-related limitations still apply.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570914,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500135]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/570914.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-5","classId":"rom-rogue","group":"passive","unlockLevel":20,"sourceSkillId":490326,"name":"Agility","description":"Permanently increases dodge rate by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":571983,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500707],"components":[{"id":500707,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":2}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490326,"name":"Agility","description":"Permanently increases dodge rate by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":571983,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500707]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/571983.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-6","classId":"rom-rogue","group":"passive","unlockLevel":24,"sourceSkillId":490332,"name":"Nimble Hands","description":"Increases attack speed by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":571986,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500718],"components":[{"id":500718,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-2}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":490332,"name":"Nimble Hands","description":"Increases attack speed by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":571986,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500718]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/571986.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-7","classId":"rom-rogue","group":"general","unlockLevel":28,"sourceSkillId":490344,"name":"Shadow Step","description":"Instantly move behind the target.","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571999,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500733,621406,621482],"components":[{"id":500733,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621406,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10},{"type":50,"value":10}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621482,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":19,"value":1},{"type":23,"value":-10}],"abilitySkillLevelArg":45,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490344,"name":"Shadow Step","description":"Instantly move behind the target.","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571999,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500733,621406,621482]}}],"sourceFamily":"general:7","icon":"/assets/ui/rom-spells/571999.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-0","classId":"rom-mage","group":"primary","unlockLevel":1,"sourceSkillId":490238,"name":"Elemental Catalysis","description":"For (Buff0-Time) seconds magical damage is enhanced by (Buff0-0)% and every 2 seconds (Buff0-Dot)% Mana is regained.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572036,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500339],"components":[{"id":500339,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":20}],"abilitySkillLevelArg":0,"dotTime":2,"dotType":6,"dotBase":2,"dot":{"timeSeconds":2,"type":6,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490238,"name":"Elemental Catalysis","description":"For (Buff0-Time) seconds magical damage is enhanced by (Buff0-0)% and every 2 seconds (Buff0-Dot)% Mana is regained.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572036,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500339]}},{"rank":2,"level":65,"prerequisites":[490238],"sourceSkillId":497971,"name":"Elemental Catalysis","description":"Increases magical damage by (Buff0-0)% and spellcasting speed by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572036,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620176],"components":[{"id":620176,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":20},{"type":51,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":6,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/572036.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-1","classId":"rom-mage","group":"primary","unlockLevel":1,"sourceSkillId":491150,"name":"Flame","description":"Launches a searing fireball, which deals (DMG0) points of Fire damage.","target":"hostile","range":22.5,"castTimeMs":3000,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":574090,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501531,500379],"components":[{"id":501531,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500379,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-27.1,"fixedValue":-0.01,"attack":{"type":0,"calculationType":1,"damagePower":-27.1,"damagePowerSkillLevelArg":18.3,"fixedValue":-0.01,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":491150,"name":"Flame","description":"Launches a searing fireball, which deals (DMG0) points of Fire damage.","target":"hostile","range":22.5,"castTimeMs":3000,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":574090,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501531,500379]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/574090.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-2","classId":"rom-mage","group":"primary","unlockLevel":2,"sourceSkillId":491156,"name":"Electrostatic Charge","description":"Absorbs as much damage as (Buff0-Shield)% of your maximum HP for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":75,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":572033,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620209],"components":[{"id":620209,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":490363,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":2,"skillLevelArg":28}}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491156,"name":"Electrostatic Charge","description":"Absorbs as much damage as (Buff0-Shield)% of your maximum HP for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":75,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":572033,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620209]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/572033.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-3","classId":"rom-mage","group":"passive","unlockLevel":8,"sourceSkillId":490221,"name":"Eruption","description":"Fireball and Flame have a chance of exploding and causing Fire damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572027,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490221,"name":"Eruption","description":"Fireball and Flame have a chance of exploding and causing Fire damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572027,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/572027.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-4","classId":"rom-mage","group":"primary","unlockLevel":10,"sourceSkillId":490242,"name":"Discharge","description":"Inflicts (DMG0) + (FixDMG-620208) x INT [SC_SKILLTIPS_WIND] to targets within range and a Stun for (Buff-Time-502717) seconds.\n(For players this effect lasts for (Buff-Time-503850) seconds.)\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.55},"source":{"imageId":572040,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620208,502717,503850,623146],"components":[{"id":620208,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-55,"damagePowerSkillLevelArg":25,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502717,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[150995027,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503850,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[150995027,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623146,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490242,"name":"Discharge","description":"Inflicts (DMG0) + (FixDMG-620208) x INT [SC_SKILLTIPS_WIND] to targets within range and a Stun for (Buff-Time-502717) seconds.\n(For players this effect lasts for (Buff-Time-503850) seconds.)\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.55},"source":{"imageId":572040,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620208,502717,503850,623146]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/572040.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-5","classId":"rom-mage","group":"primary","unlockLevel":14,"sourceSkillId":490252,"name":"Meteor Shower","description":"Conjures a meteor shower which causes 5 hits with (DMG0) + (FixDMG-620204) x INT [SC_SKILLTIPS_NONE].","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572054,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620204,501549],"components":[{"id":620204,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":17,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":3,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501549,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":51,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490252,"name":"Meteor Shower","description":"Conjures a meteor shower which causes 5 hits with (DMG0) + (FixDMG-620204) x INT [SC_SKILLTIPS_NONE].","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572054,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620204,501549]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/572054.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-6","classId":"rom-mage","group":"primary","unlockLevel":18,"sourceSkillId":490239,"name":"Phoenix","description":"Summon a phoenix that causes (DMG0) + (FixDMG-620201) x INT [SC_SKILLTIPS_FLAME] to targets in its path. Effective up to a range of 120.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.55},"source":{"imageId":572038,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620201,623146],"components":[{"id":620201,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-55,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623146,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490239,"name":"Phoenix","description":"Summon a phoenix that causes (DMG0) + (FixDMG-620201) x INT [SC_SKILLTIPS_FLAME] to targets in its path. Effective up to a range of 120.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.55},"source":{"imageId":572038,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620201,623146]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/572038.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-7","classId":"rom-mage","group":"passive","unlockLevel":22,"sourceSkillId":490216,"name":"Fire Knowledge","description":"Increases resistance to Fire by (Buff0-0) points and increases magical Fire damage by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572021,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500289],"components":[{"id":500289,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":29,"value":2},{"type":47,"value":5}],"abilitySkillLevelArg":23.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490216,"name":"Fire Knowledge","description":"Increases resistance to Fire by (Buff0-0) points and increases magical Fire damage by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572021,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500289]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/572021.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-8","classId":"rom-mage","group":"primary","unlockLevel":26,"sourceSkillId":491153,"name":"Purgatory Fire","description":"Summons purgatory fire, causing (DMG0) + (FixDMG-620203) x INT [SC_SKILLTIPS_FLAME] to targets within a range of 50.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":574094,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620203],"components":[{"id":620203,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-45,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-45,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":491153,"name":"Purgatory Fire","description":"Summons purgatory fire, causing (DMG0) + (FixDMG-620203) x INT [SC_SKILLTIPS_FLAME] to targets within a range of 50.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":574094,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620203]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/574094.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-9","classId":"rom-mage","group":"primary","unlockLevel":28,"sourceSkillId":490218,"name":"Energy Influx","description":"The chance to inflict critical damage with magic attacks is increased by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572025,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500296],"components":[{"id":500296,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":177,"abilityModifiers":[{"type":20,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490218,"name":"Energy Influx","description":"The chance to inflict critical damage with magic attacks is increased by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572025,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500296]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/572025.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-10","classId":"rom-mage","group":"primary","unlockLevel":30,"sourceSkillId":490251,"name":"Energy Well","description":"Mana costs for all skills are reduced by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572052,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500369],"components":[{"id":500369,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":50,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":49,"abilityModifiers":[{"type":33,"value":10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490251,"name":"Energy Well","description":"Mana costs for all skills are reduced by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572052,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500369]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/572052.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-11","classId":"rom-mage","group":"primary","unlockLevel":32,"sourceSkillId":490247,"name":"Elemental Weakness","description":"Decrease all the target's resistances by (Buff0-0) points for (Buff0-Time) seconds.","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572044,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500365],"components":[{"id":500365,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":8,"abilityModifiers":[{"type":26,"value":-30}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":490247,"name":"Elemental Weakness","description":"Decrease all the target's resistances by (Buff0-0) points for (Buff0-Time) seconds.","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572044,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500365]}},{"rank":2,"level":65,"prerequisites":[490247],"sourceSkillId":497977,"name":"Elemental Weakness","description":"Reduces the target's [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572044,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620189],"components":[{"id":620189,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":8,"abilityModifiers":[{"type":170,"value":-1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/572044.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-12","classId":"rom-mage","group":"primary","unlockLevel":34,"sourceSkillId":490244,"name":"Thunderstorm","description":"Summon a thunderstorm that inflicts (DMG0) + (FixDMG-620202) x INT [SC_SKILLTIPS_WIND] to targets 3 times within range with a chance of causing an additional Slowdown in movement and attacks for (Buff4-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572042,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620202,500557],"components":[{"id":620202,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500557,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":23,"value":20},{"type":24,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490244,"name":"Thunderstorm","description":"Summon a thunderstorm that inflicts (DMG0) + (FixDMG-620202) x INT [SC_SKILLTIPS_WIND] to targets 3 times within range with a chance of causing an additional Slowdown in movement and attacks for (Buff4-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572042,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620202,500557]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/572042.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-52","classId":"rom-mage","group":"primary","unlockLevel":2,"sourceSkillId":491169,"name":"Plasma Arrow","description":"Causes (DMG0) + (FixDMG-620206) x INT [SC_SKILLTIPS_WIND] and puts you in Charged state which in turn temporarily increases your critical magical hit rate by (Buff4-0).","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":576088,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620206,502270],"components":[{"id":620206,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-45,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-45,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502270,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":96,"abilityModifiers":[{"type":20,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491169,"name":"Plasma Arrow","description":"Causes (DMG0) + (FixDMG-620206) x INT [SC_SKILLTIPS_WIND] and puts you in Charged state which in turn temporarily increases your critical magical hit rate by (Buff4-0).","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":576088,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620206,502270]}}],"sourceFamily":"primary:52","icon":"/assets/ui/rom-spells/576088.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-53","classId":"rom-mage","group":"primary","unlockLevel":10,"sourceSkillId":491168,"name":"Electric Bolt","description":"Inflicts (DMG0) + (FixDMG-620205) x INT [SC_SKILLTIPS_WIND], and afterwards (Buff4-Dot) every 2 seconds for a total of (Buff4-Time) seconds.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":576087,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620205,501550],"components":[{"id":620205,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":25,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501550,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":491168,"name":"Electric Bolt","description":"Inflicts (DMG0) + (FixDMG-620205) x INT [SC_SKILLTIPS_WIND], and afterwards (Buff4-Dot) every 2 seconds for a total of (Buff4-Time) seconds.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":576087,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620205,501550]}}],"sourceFamily":"primary:53","icon":"/assets/ui/rom-spells/576087.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-54","classId":"rom-mage","group":"primary","unlockLevel":16,"sourceSkillId":491170,"name":"Electric Explosion","description":"Causes (DMG1) + (FixDMG-620232) x INT [SC_SKILLTIPS_WIND] to the target.\n\nWhen used in Charged state, it will deal (DMG0) + (FixDMG-620207) x INT [SC_SKILLTIPS_WIND] to the target.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":576089,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620207,502270,621505,620232],"components":[{"id":620207,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":30,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502270,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":96,"abilityModifiers":[{"type":20,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"summonCreatureId":0},{"id":621505,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":18,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":96,"abilityModifiers":[{"type":20,"value":20},{"type":48,"value":1}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"summonCreatureId":0},{"id":620232,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-35,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-35,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":491170,"name":"Electric Explosion","description":"Causes (DMG1) + (FixDMG-620232) x INT [SC_SKILLTIPS_WIND] to the target.\n\nWhen used in Charged state, it will deal (DMG0) + (FixDMG-620207) x INT [SC_SKILLTIPS_WIND] to the target.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":576089,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620207,502270,621505,620232]}}],"sourceFamily":"primary:54","icon":"/assets/ui/rom-spells/576089.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-55","classId":"rom-mage","group":"primary","unlockLevel":20,"sourceSkillId":491171,"name":"Electric Compression","description":"When used in Charged state, the power of thunder and lightning is stored deep within you and allows for the use of Static Field.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576203,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501554,502243],"components":[{"id":501554,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":35,"specialActionFlags":0,"assistType":13,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502243,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":96,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":491171,"name":"Electric Compression","description":"When used in Charged state, the power of thunder and lightning is stored deep within you and allows for the use of Static Field.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576203,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501554,502243]}}],"sourceFamily":"primary:55","icon":"/assets/ui/rom-spells/576203.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-56","classId":"rom-mage","group":"primary","unlockLevel":20,"sourceSkillId":491172,"name":"Static Field","description":"Static Field Charge is needed. You use the power of thunder and lightning of your Electric Compression to attack your target, making it unable to move or attack for (Buff0-Time) seconds. (Effect will be removed if attacked; only one target at a time can be kept under control.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576090,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501555,503838],"components":[{"id":501555,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[134217811,0],"clearFlags":2,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503838,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[134217811,0],"clearFlags":2,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":491172,"name":"Static Field","description":"Static Field Charge is needed. You use the power of thunder and lightning of your Electric Compression to attack your target, making it unable to move or attack for (Buff0-Time) seconds. (Effect will be removed if attacked; only one target at a time can be kept under control.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576090,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501555,503838]}}],"sourceFamily":"primary:56","icon":"/assets/ui/rom-spells/576090.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-57","classId":"rom-mage","group":"passive","unlockLevel":22,"sourceSkillId":490217,"name":"Wind Knowledge","description":"Increases resistance to Wind by (Buff0-0) and increases [SC_SKILLTIPS_WIND] by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572024,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500295],"components":[{"id":500295,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":30,"value":2},{"type":48,"value":5}],"abilitySkillLevelArg":23.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490217,"name":"Wind Knowledge","description":"Increases resistance to Wind by (Buff0-0) and increases [SC_SKILLTIPS_WIND] by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572024,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500295]}}],"sourceFamily":"primary:57","icon":"/assets/ui/rom-spells/572024.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-0","classId":"rom-mage","group":"general","unlockLevel":4,"sourceSkillId":490204,"name":"Fireball","description":"Casts a fireball, causing (DMG0) + (FixDMG-620199) x INT [SC_SKILLTIPS_FLAME].","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":572019,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620199,500379,623146],"components":[{"id":620199,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":40,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500379,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-27.1,"fixedValue":-0.01,"attack":{"type":0,"calculationType":1,"damagePower":-27.1,"damagePowerSkillLevelArg":18.3,"fixedValue":-0.01,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623146,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490204,"name":"Fireball","description":"Casts a fireball, causing (DMG0) + (FixDMG-620199) x INT [SC_SKILLTIPS_FLAME].","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":572019,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620199,500379,623146]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/572019.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-1","classId":"rom-mage","group":"general","unlockLevel":8,"sourceSkillId":490212,"name":"Lightning","description":"A lightning strike inflicts (DMG0) + (FixDMG-620200) x INT [SC_SKILLTIPS_WIND], rooting the target for (Buff4-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.358},"source":{"imageId":572022,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620200,501535,503837,623146],"components":[{"id":620200,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-35.82,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-35.82,"damagePowerSkillLevelArg":19.4,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501535,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-59.7,"fixedValue":0,"summonCreatureId":0},{"id":503837,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-59.7,"fixedValue":0,"summonCreatureId":0},{"id":623146,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490212,"name":"Lightning","description":"A lightning strike inflicts (DMG0) + (FixDMG-620200) x INT [SC_SKILLTIPS_WIND], rooting the target for (Buff4-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.358},"source":{"imageId":572022,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620200,501535,503837,623146]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/572022.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-2","classId":"rom-mage","group":"passive","unlockLevel":12,"sourceSkillId":490222,"name":"Wisdom","description":"Increases [SC_SKILLTIPS_INT] by (current [SC_SKILLTIPS_INT] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572028,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500305],"components":[{"id":500305,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":4,"value":11},{"type":163,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490222,"name":"Wisdom","description":"Increases [SC_SKILLTIPS_INT] by (current [SC_SKILLTIPS_INT] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572028,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500305]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/572028.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-3","classId":"rom-mage","group":"general","unlockLevel":16,"sourceSkillId":490225,"name":"Intensification","description":"[SC_SKILLTIPS_MDMG] increases by (Buff0-0) points. Effect lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572031,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500308],"components":[{"id":500308,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":148,"value":50}],"abilitySkillLevelArg":19,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490225,"name":"Intensification","description":"[SC_SKILLTIPS_MDMG] increases by (Buff0-0) points. Effect lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572031,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500308]}},{"rank":2,"level":45,"prerequisites":[490225],"sourceSkillId":497976,"name":"Intensification","description":"For (Buff0-Time) seconds, [SC_SKILLTIPS_MDMG] is increased by (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572031,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620177],"components":[{"id":620177,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":148,"value":100}],"abilitySkillLevelArg":45,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/572031.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-4","classId":"rom-mage","group":"general","unlockLevel":20,"sourceSkillId":490296,"name":"Silence","description":"Silences the target for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":24000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572213,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500529,504256,502719],"components":[{"id":500529,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":22,"effectFlagWords":[1,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504256,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":22,"effectFlagWords":[1,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490296,"name":"Silence","description":"Silences the target for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":24000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572213,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500529,504256,502719]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/572213.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-5","classId":"rom-mage","group":"general","unlockLevel":24,"sourceSkillId":490248,"name":"Fire Ward","description":"Increase the party's Fire resistance by (Buff0-0) points for 10 minutes.","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572048,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500366],"components":[{"id":500366,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":29,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":490248,"name":"Fire Ward","description":"Increase the party's Fire resistance by (Buff0-0) points for 10 minutes.","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572048,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500366]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/572048.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-0","classId":"rom-priest","group":"primary","unlockLevel":1,"sourceSkillId":490288,"name":"Soul Source","description":"The HP of all teammates within a range of 90 is fully restored. Does not consume any MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":1.33},"source":{"imageId":572204,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500516],"components":[{"id":500516,"magicFunc":0,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":8,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":133,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":133,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":10,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490288,"name":"Soul Source","description":"The HP of all teammates within a range of 90 is fully restored. Does not consume any MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":1.33},"source":{"imageId":572204,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500516]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/572204.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-1","classId":"rom-priest","group":"primary","unlockLevel":2,"sourceSkillId":490273,"name":"Wave Armor","description":"Casts a shield of holy spring water that absorbs up to (Buff0-Shield) points of damage. Also reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%. Effect lasts for (Buff0-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":572194,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500478],"components":[{"id":500478,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":143,"value":1},{"type":142,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":2,"effect":0,"point":50,"skillLevelArg":45}}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":490273,"name":"Wave Armor","description":"Casts a shield of holy spring water that absorbs up to (Buff0-Shield) points of damage. Also reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%. Effect lasts for (Buff0-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":572194,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500478]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/572194.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-2","classId":"rom-priest","group":"primary","unlockLevel":6,"sourceSkillId":490261,"name":"Heal","description":"Restores (DMG0) points of target's HP.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.9},"source":{"imageId":572063,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500395],"components":[{"id":500395,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":90,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":90,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":490261,"name":"Heal","description":"Restores (DMG0) points of target's HP.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.9},"source":{"imageId":572063,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500395]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/572063.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-3","classId":"rom-priest","group":"primary","unlockLevel":8,"sourceSkillId":490274,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500485,503858],"components":[{"id":500485,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503858,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490274,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500485,503858]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/572196.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-4","classId":"rom-priest","group":"primary","unlockLevel":8,"sourceSkillId":491165,"name":"Bone Chill","description":"For (Buff0-Time) seconds, Bone Chill will cause (Buff0-Dot) points of damage every 2 seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575160,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501548],"components":[{"id":501548,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":491165,"name":"Bone Chill","description":"For (Buff0-Time) seconds, Bone Chill will cause (Buff0-Dot) points of damage every 2 seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575160,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501548]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/575160.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-5","classId":"rom-priest","group":"primary","unlockLevel":10,"sourceSkillId":490280,"name":"Resurrection","description":"Revives a dead target which accumulates 30% less death debt.\n(Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[500497],"components":[{"id":500497,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":30},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490280,"name":"Resurrection","description":"Revives a dead target which accumulates 30% less death debt.\n(Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[500497]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/572199.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-6","classId":"rom-priest","group":"primary","unlockLevel":10,"sourceSkillId":490297,"name":"Soul Bond","description":"For (Buff0-Time) seconds, the target can revive once in the same place.","target":"friendly","range":22.5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":400,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572211,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500535],"components":[{"id":500535,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":16,"effectFlagWords":[4194304,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490297,"name":"Soul Bond","description":"For (Buff0-Time) seconds, the target can revive once in the same place.","target":"friendly","range":22.5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":400,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572211,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500535]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/572211.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-7","classId":"rom-priest","group":"primary","unlockLevel":14,"sourceSkillId":490290,"name":"Grace of Life","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572226,"sourceEffectType":0,"sourceTarget":7,"componentIds":[500517,507217],"components":[{"id":500517,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":18,"abilityModifiers":[{"type":8,"value":50}],"abilitySkillLevelArg":26,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495931,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507217,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490290,"name":"Grace of Life","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572226,"sourceEffectType":0,"sourceTarget":7,"componentIds":[500517,507217]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/572226.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-8","classId":"rom-priest","group":"primary","unlockLevel":14,"sourceSkillId":490281,"name":"Group Heal","description":"Restores (DMG0) HP to all party members within range of 120. You will enter a state of Exhaustion, increasing the mana requirement for group healing skills.","target":"self","range":0.1,"castTimeMs":3000,"cooldownMs":0,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.65},"source":{"imageId":572200,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500498,620407],"components":[{"id":500498,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":65,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":65,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":3},"summonCreatureId":0},{"id":620407,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":50364418,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490281,"name":"Group Heal","description":"Restores (DMG0) HP to all party members within range of 120. You will enter a state of Exhaustion, increasing the mana requirement for group healing skills.","target":"self","range":0.1,"castTimeMs":3000,"cooldownMs":0,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.65},"source":{"imageId":572200,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500498,620407]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/572200.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-9","classId":"rom-priest","group":"primary","unlockLevel":18,"sourceSkillId":491164,"name":"Chain of Light","description":"Continuously deals (DMG0) Light damage to the target.","target":"hostile","range":21.700000000000003,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575128,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620409],"components":[{"id":620409,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":9,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":491164,"name":"Chain of Light","description":"Continuously deals (DMG0) Light damage to the target.","target":"hostile","range":21.700000000000003,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575128,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620409]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/575128.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-10","classId":"rom-priest","group":"primary","unlockLevel":20,"sourceSkillId":490491,"name":"Amplified Attack","description":"Increases [SC_SKILLTIPS_01] by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.\n(This effect does not stack with similar effects.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":36,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573733,"sourceEffectType":0,"sourceTarget":7,"componentIds":[500940,507218],"components":[{"id":500940,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":42,"abilityModifiers":[{"type":12,"value":50}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495930,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490491,"name":"Amplified Attack","description":"Increases [SC_SKILLTIPS_01] by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.\n(This effect does not stack with similar effects.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":36,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573733,"sourceEffectType":0,"sourceTarget":7,"componentIds":[500940,507218]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/573733.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-11","classId":"rom-priest","group":"passive","unlockLevel":22,"sourceSkillId":490305,"name":"Prayer","description":"Increases Water Resistance by (Buff0-0) points and magical Water Damage by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572066,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500559],"components":[{"id":500559,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":28,"value":2},{"type":46,"value":5}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490305,"name":"Prayer","description":"Increases Water Resistance by (Buff0-0) points and magical Water Damage by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572066,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500559]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/572066.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-12","classId":"rom-priest","group":"passive","unlockLevel":24,"sourceSkillId":490295,"name":"Faith","description":"Effectiveness of Heal effects increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572211,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500528],"components":[{"id":500528,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":5}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":490295,"name":"Faith","description":"Effectiveness of Heal effects increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572211,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500528]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/572211.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-13","classId":"rom-priest","group":"primary","unlockLevel":26,"sourceSkillId":490275,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500486,503859],"components":[{"id":500486,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503859,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490275,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500486,503859]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/572196.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-14","classId":"rom-priest","group":"primary","unlockLevel":28,"sourceSkillId":490294,"name":"Healing Salve","description":"The effectiveness of heals received by the target increases by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572208,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500527],"components":[{"id":500527,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":174,"abilityModifiers":[{"type":144,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490294,"name":"Healing Salve","description":"The effectiveness of heals received by the target increases by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572208,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500527]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/572208.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-15","classId":"rom-priest","group":"primary","unlockLevel":30,"sourceSkillId":490301,"name":"Blessing of Humility","description":"For (Buff0-Time) seconds, you temporarily become the one with the least aggro.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":99,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572219,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500546],"components":[{"id":500546,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1073741824,0],"abilityModifiers":[{"type":138,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490301,"name":"Blessing of Humility","description":"For (Buff0-Time) seconds, you temporarily become the one with the least aggro.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":99,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572219,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500546]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/572219.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-16","classId":"rom-priest","group":"primary","unlockLevel":32,"sourceSkillId":490276,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500487,503860],"components":[{"id":500487,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503860,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":490276,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500487,503860]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/572196.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-17","classId":"rom-priest","group":"primary","unlockLevel":34,"sourceSkillId":490304,"name":"Holy Candle","description":"Consumes (Buff0-Dot)% HP per second and increases effectiveness of heals by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572224,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500549],"components":[{"id":500549,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":65643,"specialActionFlags":0,"assistType":174,"clearFlags":1024,"abilityModifiers":[{"type":149,"value":5}],"abilitySkillLevelArg":10,"dotTime":1,"dotType":5,"dotBase":-6,"dot":{"timeSeconds":1,"type":5,"base":-6,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490304,"name":"Holy Candle","description":"Consumes (Buff0-Dot)% HP per second and increases effectiveness of heals by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572224,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500549]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/572224.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-58","classId":"rom-priest","group":"primary","unlockLevel":18,"sourceSkillId":491175,"name":"Cleanse","description":"Removes harmful effects from target.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573063,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501566],"components":[{"id":501566,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":491175,"name":"Cleanse","description":"Removes harmful effects from target.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573063,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501566]}}],"sourceFamily":"primary:58","icon":"/assets/ui/rom-spells/573063.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-65","classId":"rom-priest","group":"primary","unlockLevel":20,"sourceSkillId":491176,"name":"Advanced Resurrection","description":"Revives a dead target which accumulates 45% less death debt. An [203606] is needed. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[501561],"components":[{"id":501561,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":45},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":491176,"name":"Advanced Resurrection","description":"Revives a dead target which accumulates 45% less death debt. An [203606] is needed. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[501561]}}],"sourceFamily":"primary:65","icon":"/assets/ui/rom-spells/572199.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-66","classId":"rom-priest","group":"primary","unlockLevel":30,"sourceSkillId":491177,"name":"Supreme Resurrection","description":"Revives a dead target which accumulates 75% less death debt. A [203605] is needed. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[501562],"components":[{"id":501562,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":75},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":491177,"name":"Supreme Resurrection","description":"Revives a dead target which accumulates 75% less death debt. A [203605] is needed. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[501562]}}],"sourceFamily":"primary:66","icon":"/assets/ui/rom-spells/572199.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-0","classId":"rom-priest","group":"general","unlockLevel":1,"sourceSkillId":491147,"name":"Urgent Heal","description":"Quickcast that restores (DMG0) points of target's HP.","target":"friendly","range":25,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.35},"source":{"imageId":573047,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501543,621391],"components":[{"id":501543,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":35,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":35,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":621391,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":491147,"name":"Urgent Heal","description":"Quickcast that restores (DMG0) points of target's HP.","target":"friendly","range":25,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.35},"source":{"imageId":573047,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501543,621391]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/573047.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-1","classId":"rom-priest","group":"general","unlockLevel":1,"sourceSkillId":490256,"name":"Rising Tide","description":"Summons a torrent that deals (DMG0) Water damage to a target.","target":"hostile","range":21.700000000000003,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":12,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572061,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620408],"components":[{"id":620408,"magicFunc":0,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":28,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490256,"name":"Rising Tide","description":"Summons a torrent that deals (DMG0) Water damage to a target.","target":"hostile","range":21.700000000000003,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":12,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572061,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620408]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/572061.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-2","classId":"rom-priest","group":"general","unlockLevel":4,"sourceSkillId":490269,"name":"Regenerate","description":"Recover (Buff2-Dot) of target's HP every 2 seconds for (Buff2-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572067,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621318,621548,500469,621549],"components":[{"id":621318,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":25,"abilityModifiers":[{"type":163,"value":10},{"type":164,"value":10}],"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621548,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":25,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":25},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500469,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":25,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621549,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":524357,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":0,"value":8}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":498614,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490269,"name":"Regenerate","description":"Recover (Buff2-Dot) of target's HP every 2 seconds for (Buff2-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572067,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621318,621548,500469,621549]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/572067.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-3","classId":"rom-priest","group":"general","unlockLevel":8,"sourceSkillId":490300,"name":"Holy Aura","description":"Immune to all damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572221,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501546],"components":[{"id":501546,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":20,"effectFlagWords":[12,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-152.95,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490300,"name":"Holy Aura","description":"Immune to all damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572221,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501546]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/572221.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-4","classId":"rom-priest","group":"general","unlockLevel":12,"sourceSkillId":491166,"name":"Magic Barrier","description":"For (Buff0-Time) seconds, all party member's [SC_SKILLTIPS_MDEF] increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572223,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500548],"components":[{"id":500548,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":97,"abilityModifiers":[{"type":170,"value":6}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":491166,"name":"Magic Barrier","description":"For (Buff0-Time) seconds, all party member's [SC_SKILLTIPS_MDEF] increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572223,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500548]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/572223.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-5","classId":"rom-priest","group":"general","unlockLevel":16,"sourceSkillId":490298,"name":"Blessed Spring Water","description":"Increases party's Water resistance by (Buff0-0) points for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572215,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500536],"components":[{"id":500536,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":11,"abilityModifiers":[{"type":28,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490298,"name":"Blessed Spring Water","description":"Increases party's Water resistance by (Buff0-0) points for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572215,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500536]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/572215.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-0","classId":"rom-knight","group":"primary","unlockLevel":1,"sourceSkillId":490495,"name":"Holy Shield","description":"For (Buff0-Time) seconds, every party member within range receives a shield which can block all physical damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573731,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500943],"components":[{"id":500943,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[8,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490495,"name":"Holy Shield","description":"For (Buff0-Time) seconds, every party member within range receives a shield which can block all physical damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573731,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500943]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/573731.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-1","classId":"rom-knight","group":"primary","unlockLevel":2,"sourceSkillId":490149,"name":"Holy Seal","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second, and immediately adds 4 layers of Holy Seal effect. \nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff-Time-500140) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575282,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500142,500169,500140],"components":[{"id":500142,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.65,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":40,"hateRate":2.5},"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":490149,"name":"Holy Seal","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second, and immediately adds 4 layers of Holy Seal effect. \nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff-Time-500140) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575282,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500142,500169,500140]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/575282.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-2","classId":"rom-knight","group":"primary","unlockLevel":2,"sourceSkillId":490172,"name":"Holy Power Explosion","description":"Gives a buff restoring MP by (Buff0-Dot)% every 2 seconds, and increases the aggro of all attacks by (Buff0-0)%. It also restores (DMG-500314) MP for (Buff0-Time) seconds while receiving healing.","target":"self","range":5,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570944,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501827,500314],"components":[{"id":501827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":235,"specialActionFlags":0,"assistType":24,"abilityModifiers":[{"type":138,"value":10}],"abilitySkillLevelArg":5,"dotTime":2,"dotType":6,"dotBase":3,"dot":{"timeSeconds":2,"type":6,"base":3,"skillLevelArg":0},"attackType":1,"damagePower":60,"fixedValue":0,"summonCreatureId":0},{"id":500314,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":50,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":50,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":490172,"name":"Holy Power Explosion","description":"Gives a buff restoring MP by (Buff0-Dot)% every 2 seconds, and increases the aggro of all attacks by (Buff0-0)%. It also restores (DMG-500314) MP for (Buff0-Time) seconds while receiving healing.","target":"self","range":5,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570944,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501827,500314]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/570944.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-3","classId":"rom-knight","group":"primary","unlockLevel":6,"sourceSkillId":490175,"name":"Whirlwind Shield","description":"Deals (DMG0) + (FixDMG-500175) x the shield's defense value main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second on multiple targets. Each skill level adds to aggro.\n(Must have a shield equipped)\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575127,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500175],"components":[{"id":500175,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":7,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":10},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":490175,"name":"Whirlwind Shield","description":"Deals (DMG0) + (FixDMG-500175) x the shield's defense value main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second on multiple targets. Each skill level adds to aggro.\n(Must have a shield equipped)\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575127,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500175]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/575127.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-4","classId":"rom-knight","group":"primary","unlockLevel":10,"sourceSkillId":490189,"name":"Shackles of Light","description":"Emanate shackles of light, Rooting all enemies for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":73,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570948,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500195],"components":[{"id":500195,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490189,"name":"Shackles of Light","description":"Emanate shackles of light, Rooting all enemies for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":73,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570948,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500195]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/570948.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-5","classId":"rom-knight","group":"primary","unlockLevel":14,"sourceSkillId":490168,"name":"Resolution","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff0-1)% + (Buff0-0) for (Buff0-Time) seconds, \nand restores (DMG-500950) + (current [SC_SKILLTIPS_HP]) x ((DMG-507222)).","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":3.5},"source":{"imageId":570960,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500211,500950,507222],"components":[{"id":500211,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":8,"value":350},{"type":167,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500950,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":68157440,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":350,"fixedValue":0,"attack":{"type":0,"calculationType":4,"damagePower":350,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":507222,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":68157440,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490168,"name":"Resolution","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff0-1)% + (Buff0-0) for (Buff0-Time) seconds, \nand restores (DMG-500950) + (current [SC_SKILLTIPS_HP]) x ((DMG-507222)).","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":3.5},"source":{"imageId":570960,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500211,500950,507222]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/570960.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-6","classId":"rom-knight","group":"primary","unlockLevel":18,"sourceSkillId":490150,"name":"Charge","description":"Charging towards the target causes (DMG0) [SC_SKILLTIPS_DMG], stuns the target for (Buff4-Time) seconds and adds 2 layers Holy Seal effects.\n(For players the stun effect time lasts (Buff5-Time) seconds.)\nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff-Time-500140) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":570954,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500240,500243,504257,500169,500168,500146,500140],"components":[{"id":500240,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":5,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-25,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-25,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500243,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504257,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490150,"name":"Charge","description":"Charging towards the target causes (DMG0) [SC_SKILLTIPS_DMG], stuns the target for (Buff4-Time) seconds and adds 2 layers Holy Seal effects.\n(For players the stun effect time lasts (Buff5-Time) seconds.)\nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff-Time-500140) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":570954,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500240,500243,504257,500169,500168,500146,500140]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/570954.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-7","classId":"rom-knight","group":"primary","unlockLevel":20,"sourceSkillId":490153,"name":"Threaten","description":"Deals (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-505950) [SC_SKILLTIPS_DMG|Physical Light Damage] and increases your own aggro by (Buff8-0)% for (Buff8-Time) seconds.\nIf the target has the Holy Seal effect, it will deal (DMG-500242) to (DMG-500257) [SC_SKILLTIPS_DMG|Physical Light Damage] according to the number the effect stacks and reduce the target's [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff4-0)% to (Buff7-0)% for (Buff4-Time) seconds. The effect is enhanced according to the amount of the effect stacks.\n|cff99FF37 Each Holy Seal adds (DMG-500242) Light damage and reduces the target's [SC_SKILLTIPS_01|physical] and [SC_SKILLTIPS_02|magic attack power] by (Buff4-0)%.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575285,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505950,500225,500140,500227,500146,500228,500168,500241,500169,500246,500242,500257],"components":[{"id":505950,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.1,"attack":{"type":0,"calculationType":9,"damagePower":-30,"damagePowerSkillLevelArg":20,"fixedValue":-0.1,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500225,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":196,"abilityModifiers":[{"type":134,"value":-1},{"type":171,"value":-1}],"abilitySkillLevelArg":25,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500227,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":196,"abilityModifiers":[{"type":134,"value":-2},{"type":171,"value":-2}],"abilitySkillLevelArg":25,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500228,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":196,"abilityModifiers":[{"type":134,"value":-3},{"type":171,"value":-3}],"abilitySkillLevelArg":25,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500241,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":196,"abilityModifiers":[{"type":134,"value":-4},{"type":171,"value":-4}],"abilitySkillLevelArg":25,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500246,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":39,"abilityModifiers":[{"type":138,"value":21}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500242,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-5,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-5,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500257,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-20,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490153,"name":"Threaten","description":"Deals (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-505950) [SC_SKILLTIPS_DMG|Physical Light Damage] and increases your own aggro by (Buff8-0)% for (Buff8-Time) seconds.\nIf the target has the Holy Seal effect, it will deal (DMG-500242) to (DMG-500257) [SC_SKILLTIPS_DMG|Physical Light Damage] according to the number the effect stacks and reduce the target's [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff4-0)% to (Buff7-0)% for (Buff4-Time) seconds. The effect is enhanced according to the amount of the effect stacks.\n|cff99FF37 Each Holy Seal adds (DMG-500242) Light damage and reduces the target's [SC_SKILLTIPS_01|physical] and [SC_SKILLTIPS_02|magic attack power] by (Buff4-0)%.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575285,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505950,500225,500140,500227,500146,500228,500168,500241,500169,500246,500242,500257]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/575285.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-8","classId":"rom-knight","group":"passive","unlockLevel":22,"sourceSkillId":490171,"name":"Shield Mastery","description":"Increases shield's [SC_SKILLTIPS_DEF] by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570937,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500215],"components":[{"id":500215,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":43,"value":5}],"abilitySkillLevelArg":23.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490171,"name":"Shield Mastery","description":"Increases shield's [SC_SKILLTIPS_DEF] by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570937,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500215]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/570937.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-10","classId":"rom-knight","group":"primary","unlockLevel":26,"sourceSkillId":490468,"name":"Shield of Valor","description":"Enhances shield with the power of Light, increasing [SC_SKILLTIPS_PARRY_RATE] by (Buff0-0)%. Each successful parry will reduce the cooldown time of the Holy Seal skill by 1 seconds for (Buff0-Time) seconds.\n(Must have a shield equipped)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570946,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500178],"components":[{"id":500178,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":227,"value":5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490468,"name":"Shield of Valor","description":"Enhances shield with the power of Light, increasing [SC_SKILLTIPS_PARRY_RATE] by (Buff0-0)%. Each successful parry will reduce the cooldown time of the Holy Seal skill by 1 seconds for (Buff0-Time) seconds.\n(Must have a shield equipped)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570946,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500178]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/570946.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-11","classId":"rom-knight","group":"primary","unlockLevel":28,"sourceSkillId":490186,"name":"Truth Shield Bash","description":"Deals (DMG0) + (FixDMG-500177) x the shield's defense value [SC_SKILLTIPS_DMG|Physical Light Damage] per second, based on the main hand weapon's damage per second. If the caster is under the \"[501827]\" effect, the inflicted aggro will also be increased.\nIf the target has the \"Holy Seal\" effect, all the Holy Seal effects will be consumed to generate a shield, absorbing an amount of damage equal to (Buff-Shield-500196)% to (Buff-Shield-500199)% [SC_SKILLTIPS_HP].\n|cff99FF37 Each shield generated by the Holy Seal can absorb an amount of damage equal to (Buff-Shield-500196)% maximal HP. The shield can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":570958,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500185,501827,500177,500186,500140,500187,500146,500188,500168,500189,500169,500196,500199],"components":[{"id":500185,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":10,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":20,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":10},"summonCreatureId":0},{"id":501827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":235,"specialActionFlags":0,"assistType":24,"abilityModifiers":[{"type":138,"value":10}],"abilitySkillLevelArg":5,"dotTime":2,"dotType":6,"dotBase":3,"dot":{"timeSeconds":2,"type":6,"base":3,"skillLevelArg":0},"attackType":1,"damagePower":60,"fixedValue":0,"summonCreatureId":0},{"id":500177,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":10,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":20,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500186,"magicFunc":7,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500187,"magicFunc":7,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500188,"magicFunc":7,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500189,"magicFunc":7,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500196,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":2,"skillLevelArg":3}},{"id":500199,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":8,"skillLevelArg":3}}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490186,"name":"Truth Shield Bash","description":"Deals (DMG0) + (FixDMG-500177) x the shield's defense value [SC_SKILLTIPS_DMG|Physical Light Damage] per second, based on the main hand weapon's damage per second. If the caster is under the \"[501827]\" effect, the inflicted aggro will also be increased.\nIf the target has the \"Holy Seal\" effect, all the Holy Seal effects will be consumed to generate a shield, absorbing an amount of damage equal to (Buff-Shield-500196)% to (Buff-Shield-500199)% [SC_SKILLTIPS_HP].\n|cff99FF37 Each shield generated by the Holy Seal can absorb an amount of damage equal to (Buff-Shield-500196)% maximal HP. The shield can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":570958,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500185,501827,500177,500186,500140,500187,500146,500188,500168,500189,500169,500196,500199]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/570958.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-12","classId":"rom-knight","group":"primary","unlockLevel":30,"sourceSkillId":490154,"name":"Shock","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second and stuns the target for (Buff4-Time) seconds.\nIf the target has the Holy Seal effect, it will deal additional (DMG-500946) to (DMG-500949) [SC_SKILLTIPS_DMG|Physical Light Damage] and increase the stun effect time by (Buff-Time-500248) to (Buff8-Time) seconds.\n|cff99FF37 Each Holy Seal increases Light damage by (DMG-500946) and the stun effect time by (Buff4-Time) seconds.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570938,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500263,500247,500259,500169,500253,500168,500249,500146,500248,500140,500946,500949],"components":[{"id":500263,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":12,"hateCost":30,"settingFlags":0,"specialActionFlags":4,"assistType":2,"abilityModifiers":[{"type":135,"value":-3}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":10,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500247,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500259,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500253,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":4,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500249,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":3,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500248,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":2,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500946,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":12,"hateCost":30,"settingFlags":66,"specialActionFlags":4,"assistType":2,"abilityModifiers":[{"type":135,"value":-3}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-10,"damagePowerSkillLevelArg":10,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500949,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":12,"hateCost":30,"settingFlags":66,"specialActionFlags":4,"assistType":2,"abilityModifiers":[{"type":135,"value":-3}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-40,"damagePowerSkillLevelArg":10,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490154,"name":"Shock","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second and stuns the target for (Buff4-Time) seconds.\nIf the target has the Holy Seal effect, it will deal additional (DMG-500946) to (DMG-500949) [SC_SKILLTIPS_DMG|Physical Light Damage] and increase the stun effect time by (Buff-Time-500248) to (Buff8-Time) seconds.\n|cff99FF37 Each Holy Seal increases Light damage by (DMG-500946) and the stun effect time by (Buff4-Time) seconds.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570938,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500263,500247,500259,500169,500253,500168,500249,500146,500248,500140,500946,500949]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/570938.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-14","classId":"rom-knight","group":"primary","unlockLevel":34,"sourceSkillId":491321,"name":"Holy Strength","description":"Increases [SC_SKILLTIPS_STR] by (Buff0-0)% and Light damage dealt by you, by (Buff0-1)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575284,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500768],"components":[{"id":500768,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":161,"value":1},{"type":49,"value":1}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":491321,"name":"Holy Strength","description":"Increases [SC_SKILLTIPS_STR] by (Buff0-0)% and Light damage dealt by you, by (Buff0-1)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575284,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500768]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/575284.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-9","classId":"rom-knight","group":"passive","unlockLevel":24,"sourceSkillId":490191,"name":"Devotion","description":"Increases [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0), the healing you receive by (Buff8-0)% and Light damage dealt by you, by (Buff8-1)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570952,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500239,507204,500148],"components":[{"id":500239,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":30}],"abilitySkillLevelArg":50,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507204,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":168,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500148,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":144,"value":1},{"type":49,"value":1}],"abilitySkillLevelArg":24,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":490191,"name":"Devotion","description":"Increases [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0), the healing you receive by (Buff8-0)% and Light damage dealt by you, by (Buff8-1)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570952,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500239,507204,500148]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/570952.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-17","classId":"rom-knight","group":"primary","unlockLevel":42,"sourceSkillId":495724,"name":"Hall of Dead Heroes","description":"After use, all party members within range will receive the Hall of Dead Heroes effect. [SC_SKILLTIPS_HURT_PASSIVE] decreases by (Buff0-2)%, [SC_SKILLTIPS_MHURT_PASSIVE] decreases by (Buff0-1)%, and [SC_SKILLTIPS_MOVE] increases by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570972,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500266],"components":[{"id":500266,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":30},{"type":142,"value":10},{"type":143,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":42,"prerequisites":[],"sourceSkillId":495724,"name":"Hall of Dead Heroes","description":"After use, all party members within range will receive the Hall of Dead Heroes effect. [SC_SKILLTIPS_HURT_PASSIVE] decreases by (Buff0-2)%, [SC_SKILLTIPS_MHURT_PASSIVE] decreases by (Buff0-1)%, and [SC_SKILLTIPS_MOVE] increases by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570972,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500266]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/570972.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-0","classId":"rom-knight","group":"general","unlockLevel":1,"sourceSkillId":490151,"name":"Punishment","description":"If the target has the Holy Seal effect, According to the amount of the effect stacks, the Holy Seal will deal extra (DMG0) to (DMG3) + current [SC_SKILLTIPS_STA] x (FixDMG-500145) to (FixDMG-500219) [SC_SKILLTIPS_DMG|Physical Light Damage].\n|cff99FF37 Every Holy Seal stack adds (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-500145) Light damage.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":570928,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500145,500140,500216,500146,500217,500168,500219,500169,500143],"components":[{"id":500145,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.1,"attack":{"type":0,"calculationType":9,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500216,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.2,"attack":{"type":0,"calculationType":9,"damagePower":-60,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500217,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-90,"fixedValue":-0.3,"attack":{"type":0,"calculationType":9,"damagePower":-90,"damagePowerSkillLevelArg":30,"fixedValue":-0.3,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500219,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-120,"fixedValue":-0.4,"attack":{"type":0,"calculationType":9,"damagePower":-120,"damagePowerSkillLevelArg":30,"fixedValue":-0.4,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500143,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":-10,"settingFlags":524288,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490151,"name":"Punishment","description":"If the target has the Holy Seal effect, According to the amount of the effect stacks, the Holy Seal will deal extra (DMG0) to (DMG3) + current [SC_SKILLTIPS_STA] x (FixDMG-500145) to (FixDMG-500219) [SC_SKILLTIPS_DMG|Physical Light Damage].\n|cff99FF37 Every Holy Seal stack adds (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-500145) Light damage.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":570928,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500145,500140,500216,500146,500217,500168,500219,500169,500143]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/570928.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-1","classId":"rom-knight","group":"general","unlockLevel":1,"sourceSkillId":490148,"name":"Holy Strike","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second, and adds one layer of Holy Seal effect. Each skill level adds to aggro.\nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff4-Time) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575126,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500155,500169,500168,500146,500140],"components":[{"id":500155,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.65,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2.5},"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490148,"name":"Holy Strike","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second, and adds one layer of Holy Seal effect. Each skill level adds to aggro.\nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff4-Time) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575126,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500155,500169,500168,500146,500140]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/575126.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-2","classId":"rom-knight","group":"general","unlockLevel":4,"sourceSkillId":490159,"name":"Disarmament","description":"Inflicts (DMG0) main hand weapon DPS to the target and reduces its armor value by (Buff7-0)% for (Buff7-Time) seconds. Can be stacked 4 times.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570942,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620959,500165,500159,500158,500157],"components":[{"id":620959,"magicFunc":0,"magicType":4,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.65,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":2,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500165,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-12}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500159,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-9}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500158,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-6}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500157,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-3}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490159,"name":"Disarmament","description":"Inflicts (DMG0) main hand weapon DPS to the target and reduces its armor value by (Buff7-0)% for (Buff7-Time) seconds. Can be stacked 4 times.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570942,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620959,500165,500159,500158,500157]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/570942.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-3","classId":"rom-knight","group":"general","unlockLevel":8,"sourceSkillId":490179,"name":"Strike of Punishment","description":"Deals (DMG0) [SC_SKILLTIPS_DMG|Physical Light Damage] to the target and makes it unable to carry out physical and normal attacks for (Buff4-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":6,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":803035,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500767,500147],"components":[{"id":500767,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":10,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-20,"damagePowerSkillLevelArg":25,"fixedValue":0,"fixedType":2,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500147,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":126,"effectFlagWords":[2,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490179,"name":"Strike of Punishment","description":"Deals (DMG0) [SC_SKILLTIPS_DMG|Physical Light Damage] to the target and makes it unable to carry out physical and normal attacks for (Buff4-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":6,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":803035,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500767,500147]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/803035.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-4","classId":"rom-knight","group":"general","unlockLevel":12,"sourceSkillId":490152,"name":"Enhanced Armor","description":"Increases [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570930,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500141],"components":[{"id":500141,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":300,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":2,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490152,"name":"Enhanced Armor","description":"Increases [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570930,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500141]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/570930.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-5","classId":"rom-knight","group":"passive","unlockLevel":16,"sourceSkillId":490174,"name":"Defense Technique","description":"Increases parry rate by (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570940,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500218],"components":[{"id":500218,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490174,"name":"Defense Technique","description":"Increases parry rate by (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570940,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500218]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/570940.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-6","classId":"rom-knight","group":"passive","unlockLevel":20,"sourceSkillId":490170,"name":"Resilience","description":"Increases [SC_SKILLTIPS_STA] by (current [SC_SKILLTIPS_STA] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570932,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500214],"components":[{"id":500214,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":3,"value":11},{"type":162,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490170,"name":"Resilience","description":"Increases [SC_SKILLTIPS_STA] by (current [SC_SKILLTIPS_STA] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570932,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500214]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/570932.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-7","classId":"rom-knight","group":"general","unlockLevel":36,"sourceSkillId":490192,"name":"Shield of Discipline","description":"Enhances shield with the power of Light, absorbing (Buff0-0)% [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] for 30 seconds. Also deals (DMG-500213) Light damage to the attacking spell caster. (Shield must be equipped.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":99,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":570965,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500149,500213],"components":[{"id":500149,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":268435683,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":143,"value":5},{"type":142,"value":5}],"abilitySkillLevelArg":23.2,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":490469,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500213,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"attack":{"type":0,"calculationType":4,"damagePower":-100,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":490192,"name":"Shield of Discipline","description":"Enhances shield with the power of Light, absorbing (Buff0-0)% [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] for 30 seconds. Also deals (DMG-500213) Light damage to the attacking spell caster. (Shield must be equipped.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":99,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":570965,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500149,500213]}}],"sourceFamily":"general:7","icon":"/assets/ui/rom-spells/570965.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-0","classId":"rom-warden","group":"primary","unlockLevel":1,"sourceSkillId":493644,"name":"Energy Absorb","description":"Absorbs target's natural energy to reduce his physical damage by (Buff0-0)% and increase your own physical damage by (Buff4-0)% for (Buff0-Time) seconds.","target":"hostile","range":8,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578296,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504136,504137],"components":[{"id":504136,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":-10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504137,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493644,"name":"Energy Absorb","description":"Absorbs target's natural energy to reduce his physical damage by (Buff0-0)% and increase your own physical damage by (Buff4-0)% for (Buff0-Time) seconds.","target":"hostile","range":8,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578296,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504136,504137]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/578296.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-1","classId":"rom-warden","group":"primary","unlockLevel":1,"sourceSkillId":493333,"name":"Summon Spirit of the Oak","description":"Summons a [102297] to assist you. While in effect, it will increase your [SC_SKILLTIPS_DEF] by (Buff4-0)% and [SC_SKILLTIPS_PARRY_RATE] by (Buff4-1)%.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102297},"source":{"imageId":578258,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503576,620682],"components":[{"id":503576,"magicFunc":3,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102297,"summon":{"creatureId":102297,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}},{"id":620682,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":135,"value":65},{"type":227,"value":20}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493333,"name":"Summon Spirit of the Oak","description":"Summons a [102297] to assist you. While in effect, it will increase your [SC_SKILLTIPS_DEF] by (Buff4-0)% and [SC_SKILLTIPS_PARRY_RATE] by (Buff4-1)%.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102297},"source":{"imageId":578258,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503576,620682]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/578258.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-2","classId":"rom-warden","group":"primary","unlockLevel":1,"sourceSkillId":493382,"name":"Punch","description":"Causes (DMG0) damage to your target and decreases the target's [SC_SKILLTIPS_01] by (Buff4-0)% for (Buff4-Time) seconds.\n[SC_SKILL_COLLECT_01]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":578264,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503575,503582,503650],"components":[{"id":503575,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-20,"damagePowerSkillLevelArg":33,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503582,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503650,"magicFunc":7,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493382,"name":"Punch","description":"Causes (DMG0) damage to your target and decreases the target's [SC_SKILLTIPS_01] by (Buff4-0)% for (Buff4-Time) seconds.\n[SC_SKILL_COLLECT_01]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":578264,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503575,503582,503650]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/578264.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-3","classId":"rom-warden","group":"primary","unlockLevel":2,"sourceSkillId":493393,"name":"Thorny Vines","description":"Thorny vines pierce your target, causing (Buff0-Dot) physical damage every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578275,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503628],"components":[{"id":503628,"magicFunc":1,"magicType":0,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":493393,"name":"Thorny Vines","description":"Thorny vines pierce your target, causing (Buff0-Dot) physical damage every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578275,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503628]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/578275.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-4","classId":"rom-warden","group":"primary","unlockLevel":6,"sourceSkillId":493398,"name":"Elven Prayer","description":"Heals your pet restoring (current max HP x (DMG-507338)) + (DMG-503636) HP.","target":"self","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":578279,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620138,505155,507338,503636],"components":[{"id":620138,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505155,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":10},{"type":173,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507338,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":2,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":2,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503636,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":20,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":20,"damagePowerSkillLevelArg":24,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":493398,"name":"Elven Prayer","description":"Heals your pet restoring (current max HP x (DMG-507338)) + (DMG-503636) HP.","target":"self","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":578279,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620138,505155,507338,503636]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/578279.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-5","classId":"rom-warden","group":"primary","unlockLevel":10,"sourceSkillId":493400,"name":"Movement Restriction","description":"Your target is unable to move for (Buff0-Time) seconds. Afterwards it suffers (DMG-503945) damage.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":578281,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503638,504241,503943,503945],"components":[{"id":503638,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":194,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493419,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504241,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":194,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493419,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503943,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":524288,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503945,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-16.4,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-16.4,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":493400,"name":"Movement Restriction","description":"Your target is unable to move for (Buff0-Time) seconds. Afterwards it suffers (DMG-503945) damage.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":578281,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503638,504241,503943,503945]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/578281.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-6","classId":"rom-warden","group":"primary","unlockLevel":14,"sourceSkillId":493344,"name":"Summon Nature Crystal","description":"Summons a [102325] to assist you. While active, you will be immune to all attacks but will not be able to use any attack skills. When the [102325] is present, your [SC_SKILLTIPS_MOVE] will be increased by (Buff4-0)% and you can order the [102325] to cast [498201] and [498202] to assist your party members.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102325},"source":{"imageId":578260,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503578,503948],"components":[{"id":503578,"magicFunc":3,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102325,"summon":{"creatureId":102325,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}},{"id":503948,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":24,"value":7}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":493344,"name":"Summon Nature Crystal","description":"Summons a [102325] to assist you. While active, you will be immune to all attacks but will not be able to use any attack skills. When the [102325] is present, your [SC_SKILLTIPS_MOVE] will be increased by (Buff4-0)% and you can order the [102325] to cast [498201] and [498202] to assist your party members.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102325},"source":{"imageId":578260,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503578,503948]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/578260.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-7","classId":"rom-warden","group":"primary","unlockLevel":14,"sourceSkillId":498202,"name":"Crystalline Acceleration","description":"Increases the [SC_SKILLTIPS_DPS] and [SC_SKILLTIPS_CAST] of team members by (Buff0-620687)% for (Buff-Time-620687) seconds within a radius of 75 from the pet's master.\n[SC_SKILL_COLLECT_01]","target":"self","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578270,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620716,620687],"components":[{"id":620716,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620687,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-5},{"type":51,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":498202,"name":"Crystalline Acceleration","description":"Increases the [SC_SKILLTIPS_DPS] and [SC_SKILLTIPS_CAST] of team members by (Buff0-620687)% for (Buff-Time-620687) seconds within a radius of 75 from the pet's master.\n[SC_SKILL_COLLECT_01]","target":"self","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578270,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620716,620687]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/578270.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-8","classId":"rom-warden","group":"primary","unlockLevel":18,"sourceSkillId":493384,"name":"Entangle","description":"Binds the target tightly to your pet, making it unable to move, attack or cast spells for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578266,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503583,504243,503584],"components":[{"id":503583,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504243,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503584,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":493384,"name":"Entangle","description":"Binds the target tightly to your pet, making it unable to move, attack or cast spells for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578266,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503583,504243,503584]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/578266.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-9","classId":"rom-warden","group":"primary","unlockLevel":22,"sourceSkillId":493399,"name":"Damage Transfer","description":"For (Buff-Time-503643) seconds, (Buff4-0)% of the damage you receive is transferred to your pet. (Pet must be inside a radius of 300.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578280,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504305,503942,503643],"components":[{"id":504305,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503942,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":128,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":30},{"type":142,"value":30}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":493416,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503643,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":493399,"name":"Damage Transfer","description":"For (Buff-Time-503643) seconds, (Buff4-0)% of the damage you receive is transferred to your pet. (Pet must be inside a radius of 300.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578280,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504305,503942,503643]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/578280.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-10","classId":"rom-warden","group":"primary","unlockLevel":24,"sourceSkillId":491668,"name":"Heart of the Oak","description":"You are protected by the power of the Oak and will be able to resist the next 2 attacks. It lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":578261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620679,503946],"components":[{"id":620679,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":363,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5}],"abilitySkillLevelArg":0,"dotTime":3,"dotType":5,"dotBase":1,"dot":{"timeSeconds":3,"type":5,"base":1,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":2,"skillLevelArg":0}},{"id":503946,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":355,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":2,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":491668,"name":"Heart of the Oak","description":"You are protected by the power of the Oak and will be able to resist the next 2 attacks. It lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":578261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620679,503946]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/578261.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-11","classId":"rom-warden","group":"primary","unlockLevel":26,"sourceSkillId":493391,"name":"Frantic Briar","description":"Uses the power of Mother Earth to create a briar, causing (DMG0) main hand weapon DPS to all targets in a range of 80, and decreasing their [SC_SKILLTIPS_MOVE] by (Buff4-0)% for (Buff4-Time) seconds.","target":"self","range":8,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578273,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503481,620682,503626,503947,620694],"components":[{"id":503481,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0},{"id":620682,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":135,"value":65},{"type":227,"value":20}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503626,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503947,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-35}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620694,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":493391,"name":"Frantic Briar","description":"Uses the power of Mother Earth to create a briar, causing (DMG0) main hand weapon DPS to all targets in a range of 80, and decreasing their [SC_SKILLTIPS_MOVE] by (Buff4-0)% for (Buff4-Time) seconds.","target":"self","range":8,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578273,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503481,620682,503626,503947,620694]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/578273.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-13","classId":"rom-warden","group":"primary","unlockLevel":30,"sourceSkillId":493343,"name":"Summon Oak Walker","description":"Summons an [102324] to assist you. While in effect, it increases your [SC_SKILLTIPS_CRI] by (Buff4-0), [SC_SKILLTIPS_CRI_POWER] by (Buff4-1)%, [SC_SKILLTIPS_MCRI] by (Buff4-2), and [SC_SKILLTIPS_MCRI_POWER] by (Buff4-3)%. If your skill attacks land a critical hit during the effect time, the Oak Walker will additionally cast [493385] on your target.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102324},"source":{"imageId":578259,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503577,620678],"components":[{"id":503577,"magicFunc":3,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102324,"summon":{"creatureId":102324,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}},{"id":620678,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":18,"value":200},{"type":19,"value":10},{"type":20,"value":200},{"type":21,"value":10}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":493343,"name":"Summon Oak Walker","description":"Summons an [102324] to assist you. While in effect, it increases your [SC_SKILLTIPS_CRI] by (Buff4-0), [SC_SKILLTIPS_CRI_POWER] by (Buff4-1)%, [SC_SKILLTIPS_MCRI] by (Buff4-2), and [SC_SKILLTIPS_MCRI_POWER] by (Buff4-3)%. If your skill attacks land a critical hit during the effect time, the Oak Walker will additionally cast [493385] on your target.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102324},"source":{"imageId":578259,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503577,620678]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/578259.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-14","classId":"rom-warden","group":"primary","unlockLevel":30,"sourceSkillId":493385,"name":"Sepal Stab","description":"Precisely stab your target causing (DMG0) damage. \n[SC_SKILL_COLLECT_01]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":578267,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503619,503650],"components":[{"id":503619,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-30,"damagePowerSkillLevelArg":26,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503650,"magicFunc":7,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":493385,"name":"Sepal Stab","description":"Precisely stab your target causing (DMG0) damage. \n[SC_SKILL_COLLECT_01]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":578267,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503619,503650]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/578267.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-15","classId":"rom-warden","group":"passive","unlockLevel":32,"sourceSkillId":493409,"name":"Two-Hand Weapon Mastery","description":"You can wield two-hand axes and swords, and your two-handed weapon damage is increased by (Buff0-3)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578290,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503647],"components":[{"id":503647,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":90,"value":1},{"type":92,"value":1},{"type":63,"value":5},{"type":65,"value":5},{"type":66,"value":5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":493409,"name":"Two-Hand Weapon Mastery","description":"You can wield two-hand axes and swords, and your two-handed weapon damage is increased by (Buff0-3)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578290,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503647]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/578290.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-16","classId":"rom-warden","group":"primary","unlockLevel":32,"sourceSkillId":493348,"name":"Protection of Nature","description":"Increases your [SC_SKILLTIPS_HP] by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578263,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503581],"components":[{"id":503581,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1},{"type":144,"value":3}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":493348,"name":"Protection of Nature","description":"Increases your [SC_SKILLTIPS_HP] by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578263,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503581]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/578263.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-17","classId":"rom-warden","group":"passive","unlockLevel":34,"sourceSkillId":493407,"name":"Natural Lifeline","description":"Permanently increases your pet's maximum HP by (Buff0-503645)%. Permanently increases your [SC_SKILLTIPS_STA] and [SC_SKILLTIPS_STR] by (current STA or STR + (Buff0-0)) x ((Buff0-1)%) + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578288,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620681,503645],"components":[{"id":620681,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":3,"value":10},{"type":162,"value":1},{"type":2,"value":10},{"type":161,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503645,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":50331747,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":3}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":493407,"name":"Natural Lifeline","description":"Permanently increases your pet's maximum HP by (Buff0-503645)%. Permanently increases your [SC_SKILLTIPS_STA] and [SC_SKILLTIPS_STR] by (current STA or STR + (Buff0-0)) x ((Buff0-1)%) + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578288,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620681,503645]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/578288.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-18","classId":"rom-warden","group":"primary","unlockLevel":36,"sourceSkillId":493397,"name":"Banish","description":"Banishes your target for (Buff0-Time) seconds making it unable to act but also unable to receive damage.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":60000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578278,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503635,504240],"components":[{"id":503635,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[95,24],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504240,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[95,24],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":493397,"name":"Banish","description":"Banishes your target for (Buff0-Time) seconds making it unable to act but also unable to receive damage.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":60000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578278,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503635,504240]}}],"sourceFamily":"primary:18","icon":"/assets/ui/rom-spells/578278.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-19","classId":"rom-warden","group":"primary","unlockLevel":38,"sourceSkillId":493386,"name":"Magic Interference","description":"Reduces your target's [SC_SKILLTIPS_MAG_HITP] and [SC_SKILLTIPS_HITP] by (Buff0-0)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578268,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620711,620712],"components":[{"id":620711,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":199,"value":-2},{"type":197,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620712,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":199,"value":-2},{"type":197,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":493386,"name":"Magic Interference","description":"Reduces your target's [SC_SKILLTIPS_MAG_HITP] and [SC_SKILLTIPS_HITP] by (Buff0-0)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578268,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620711,620712]}}],"sourceFamily":"primary:19","icon":"/assets/ui/rom-spells/578268.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-20","classId":"rom-warden","group":"passive","unlockLevel":40,"sourceSkillId":493401,"name":"Vitality Explosion","description":"The power of Mother Earth flows through you. When you hit your target with [493395] or [493392], you will have a chance of restoring your HP by (DMG-503648). This skill can't be triggered again within (Buff-Time-620677) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503648,620677],"components":[{"id":503648,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":10,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":10,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620677,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":493401,"name":"Vitality Explosion","description":"The power of Mother Earth flows through you. When you hit your target with [493395] or [493392], you will have a chance of restoring your HP by (DMG-503648). This skill can't be triggered again within (Buff-Time-620677) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503648,620677]}}],"sourceFamily":"primary:20","icon":"/assets/ui/rom-spells/578282.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-21","classId":"rom-warden","group":"primary","unlockLevel":42,"sourceSkillId":493347,"name":"Power of the Oak","description":"You obtained the power of the Oak, temporary increasing two-hand weapon attack damage by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578262,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503580],"components":[{"id":503580,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":63,"value":3},{"type":65,"value":3},{"type":64,"value":3}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":42,"prerequisites":[],"sourceSkillId":493347,"name":"Power of the Oak","description":"You obtained the power of the Oak, temporary increasing two-hand weapon attack damage by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578262,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503580]}}],"sourceFamily":"primary:21","icon":"/assets/ui/rom-spells/578262.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-22","classId":"rom-warden","group":"primary","unlockLevel":44,"sourceSkillId":493403,"name":"Explosion of Power","description":"Vitalizes your pet's body, increasing your pet's physical and magical attack power by (Buff0-503641)% for (Buff-Time-503641) seconds. (Pet must be inside a radius of 300.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578284,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504198,503641],"components":[{"id":504198,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503641,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5},{"type":171,"value":5}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":44,"prerequisites":[],"sourceSkillId":493403,"name":"Explosion of Power","description":"Vitalizes your pet's body, increasing your pet's physical and magical attack power by (Buff0-503641)% for (Buff-Time-503641) seconds. (Pet must be inside a radius of 300.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578284,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504198,503641]}}],"sourceFamily":"primary:22","icon":"/assets/ui/rom-spells/578284.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-23","classId":"rom-warden","group":"primary","unlockLevel":46,"sourceSkillId":498201,"name":"Crystalline Protection","description":"Casts Crystalline Protection on all team members within a radius of 75 from the pet's master. Negates damage equal to (Buff-Shield-620686)% of maximum HP for (Buff-Time-620686) seconds. \n[SC_SKILL_COLLECT_01]","target":"self","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":578272,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620715,620686],"components":[{"id":620715,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620686,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435811,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":10,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":46,"prerequisites":[],"sourceSkillId":498201,"name":"Crystalline Protection","description":"Casts Crystalline Protection on all team members within a radius of 75 from the pet's master. Negates damage equal to (Buff-Shield-620686)% of maximum HP for (Buff-Time-620686) seconds. \n[SC_SKILL_COLLECT_01]","target":"self","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":578272,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620715,620686]}}],"sourceFamily":"primary:23","icon":"/assets/ui/rom-spells/578272.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-24","classId":"rom-warden","group":"primary","unlockLevel":48,"sourceSkillId":493405,"name":"Elven Guidance","description":"Cast this on your pet. If your pet lands a hit with Punch or Sepal Stab within the next (Buff-Time-503643) seconds you can recover (DMG-503652) MP. (Pet must be within a radius 300.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578286,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503960,503643,503652],"components":[{"id":503960,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503643,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503652,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":30,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":30,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":48,"prerequisites":[],"sourceSkillId":493405,"name":"Elven Guidance","description":"Cast this on your pet. If your pet lands a hit with Punch or Sepal Stab within the next (Buff-Time-503643) seconds you can recover (DMG-503652) MP. (Pet must be within a radius 300.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578286,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503960,503643,503652]}}],"sourceFamily":"primary:24","icon":"/assets/ui/rom-spells/578286.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-25","classId":"rom-warden","group":"primary","unlockLevel":50,"sourceSkillId":493394,"name":"Cross Chop","description":"Chop crosswise against your target, dealing (DMG0) main hand weapon DPS plus (FixDMG-503629) times STR damage to the enemies in a straight line in front of your target. If the [102297] is summoned, the skill will grant extra aggro.","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578276,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503629,620682,503950],"components":[{"id":503629,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":8},"summonCreatureId":0},{"id":620682,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":135,"value":65},{"type":227,"value":20}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503950,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[],"sourceSkillId":493394,"name":"Cross Chop","description":"Chop crosswise against your target, dealing (DMG0) main hand weapon DPS plus (FixDMG-503629) times STR damage to the enemies in a straight line in front of your target. If the [102297] is summoned, the skill will grant extra aggro.","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578276,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503629,620682,503950]}}],"sourceFamily":"primary:25","icon":"/assets/ui/rom-spells/578276.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-26","classId":"rom-warden","group":"primary","unlockLevel":1,"sourceSkillId":493645,"name":"Recall Pet","description":"Recall your pet.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578384,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504199],"components":[{"id":504199,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493645,"name":"Recall Pet","description":"Recall your pet.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578384,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504199]}}],"sourceFamily":"primary:26","icon":"/assets/ui/rom-spells/578384.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-0","classId":"rom-warden","group":"general","unlockLevel":1,"sourceSkillId":493395,"name":"Charged Chop","description":"Concentrates power in your weapon, then releases it to strike a mighty blow! Causes (DMG0) main hand weapon DPS plus (FixDMG-503630) times STR to your target. \nIt shares [SC_SKILLTIPS_CDTIME] with [493392].","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":1000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578277,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503630],"components":[{"id":503630,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.2,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.2,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493395,"name":"Charged Chop","description":"Concentrates power in your weapon, then releases it to strike a mighty blow! Causes (DMG0) main hand weapon DPS plus (FixDMG-503630) times STR to your target. \nIt shares [SC_SKILLTIPS_CDTIME] with [493392].","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":1000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578277,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503630]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/578277.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-1","classId":"rom-warden","group":"general","unlockLevel":4,"sourceSkillId":493642,"name":"Briar Shield","description":"Thorns surround you for (Buff0-Time) seconds, increasing your [SC_SKILLTIPS_DEF] by (Buff0-0)%. When you are physically attacked, it reflects (DMG-503959) main hand weapon DPS.\n(Only effective on targets within a range of 50)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578293,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503958,503959],"components":[{"id":503958,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":183,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":11,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":493643,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503959,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.01,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.01,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":493642,"name":"Briar Shield","description":"Thorns surround you for (Buff0-Time) seconds, increasing your [SC_SKILLTIPS_DEF] by (Buff0-0)%. When you are physically attacked, it reflects (DMG-503959) main hand weapon DPS.\n(Only effective on targets within a range of 50)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578293,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503958,503959]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/578293.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-2","classId":"rom-warden","group":"general","unlockLevel":8,"sourceSkillId":493392,"name":"Power of the Wood Spirit","description":"Uses the Power of the Wood Spirit to attack up to 3 targets, causing (DMG0) main hand weapon DPS. It shares [SC_SKILLTIPS_CDTIME] with [493395].","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":1000,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578274,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503627],"components":[{"id":503627,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":493392,"name":"Power of the Wood Spirit","description":"Uses the Power of the Wood Spirit to attack up to 3 targets, causing (DMG0) main hand weapon DPS. It shares [SC_SKILLTIPS_CDTIME] with [493395].","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":1000,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578274,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503627]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/578274.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-3","classId":"rom-warden","group":"passive","unlockLevel":12,"sourceSkillId":493608,"name":"Enhanced Accuracy","description":"Increases your physical attack accuracy by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578292,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503956],"components":[{"id":503956,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":1}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":493608,"name":"Enhanced Accuracy","description":"Increases your physical attack accuracy by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578292,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503956]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/578292.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-4","classId":"rom-warden","group":"general","unlockLevel":16,"sourceSkillId":493402,"name":"Elven Amulet","description":"You obtain the protection of the Elves. Received physical damage is reduced by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":70000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578283,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503957],"components":[{"id":503957,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":493402,"name":"Elven Amulet","description":"You obtain the protection of the Elves. Received physical damage is reduced by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":70000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578283,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503957]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/578283.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-5","classId":"rom-warden","group":"general","unlockLevel":20,"sourceSkillId":493406,"name":"Savage Power","description":"Draws out the savage power inside of you, temporarily increasing your physical attack power by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578287,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503644],"components":[{"id":503644,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":3}],"abilitySkillLevelArg":9.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":493406,"name":"Savage Power","description":"Draws out the savage power inside of you, temporarily increasing your physical attack power by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578287,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503644]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/578287.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-0","classId":"rom-druid","group":"primary","unlockLevel":1,"sourceSkillId":493538,"name":"Earth Arrow","description":"The power of Mother Earth manifests in your hand causing (DMG0) Earth damage to your target, and also gaining 1 point of Nature's Power.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":12,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578366,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620211,504126],"components":[{"id":620211,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":28,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504126,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493538,"name":"Earth Arrow","description":"The power of Mother Earth manifests in your hand causing (DMG0) Earth damage to your target, and also gaining 1 point of Nature's Power.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":12,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578366,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620211,504126]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/578366.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-1","classId":"rom-druid","group":"primary","unlockLevel":2,"sourceSkillId":493539,"name":"Briar Entwinement","description":"Pours the power of Mother Earth into your target causing every 2 seconds (Buff0-Dot) Earth damage for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578367,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503808],"components":[{"id":503808,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":493539,"name":"Briar Entwinement","description":"Pours the power of Mother Earth into your target causing every 2 seconds (Buff0-Dot) Earth damage for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578367,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503808]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/578367.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-2","classId":"rom-druid","group":"primary","unlockLevel":2,"sourceSkillId":493534,"name":"Purify","description":"Cleanses your target from curses.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578362,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503803],"components":[{"id":503803,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":493534,"name":"Purify","description":"Cleanses your target from curses.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578362,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503803]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/578362.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-3","classId":"rom-druid","group":"primary","unlockLevel":6,"sourceSkillId":493526,"name":"Restore Life","description":"Condenses the power of Mother Earth to restore (DMG0) HP to your target. Also regain 1 point of Nature's Power.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":578354,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503794,503999],"components":[{"id":503794,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":28,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503999,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":493526,"name":"Restore Life","description":"Condenses the power of Mother Earth to restore (DMG0) HP to your target. Also regain 1 point of Nature's Power.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":578354,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503794,503999]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/578354.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-4","classId":"rom-druid","group":"primary","unlockLevel":10,"sourceSkillId":493527,"name":"Blossoming Life","description":"Lets your target regenerate (Buff0-Dot) HP every 2 seconds for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578355,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503795],"components":[{"id":503795,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":8299,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":25,"dot":{"timeSeconds":2,"type":0,"base":25,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":493527,"name":"Blossoming Life","description":"Lets your target regenerate (Buff0-Dot) HP every 2 seconds for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578355,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503795]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/578355.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-5","classId":"rom-druid","group":"primary","unlockLevel":10,"sourceSkillId":493548,"name":"Unity with Mother Earth","description":"Enables every spell you cast to land a critical attack, and increases [SC_SKILLTIPS_HEAL] by (Buff0-0)% for (Buff0-Time) seconds, but you will be unable to move during this time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578375,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503817],"components":[{"id":503817,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,64],"abilityModifiers":[{"type":149,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":493548,"name":"Unity with Mother Earth","description":"Enables every spell you cast to land a critical attack, and increases [SC_SKILLTIPS_HEAL] by (Buff0-0)% for (Buff0-Time) seconds, but you will be unable to move during this time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578375,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503817]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/578375.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-6","classId":"rom-druid","group":"primary","unlockLevel":12,"sourceSkillId":493537,"name":"Rebirth","description":"Uses the power of nature to revive your target. Reduces death debt by 30%. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[503806],"components":[{"id":503806,"magicFunc":8,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":30},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":493537,"name":"Rebirth","description":"Uses the power of nature to revive your target. Reduces death debt by 30%. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[503806]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/578365.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-7","classId":"rom-druid","group":"primary","unlockLevel":14,"sourceSkillId":493546,"name":"Weakening Seed","description":"Plants a seed into your target's body reducing its [SC_SKILLTIPS_MDEF] by (Buff1-0)% for (Buff1-Time) seconds, and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and reduce target's [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds. Also 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578374,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503815,503827,620458,504131],"components":[{"id":503815,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":170,"abilityModifiers":[{"type":170,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620458,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":170,"abilityModifiers":[{"type":170,"value":-2}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504131,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":493546,"name":"Weakening Seed","description":"Plants a seed into your target's body reducing its [SC_SKILLTIPS_MDEF] by (Buff1-0)% for (Buff1-Time) seconds, and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and reduce target's [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds. Also 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578374,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503815,503827,620458,504131]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/578374.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-8","classId":"rom-druid","group":"primary","unlockLevel":18,"sourceSkillId":493543,"name":"Rockslide","description":"Hits your target with falling stones after (Buff0-Time) seconds causing (DMG-503824) Earth damage.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578382,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503812,503823,503824],"components":[{"id":503812,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":8386,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493553,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503823,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503824,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":493543,"name":"Rockslide","description":"Hits your target with falling stones after (Buff0-Time) seconds causing (DMG-503824) Earth damage.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578382,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503812,503823,503824]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/578382.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-9","classId":"rom-druid","group":"passive","unlockLevel":22,"sourceSkillId":493550,"name":"Knowledge of the Earth","description":"Makes you understand the flow of Mother Earth's energy, permanently increasing your magical Earth damage by (Buff0-0)% and your Earth resistance by (Buff0-1).\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578378,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503820],"components":[{"id":503820,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":10,"abilityModifiers":[{"type":45,"value":5},{"type":27,"value":2}],"abilitySkillLevelArg":23.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":493550,"name":"Knowledge of the Earth","description":"Makes you understand the flow of Mother Earth's energy, permanently increasing your magical Earth damage by (Buff0-0)% and your Earth resistance by (Buff0-1).\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578378,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503820]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/578378.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-10","classId":"rom-druid","group":"primary","unlockLevel":24,"sourceSkillId":493541,"name":"Binding Silence","description":"Causes (DMG0) [SC_SKILLTIPS_EARTH] and interrupts target's spell casting, rewarding you with 1 point of Nature's Power. (The interrupted spell will enter a cooldown. If the interrupted spell has no cooldown time, all spells will receive a cooldown of 3 seconds.)","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":578369,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503810,502703,504127],"components":[{"id":503810,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502703,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504127,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":493541,"name":"Binding Silence","description":"Causes (DMG0) [SC_SKILLTIPS_EARTH] and interrupts target's spell casting, rewarding you with 1 point of Nature's Power. (The interrupted spell will enter a cooldown. If the interrupted spell has no cooldown time, all spells will receive a cooldown of 3 seconds.)","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":578369,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503810,502703,504127]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/578369.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-11","classId":"rom-druid","group":"primary","unlockLevel":26,"sourceSkillId":493547,"name":"Curing Seed","description":"Plants a healing seed into your target's body increasing the efficiency of heals received by (Buff0-0)% for (Buff0-Time) seconds. This restores 1 point of Nature's Power.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578381,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503816,504132],"components":[{"id":503816,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":174,"abilityModifiers":[{"type":144,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504132,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":493547,"name":"Curing Seed","description":"Plants a healing seed into your target's body increasing the efficiency of heals received by (Buff0-0)% for (Buff0-Time) seconds. This restores 1 point of Nature's Power.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578381,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503816,504132]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/578381.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-12","classId":"rom-druid","group":"primary","unlockLevel":28,"sourceSkillId":493530,"name":"Concentration Prayer","description":"Sends a prayer to Mother Nature, beseeching her to increase all of your party members' [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578358,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503799,507209],"components":[{"id":503799,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":600,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":5,"value":10}],"abilitySkillLevelArg":10,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495932,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507209,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":600,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":164,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":493530,"name":"Concentration Prayer","description":"Sends a prayer to Mother Nature, beseeching her to increase all of your party members' [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578358,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503799,507209]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/578358.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-13","classId":"rom-druid","group":"passive","unlockLevel":30,"sourceSkillId":493552,"name":"Pure Healing","description":"Permanently increases your heals by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578380,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503822],"components":[{"id":503822,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":5}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":493552,"name":"Pure Healing","description":"Permanently increases your heals by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578380,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503822]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/578380.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-14","classId":"rom-druid","group":"primary","unlockLevel":32,"sourceSkillId":493544,"name":"Rock Protection","description":"Makes your body as hard as rock reducing damage taken by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578372,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503813,509797],"components":[{"id":503813,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":178,"abilityModifiers":[{"type":143,"value":45}],"abilitySkillLevelArg":2.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509797,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268959969,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":45}],"abilitySkillLevelArg":2.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":493544,"name":"Rock Protection","description":"Makes your body as hard as rock reducing damage taken by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578372,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503813,509797]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/578372.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-15","classId":"rom-druid","group":"primary","unlockLevel":34,"sourceSkillId":493536,"name":"Spirit Guidance","description":"Consumes 1 point of Nature's Power, channeling it into your target, making it friendly for (Buff0-Time) seconds. (Cannot be used on players. If your reputation has a negative value, the target will still regard you as an enemy.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578364,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503805,503833,504109],"components":[{"id":503805,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":16777410,"specialActionFlags":0,"assistType":101,"effectFlagWords":[0,1024],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493557,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503833,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504109,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":493536,"name":"Spirit Guidance","description":"Consumes 1 point of Nature's Power, channeling it into your target, making it friendly for (Buff0-Time) seconds. (Cannot be used on players. If your reputation has a negative value, the target will still regard you as an enemy.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578364,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503805,503833,504109]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/578364.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-16","classId":"rom-druid","group":"primary","unlockLevel":36,"sourceSkillId":493532,"name":"Body Vitalization","description":"Increase target's [SC_SKILLTIPS_DPS] by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578360,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503801],"components":[{"id":503801,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":9,"abilityModifiers":[{"type":23,"value":-2}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":493532,"name":"Body Vitalization","description":"Increase target's [SC_SKILLTIPS_DPS] by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578360,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503801]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/578360.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-17","classId":"rom-druid","group":"primary","unlockLevel":38,"sourceSkillId":493529,"name":"Mother Earth's Fountain","description":"Restores (DMG1) HP to your friendly targets within a range of 100 around the target of your spell.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance the power and restore (DMG0) HP.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":578357,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503798,503827,503828,620441],"components":[{"id":503798,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503828,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":56,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":56,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":493529,"name":"Mother Earth's Fountain","description":"Restores (DMG1) HP to your friendly targets within a range of 100 around the target of your spell.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance the power and restore (DMG0) HP.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":578357,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503798,503827,503828,620441]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/578357.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-18","classId":"rom-druid","group":"passive","unlockLevel":40,"sourceSkillId":493555,"name":"Power of Protection","description":"Additionally increases the damage reduction of Mother Earth's Protection.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578383,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":493555,"name":"Power of Protection","description":"Additionally increases the damage reduction of Mother Earth's Protection.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578383,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"sourceFamily":"primary:18","icon":"/assets/ui/rom-spells/578383.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-19","classId":"rom-druid","group":"primary","unlockLevel":42,"sourceSkillId":493545,"name":"Withering Seed","description":"Plants a seed into your target's body reducing its [SC_SKILLTIPS_DEF] by (Buff1-0)% for (Buff1-Time) seconds, and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and reduce target's [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds. Also, 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578373,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503814,503827,620457,504130],"components":[{"id":503814,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620457,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-2}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504130,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":42,"prerequisites":[],"sourceSkillId":493545,"name":"Withering Seed","description":"Plants a seed into your target's body reducing its [SC_SKILLTIPS_DEF] by (Buff1-0)% for (Buff1-Time) seconds, and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and reduce target's [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds. Also, 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578373,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503814,503827,620457,504130]}}],"sourceFamily":"primary:19","icon":"/assets/ui/rom-spells/578373.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-20","classId":"rom-druid","group":"primary","unlockLevel":44,"sourceSkillId":493549,"name":"Mother Nature's Wrath","description":"Inflicts (DMG1) [SC_SKILLTIPS_EARTH] on your target, and (Buff4-Dot) [SC_SKILLTIPS_EARTH] every 2 seconds for (Buff4-Time) seconds. Also restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_EARTH] and (Buff4-Dot) [SC_SKILLTIPS_EARTH] every 2 seconds for (Buff4-Time) seconds. Also 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":65,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":578376,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620214,503827,620450,503819,503999],"components":[{"id":620214,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":22,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620450,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-48,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-48,"damagePowerSkillLevelArg":22,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503819,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":23},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503999,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":44,"prerequisites":[],"sourceSkillId":493549,"name":"Mother Nature's Wrath","description":"Inflicts (DMG1) [SC_SKILLTIPS_EARTH] on your target, and (Buff4-Dot) [SC_SKILLTIPS_EARTH] every 2 seconds for (Buff4-Time) seconds. Also restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_EARTH] and (Buff4-Dot) [SC_SKILLTIPS_EARTH] every 2 seconds for (Buff4-Time) seconds. Also 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":65,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":578376,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620214,503827,620450,503819,503999]}}],"sourceFamily":"primary:20","icon":"/assets/ui/rom-spells/578376.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-21","classId":"rom-druid","group":"primary","unlockLevel":46,"sourceSkillId":493542,"name":"Summon Sandstorm","description":"Summons a large amount of sand and stones causing (DMG1) [SC_SKILLTIPS_EARTH] to multiple targets in range. \nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and cause (DMG0) [SC_SKILLTIPS_EARTH] to all targets in range twice.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578370,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620439,503827,620459,620441],"components":[{"id":620439,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":28,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620459,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":28,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":46,"prerequisites":[],"sourceSkillId":493542,"name":"Summon Sandstorm","description":"Summons a large amount of sand and stones causing (DMG1) [SC_SKILLTIPS_EARTH] to multiple targets in range. \nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and cause (DMG0) [SC_SKILLTIPS_EARTH] to all targets in range twice.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578370,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620439,503827,620459,620441]}}],"sourceFamily":"primary:21","icon":"/assets/ui/rom-spells/578370.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-22","classId":"rom-druid","group":"primary","unlockLevel":22,"sourceSkillId":493559,"name":"Advanced Rebirth","description":"Through Nature's power and the consumption of an [203606] you can revive your target with 45% less death debt. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[504134],"components":[{"id":504134,"magicFunc":8,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":45},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":493559,"name":"Advanced Rebirth","description":"Through Nature's power and the consumption of an [203606] you can revive your target with 45% less death debt. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[504134]}}],"sourceFamily":"primary:22","icon":"/assets/ui/rom-spells/578365.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-23","classId":"rom-druid","group":"primary","unlockLevel":32,"sourceSkillId":493560,"name":"Supreme Rebirth","description":"Through Nature's power and the consumption of a [203605] you can revive your target with 75% less death debt. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[504135],"components":[{"id":504135,"magicFunc":8,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":75},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":493560,"name":"Supreme Rebirth","description":"Through Nature's power and the consumption of a [203605] you can revive your target with 75% less death debt. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[504135]}}],"sourceFamily":"primary:23","icon":"/assets/ui/rom-spells/578365.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-0","classId":"rom-druid","group":"general","unlockLevel":1,"sourceSkillId":493528,"name":"Recover","description":"Restores (DMG0) HP to your target and (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.4},"source":{"imageId":578356,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503796,503797],"components":[{"id":503796,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":40,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":40,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503797,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":14,"hateCost":0,"settingFlags":8299,"specialActionFlags":0,"assistType":131,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493528,"name":"Recover","description":"Restores (DMG0) HP to your target and (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.4},"source":{"imageId":578356,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503796,503797]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/578356.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-1","classId":"rom-druid","group":"general","unlockLevel":4,"sourceSkillId":493535,"name":"Antidote","description":"Cleanses your target from poison.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578363,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503804],"components":[{"id":503804,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":493535,"name":"Antidote","description":"Cleanses your target from poison.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578363,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503804]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/578363.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-2","classId":"rom-druid","group":"general","unlockLevel":8,"sourceSkillId":493531,"name":"Savage Blessing","description":"Increases target's [SC_SKILLTIPS_HIT] and [SC_SKILLTIPS_MAG_HIT] by (Buff0-0)% + (Buff4-0) for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578359,"sourceEffectType":0,"sourceTarget":7,"componentIds":[620454,620455],"components":[{"id":620454,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":1},{"type":199,"value":1}],"abilitySkillLevelArg":9,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493561,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620455,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":16,"value":20},{"type":195,"value":20}],"abilitySkillLevelArg":70,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":493531,"name":"Savage Blessing","description":"Increases target's [SC_SKILLTIPS_HIT] and [SC_SKILLTIPS_MAG_HIT] by (Buff0-0)% + (Buff4-0) for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578359,"sourceEffectType":0,"sourceTarget":7,"componentIds":[620454,620455]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/578359.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-3","classId":"rom-druid","group":"general","unlockLevel":12,"sourceSkillId":493540,"name":"Earth Pulse","description":"The power of Mother Earth strikes the targets in a straight line before you causing (DMG0) Earth damage.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":578368,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620212],"components":[{"id":620212,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":25,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":493540,"name":"Earth Pulse","description":"The power of Mother Earth strikes the targets in a straight line before you causing (DMG0) Earth damage.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":578368,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620212]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/578368.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-4","classId":"rom-druid","group":"passive","unlockLevel":16,"sourceSkillId":493551,"name":"Knowledge of Nature","description":"Increases [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff4-0)% + (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578379,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503821,507208],"components":[{"id":503821,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":5,"value":10}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507208,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":164,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":493551,"name":"Knowledge of Nature","description":"Increases [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff4-0)% + (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578379,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503821,507208]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/578379.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-5","classId":"rom-druid","group":"general","unlockLevel":20,"sourceSkillId":493533,"name":"Mother Earth's Protection","description":"Uses the power of Mother Earth to build a protective shield around your target reducing its suffered magical and physical damage by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578361,"sourceEffectType":0,"sourceTarget":1,"componentIds":[503802,509795],"components":[{"id":503802,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":178,"abilityModifiers":[{"type":143,"value":20}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509795,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268959969,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":20},{"type":143,"value":0}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":493533,"name":"Mother Earth's Protection","description":"Uses the power of Mother Earth to build a protective shield around your target reducing its suffered magical and physical damage by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578361,"sourceEffectType":0,"sourceTarget":1,"componentIds":[503802,509795]}},{"rank":2,"level":40,"prerequisites":[493555],"sourceSkillId":493558,"name":"Mother Earth's Protection","description":"Uses the power of Mother Earth to build a protective shield around your target reducing its suffered magical and physical damage by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578361,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503826,509796],"components":[{"id":503826,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":178,"abilityModifiers":[{"type":143,"value":40}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509796,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268959969,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":40}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/578361.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-0","classId":"rom-warlock","group":"primary","unlockLevel":6,"sourceSkillId":497960,"name":"Perception Extraction","description":"Steals the target's senses and inflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] every second. It also restores (Buff8-Dot) focus every 2 seconds. The effect lasts for (Buff0-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800083,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621701,621446,621655],"components":[{"id":621701,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":26,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":1,"type":0,"base":-6,"skillLevelArg":80},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621446,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":223,"value":9},{"type":226,"value":9}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621655,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":26,"hateCost":0,"settingFlags":75,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":3,"dotBase":2,"dot":{"timeSeconds":2,"type":3,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":497960,"name":"Perception Extraction","description":"Steals the target's senses and inflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] every second. It also restores (Buff8-Dot) focus every 2 seconds. The effect lasts for (Buff0-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800083,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621701,621446,621655]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/800083.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-1","classId":"rom-warlock","group":"primary","unlockLevel":6,"sourceSkillId":497955,"name":"Willpower Blade","description":"|cff9D53E3 Willpower becomes a keen blade, allowing powerful psychic attack skills to be used. |r\nWhen a Warlock has an energy influx of 6 psi, they can choose to release the power of [497955]. Specific skills can only be used in this state, which lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":18000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800374,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501571,621404],"components":[{"id":501571,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498680,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621404,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524355,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":163,"value":2}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":497955,"name":"Willpower Blade","description":"|cff9D53E3 Willpower becomes a keen blade, allowing powerful psychic attack skills to be used. |r\nWhen a Warlock has an energy influx of 6 psi, they can choose to release the power of [497955]. Specific skills can only be used in this state, which lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":18000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800374,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501571,621404]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/800374.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-2","classId":"rom-warlock","group":"primary","unlockLevel":6,"sourceSkillId":497956,"name":"Willpower Construct","description":"|cff6E6DE7 Thoughts are constructed to form solid willpower, allowing powerful psychic support skills to be used. |r\nWhen a Warlock has an energy influx of 6 psi, they can choose to release the power of [497956]. Specific skills can only be used in this state. Lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":18000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800375,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501572,621404],"components":[{"id":501572,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498680,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621404,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524355,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":163,"value":2}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":497956,"name":"Willpower Construct","description":"|cff6E6DE7 Thoughts are constructed to form solid willpower, allowing powerful psychic support skills to be used. |r\nWhen a Warlock has an energy influx of 6 psi, they can choose to release the power of [497956]. Specific skills can only be used in this state. Lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":18000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800375,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501572,621404]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/800375.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-3","classId":"rom-warlock","group":"primary","unlockLevel":10,"sourceSkillId":497962,"name":"Severed Consciousness","description":"[SC_SKILLTIPS_P1]\nSolid willpower is transformed into a keen weapon to continuously attack the target 4 times. Inflicts (DMG0) + (FixDMG-621186) x INT [SC_SKILLTIPS_DARK].\n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":800085,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621186],"components":[{"id":621186,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":497962,"name":"Severed Consciousness","description":"[SC_SKILLTIPS_P1]\nSolid willpower is transformed into a keen weapon to continuously attack the target 4 times. Inflicts (DMG0) + (FixDMG-621186) x INT [SC_SKILLTIPS_DARK].\n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":800085,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621186]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/800085.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-4","classId":"rom-warlock","group":"primary","unlockLevel":10,"sourceSkillId":497963,"name":"Locked Heart","description":"[SC_SKILLTIPS_P2]\nReduces the caster's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% for (Buff0-Time) seconds. Also increases [SC_SKILLTIPS_MOVE] by (Buff0-2)%, but no other skills can be used while in effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800086,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621187],"components":[{"id":621187,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[3,0],"abilityModifiers":[{"type":206,"value":-80},{"type":207,"value":-80},{"type":24,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":497963,"name":"Locked Heart","description":"[SC_SKILLTIPS_P2]\nReduces the caster's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% for (Buff0-Time) seconds. Also increases [SC_SKILLTIPS_MOVE] by (Buff0-2)%, but no other skills can be used while in effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800086,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621187]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/800086.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-5","classId":"rom-warlock","group":"primary","unlockLevel":14,"sourceSkillId":497965,"name":"Shield of Solid Mind","description":"Brainpower turns into a protective shield. Repels an amount of damage equal to (Buff0-Shield)% of the caster's healing bonus + 80 points for (Buff0-Time) seconds. The caster will receive the effect of [621190] and [497965] can't be cast on the caster while in effect.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":800088,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621189,621190],"components":[{"id":621189,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":179,"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":4,"effect":0,"point":8,"skillLevelArg":100}},{"id":621190,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":497965,"name":"Shield of Solid Mind","description":"Brainpower turns into a protective shield. Repels an amount of damage equal to (Buff0-Shield)% of the caster's healing bonus + 80 points for (Buff0-Time) seconds. The caster will receive the effect of [621190] and [497965] can't be cast on the caster while in effect.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":800088,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621189,621190]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/800088.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-6","classId":"rom-warlock","group":"primary","unlockLevel":20,"sourceSkillId":498542,"name":"Mind Barrier","description":"[SC_SKILLTIPS_P2]\nTransforms brainpower into a protective shield around a specified area. Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of multiple friendly targets in the area by (Buff0-621196)%. Also increases [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff2-621196)%. The effect lasts (Buff-Time-621682) seconds.","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573079,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621195,621196,621682],"components":[{"id":621195,"magicFunc":6,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621196,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":5},{"type":143,"value":5},{"type":144,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621682,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":9,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":498542,"name":"Mind Barrier","description":"[SC_SKILLTIPS_P2]\nTransforms brainpower into a protective shield around a specified area. Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of multiple friendly targets in the area by (Buff0-621196)%. Also increases [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff2-621196)%. The effect lasts (Buff-Time-621682) seconds.","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573079,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621195,621196,621682]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/573079.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-7","classId":"rom-warlock","group":"primary","unlockLevel":20,"sourceSkillId":498544,"name":"Ruthless Judgment","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] to the enemy. \nIf the target's HP falls below 20%, you will receive the [621199] state, increasing [SC_SKILLTIPS_MDMG] by (Buff0-621199)% for (Buff-Time-621199) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800093,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621197,621198,621199],"components":[{"id":621197,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-120,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-120,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621198,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621199,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":498544,"name":"Ruthless Judgment","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] to the enemy. \nIf the target's HP falls below 20%, you will receive the [621199] state, increasing [SC_SKILLTIPS_MDMG] by (Buff0-621199)% for (Buff-Time-621199) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800093,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621197,621198,621199]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/800093.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-8","classId":"rom-warlock","group":"primary","unlockLevel":22,"sourceSkillId":498545,"name":"Heart Collection Strike","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] to the target and restores (DMG8) focus. If target's HP is greater than 70%, this skill's critical hit rate will be raised by 50%. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":8000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.81},"source":{"imageId":800094,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621200,621201,621446,621193],"components":[{"id":621200,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-81,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-81,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":50,"hateRate":1},"summonCreatureId":0},{"id":621201,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-81,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-81,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621446,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":223,"value":9},{"type":226,"value":9}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621193,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":50,"fixedValue":0,"attack":{"type":3,"calculationType":4,"damagePower":50,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":498545,"name":"Heart Collection Strike","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] to the target and restores (DMG8) focus. If target's HP is greater than 70%, this skill's critical hit rate will be raised by 50%. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":8000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.81},"source":{"imageId":800094,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621200,621201,621446,621193]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/800094.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-9","classId":"rom-warlock","group":"passive","unlockLevel":24,"sourceSkillId":498546,"name":"Ill Will","description":"Permanently increases dark attribute magic power by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800095,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621267],"components":[{"id":621267,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":50,"value":6}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":498546,"name":"Ill Will","description":"Permanently increases dark attribute magic power by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800095,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621267]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/800095.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-10","classId":"rom-warlock","group":"primary","unlockLevel":26,"sourceSkillId":498547,"name":"Beast's Roar","description":"Summons beasts of evil to surround the caster. Constantly Inflicts (DMG-621271) [SC_SKILLTIPS_DARK] to multiple nearby targets for (Buff0-Time) seconds. Also reduces target's [SC_SKILLTIPS_MOVE] by (Buff0-621269)%. Lasts (Buff-Time-621269) seconds. \n(If the target is a player, effect lasts for (Buff-Time-621543) seconds.) \n[SC_SKILLTIPS_03]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800096,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621268,621271,621269,621543],"components":[{"id":621268,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":-1879048121,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498548,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621271,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":35,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621269,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-20}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621543,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-20}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":498547,"name":"Beast's Roar","description":"Summons beasts of evil to surround the caster. Constantly Inflicts (DMG-621271) [SC_SKILLTIPS_DARK] to multiple nearby targets for (Buff0-Time) seconds. Also reduces target's [SC_SKILLTIPS_MOVE] by (Buff0-621269)%. Lasts (Buff-Time-621269) seconds. \n(If the target is a player, effect lasts for (Buff-Time-621543) seconds.) \n[SC_SKILLTIPS_03]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800096,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621268,621271,621269,621543]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/800096.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-11","classId":"rom-warlock","group":"primary","unlockLevel":28,"sourceSkillId":498549,"name":"Defense Net","description":"Reduces target's [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% for (Buff0-Time) seconds. Also provides immunity to the effects of Helpless, Stun, Root and Slow. \n(Target must be affected by Movement Impairing Effect or Stun for removal to work.) \n[SC_SKILLTIPS_FEAR]\n[SC_SKILLTIPS_LEVEL20]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800097,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621270],"components":[{"id":621270,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":50}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":498549,"name":"Defense Net","description":"Reduces target's [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% for (Buff0-Time) seconds. Also provides immunity to the effects of Helpless, Stun, Root and Slow. \n(Target must be affected by Movement Impairing Effect or Stun for removal to work.) \n[SC_SKILLTIPS_FEAR]\n[SC_SKILLTIPS_LEVEL20]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800097,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621270]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/800097.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-12","classId":"rom-warlock","group":"primary","unlockLevel":30,"sourceSkillId":498550,"name":"Soul Trauma","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] on the enemy. If target is in a [501577] state, the target will be stunned for (Buff8-Time) seconds. \n(If the target is a player, effect lasts for (Buff4-Time) seconds.) \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":800098,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621272,621274,501577,621273],"components":[{"id":621272,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":25,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621274,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621273,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":498550,"name":"Soul Trauma","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] on the enemy. If target is in a [501577] state, the target will be stunned for (Buff8-Time) seconds. \n(If the target is a player, effect lasts for (Buff4-Time) seconds.) \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":800098,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621272,621274,501577,621273]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/800098.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-13","classId":"rom-warlock","group":"primary","unlockLevel":30,"sourceSkillId":498551,"name":"Otherworldly Whisper","description":"[SC_SKILLTIPS_P2]\nWhispers a chant 5 times to give all nearby party members an [498551] increasing [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by 2% for (Buff0-Time) seconds. \nAlso reduces the caster's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff4-0)%.\n[SC_SKILLTIPS_LEVEL20]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800099,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621275,621276],"components":[{"id":621275,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":2},{"type":171,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621276,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":50},{"type":143,"value":50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":498551,"name":"Otherworldly Whisper","description":"[SC_SKILLTIPS_P2]\nWhispers a chant 5 times to give all nearby party members an [498551] increasing [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by 2% for (Buff0-Time) seconds. \nAlso reduces the caster's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff4-0)%.\n[SC_SKILLTIPS_LEVEL20]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800099,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621275,621276]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/800099.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-14","classId":"rom-warlock","group":"primary","unlockLevel":30,"sourceSkillId":498552,"name":"Knowledge Acquisition","description":"[SC_SKILLTIPS_P1]\nRecovers (Buff0-Dot) Focus every second for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800100,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621277],"components":[{"id":621277,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":75,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":1,"dotType":3,"dotBase":2,"dot":{"timeSeconds":1,"type":3,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":498552,"name":"Knowledge Acquisition","description":"[SC_SKILLTIPS_P1]\nRecovers (Buff0-Dot) Focus every second for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800100,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621277]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/800100.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-15","classId":"rom-warlock","group":"primary","unlockLevel":32,"sourceSkillId":498553,"name":"Puzzlement","description":"Confuses the target's awareness to deal heavy damage. Inflicts (DMG0) [SC_SKILLTIPS_DARK] on target. \n[SC_SKILLTIPS_9_2S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":25000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800101,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621278],"components":[{"id":621278,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":45,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":498553,"name":"Puzzlement","description":"Confuses the target's awareness to deal heavy damage. Inflicts (DMG0) [SC_SKILLTIPS_DARK] on target. \n[SC_SKILLTIPS_9_2S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":25000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800101,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621278]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/800101.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-16","classId":"rom-warlock","group":"primary","unlockLevel":34,"sourceSkillId":498554,"name":"Calm Paradox","description":"Activates party members' latent potential for defense that is buried deep within. Increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-2)%. Also reduces [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. Lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800102,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621279],"components":[{"id":621279,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-5},{"type":171,"value":-5},{"type":135,"value":5},{"type":170,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":498554,"name":"Calm Paradox","description":"Activates party members' latent potential for defense that is buried deep within. Increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-2)%. Also reduces [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. Lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800102,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621279]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/800102.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-17","classId":"rom-warlock","group":"primary","unlockLevel":36,"sourceSkillId":498555,"name":"Surge of Awareness","description":"Activates the latent attack potential of nearby party members. Increases [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. Also reduces [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-2)%. Lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800108,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621280],"components":[{"id":621280,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5},{"type":171,"value":5},{"type":135,"value":-5},{"type":170,"value":-5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":498555,"name":"Surge of Awareness","description":"Activates the latent attack potential of nearby party members. Increases [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. Also reduces [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-2)%. Lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800108,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621280]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/800108.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-18","classId":"rom-warlock","group":"passive","unlockLevel":36,"sourceSkillId":498556,"name":"Opportune Strike","description":"If target is in a [501577] state, damage inflicted by [498545] or [498553] will be increased by (Buff0-621281)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800109,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501577,621281],"components":[{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621281,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32769,"specialActionFlags":0,"assistType":-1,"clearFlags":12288,"abilityModifiers":[{"type":44,"value":1}],"abilitySkillLevelArg":85,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":498556,"name":"Opportune Strike","description":"If target is in a [501577] state, damage inflicted by [498545] or [498553] will be increased by (Buff0-621281)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800109,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501577,621281]}}],"sourceFamily":"primary:18","icon":"/assets/ui/rom-spells/800109.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-19","classId":"rom-warlock","group":"primary","unlockLevel":38,"sourceSkillId":498558,"name":"Saces' Embrace","description":"Summons the psychic powers of Saces in a designated area. Inflicts (DMG0) [SC_SKILLTIPS_DARK] on multiple targets within range. Also allows friendly targets in range to resist an amount of damage equal to (Buff4-Shield)% of the caster's healing bonus + 80 points for (Buff4-Time) seconds.","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"focus","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":800110,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621284,621285],"components":[{"id":621284,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":25,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621285,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":179,"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":4,"effect":0,"point":4,"skillLevelArg":100}}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":498558,"name":"Saces' Embrace","description":"Summons the psychic powers of Saces in a designated area. Inflicts (DMG0) [SC_SKILLTIPS_DARK] on multiple targets within range. Also allows friendly targets in range to resist an amount of damage equal to (Buff4-Shield)% of the caster's healing bonus + 80 points for (Buff4-Time) seconds.","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"focus","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":800110,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621284,621285]}}],"sourceFamily":"primary:19","icon":"/assets/ui/rom-spells/800110.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-20","classId":"rom-warlock","group":"primary","unlockLevel":40,"sourceSkillId":498560,"name":"Life Weave","description":"[SC_SKILLTIPS_P2]\nResurrects a friendly target. Can be used during battle.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":800111,"sourceEffectType":0,"sourceTarget":15,"componentIds":[621282],"components":[{"id":621282,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":498560,"name":"Life Weave","description":"[SC_SKILLTIPS_P2]\nResurrects a friendly target. Can be used during battle.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":800111,"sourceEffectType":0,"sourceTarget":15,"componentIds":[621282]}}],"sourceFamily":"primary:20","icon":"/assets/ui/rom-spells/800111.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-61","classId":"rom-warlock","group":"primary","unlockLevel":18,"sourceSkillId":498914,"name":"Sublimation Weave Curse","description":"Weaves psychic energy around all party members and raises all attributes by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800090,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621736],"components":[{"id":621736,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":166,"value":2}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":498914,"name":"Sublimation Weave Curse","description":"Weaves psychic energy around all party members and raises all attributes by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800090,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621736]}}],"sourceFamily":"primary:61","icon":"/assets/ui/rom-spells/800090.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-62","classId":"rom-warlock","group":"primary","unlockLevel":2,"sourceSkillId":498935,"name":"Perplexed","description":"Target stands at original location at wit's end for (Buff0-Time) seconds. \n(For players this effect lasts for (Buff1-Time) seconds.)\n(This effect is broken when damage is received.) \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":2000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800081,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621184,622192],"components":[{"id":621184,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"clearFlags":2,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622192,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"clearFlags":2,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":498935,"name":"Perplexed","description":"Target stands at original location at wit's end for (Buff0-Time) seconds. \n(For players this effect lasts for (Buff1-Time) seconds.)\n(This effect is broken when damage is received.) \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":2000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800081,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621184,622192]}}],"sourceFamily":"primary:62","icon":"/assets/ui/rom-spells/800081.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-0","classId":"rom-warlock","group":"general","unlockLevel":1,"sourceSkillId":497957,"name":"Psychic Arrows","description":"Inflicts (DMG0) points of [SC_SKILLTIPS_DARK] on the enemy. \n[SC_SKILLTIPS_9_1S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":800079,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501573,621434],"components":[{"id":501573,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":25,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621434,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-0.4,"attack":{"type":0,"calculationType":4,"damagePower":0,"damagePowerSkillLevelArg":0,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":497957,"name":"Psychic Arrows","description":"Inflicts (DMG0) points of [SC_SKILLTIPS_DARK] on the enemy. \n[SC_SKILLTIPS_9_1S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":800079,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501573,621434]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/800079.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-1","classId":"rom-warlock","group":"general","unlockLevel":1,"sourceSkillId":497959,"name":"Weakening Weave Curse","description":"Inflicts (DMG0) dark damage to up to 3 targets and causes them to be [501577] for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":4000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.85},"source":{"imageId":800082,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501576,501577,621434],"components":[{"id":501576,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-85,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-85,"damagePowerSkillLevelArg":35,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621434,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-0.4,"attack":{"type":0,"calculationType":4,"damagePower":0,"damagePowerSkillLevelArg":0,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":497959,"name":"Weakening Weave Curse","description":"Inflicts (DMG0) dark damage to up to 3 targets and causes them to be [501577] for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":4000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.85},"source":{"imageId":800082,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501576,501577,621434]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/800082.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-2","classId":"rom-warlock","group":"general","unlockLevel":4,"sourceSkillId":497958,"name":"Warp Charge","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] on the enemy. Also increases [SC_SKILLTIPS_DPS] by (Buff4-0)% and [SC_SKILLTIPS_CAST] by (Buff4-1)%. Lasts for (Buff4-Time) seconds. \nIf target is in a [501577] state, damage inflicted is increased by (Buff0-501588)%. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800080,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501574,501575,501577,501588],"components":[{"id":501574,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":35,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501575,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-4},{"type":51,"value":-2}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501588,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":12288,"abilityModifiers":[{"type":192,"value":25}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":497958,"name":"Warp Charge","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] on the enemy. Also increases [SC_SKILLTIPS_DPS] by (Buff4-0)% and [SC_SKILLTIPS_CAST] by (Buff4-1)%. Lasts for (Buff4-Time) seconds. \nIf target is in a [501577] state, damage inflicted is increased by (Buff0-501588)%. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800080,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501574,501575,501577,501588]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/800080.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-3","classId":"rom-warlock","group":"passive","unlockLevel":8,"sourceSkillId":497961,"name":"Pure Soul","description":"Increases [SC_SKILLTIPS_INT] by (Current [SC_SKILLTIPS_INT] + (Buff0-0)) x ((Buff0-1)%) + (Buff0-0) points.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800084,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621185],"components":[{"id":621185,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":4,"value":11},{"type":163,"value":1}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":497961,"name":"Pure Soul","description":"Increases [SC_SKILLTIPS_INT] by (Current [SC_SKILLTIPS_INT] + (Buff0-0)) x ((Buff0-1)%) + (Buff0-0) points.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800084,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621185]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/800084.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-4","classId":"rom-warlock","group":"general","unlockLevel":12,"sourceSkillId":497964,"name":"Soul Pain","description":"Inflicts torture upon the target's soul, dealing (Buff0-Dot) of [SC_SKILLTIPS_DARK] every second for (Buff0-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800087,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621188,621446],"components":[{"id":621188,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":24,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":-7,"dot":{"timeSeconds":1,"type":0,"base":-7,"skillLevelArg":80},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621446,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":223,"value":9},{"type":226,"value":9}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":497964,"name":"Soul Pain","description":"Inflicts torture upon the target's soul, dealing (Buff0-Dot) of [SC_SKILLTIPS_DARK] every second for (Buff0-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800087,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621188,621446]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/800087.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-5","classId":"rom-warlock","group":"general","unlockLevel":16,"sourceSkillId":497966,"name":"Surge of Malice","description":"Unleashes malice on the target. Inflicts (DMG0) of [SC_SKILLTIPS_DARK] on a maximum of 3 targets. \nIf target is in a [501577] state, it also reduces [SC_SKILLTIPS_MOVE] by (Buff4-0)%. Lasts for (Buff4-Time) seconds. \n(If the target is a player, this effect lasts for (Buff5-Time) seconds.) \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800089,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621191,621192,501577,621291],"components":[{"id":621191,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":45,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621192,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621291,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":497966,"name":"Surge of Malice","description":"Unleashes malice on the target. Inflicts (DMG0) of [SC_SKILLTIPS_DARK] on a maximum of 3 targets. \nIf target is in a [501577] state, it also reduces [SC_SKILLTIPS_MOVE] by (Buff4-0)%. Lasts for (Buff4-Time) seconds. \n(If the target is a player, this effect lasts for (Buff5-Time) seconds.) \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800089,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621191,621192,501577,621291]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/800089.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-6","classId":"rom-warlock","group":"general","unlockLevel":20,"sourceSkillId":498541,"name":"Saces' Scorn","description":"Saces' thin smile strikes fear into the target's heart. Lasts for (Buff0-Time) seconds. \n(If the target is a player, effect lasts for (Buff1-Time) seconds.) \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800091,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621194,621292],"components":[{"id":621194,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":17,"effectFlagWords":[131091,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621292,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":17,"effectFlagWords":[131091,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":498541,"name":"Saces' Scorn","description":"Saces' thin smile strikes fear into the target's heart. Lasts for (Buff0-Time) seconds. \n(If the target is a player, effect lasts for (Buff1-Time) seconds.) \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800091,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621194,621292]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/800091.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-0","classId":"rom-champion","group":"primary","unlockLevel":2,"sourceSkillId":498523,"name":"Forge","description":"Increases caster's [SC_SKILLTIPS_01] by (Buff0-621168)% when normal attacks hit for a (Buff0-Time) second period. Can be stacked a maximum of 5 times and increases Rage by (Buff-Dot-621169).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589473,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621167,621168,621169],"components":[{"id":621167,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"onAttackTrigger":{"rate":100,"rank":0,"id":498524},"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":850077,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621168,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":134,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621169,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":73,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":10,"dot":{"timeSeconds":1,"type":2,"base":10,"skillLevelArg":5},"attackType":2,"damagePower":3,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":498523,"name":"Forge","description":"Increases caster's [SC_SKILLTIPS_01] by (Buff0-621168)% when normal attacks hit for a (Buff0-Time) second period. Can be stacked a maximum of 5 times and increases Rage by (Buff-Dot-621169).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589473,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621167,621168,621169]}},{"rank":2,"level":22,"prerequisites":[498535],"sourceSkillId":498604,"name":"Forge","description":"Normal attack hits increase caster's [SC_SKILLTIPS_01] by (Buff0-621168)% for (Buff0-Time) seconds. Can be stacked 5 times. Also increases rage by (Buff-Dot-621169) points and has a chance of triggering the effect [621252]. The effect lasts for (Buff-Time-621252) seconds.\n[621252]: Increases the damage inflicted by [498529] by (Buff0-621253)%. In addition the next Curse will be transformed into an instant spell.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589473,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621251,621168,621169,621252,621253],"components":[{"id":621251,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"onAttackTrigger":{"rate":100,"rank":0,"id":498590},"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":850077,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621168,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":134,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621169,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":73,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":10,"dot":{"timeSeconds":1,"type":2,"base":10,"skillLevelArg":5},"attackType":2,"damagePower":3,"fixedValue":0,"summonCreatureId":0},{"id":621252,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,524288],"clearFlags":1056,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621253,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":20},{"type":205,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/589473.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-1","classId":"rom-champion","group":"primary","unlockLevel":4,"sourceSkillId":498564,"name":"Rune Draw","description":"Uses rune power to drag the target to the front and interrupts its spell casting. Also forces it to concentrate on you and you become the one with the most aggro. It also increases your aggro by (Buff0-622322)%.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":40000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589474,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621215,621223,621224,622322],"components":[{"id":621215,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621223,"magicFunc":7,"magicType":5,"effectType":0,"effectTime":5,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621224,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622322,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":498564,"name":"Rune Draw","description":"Uses rune power to drag the target to the front and interrupts its spell casting. Also forces it to concentrate on you and you become the one with the most aggro. It also increases your aggro by (Buff0-622322)%.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":40000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589474,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621215,621223,621224,622322]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/589474.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-2","classId":"rom-champion","group":"primary","unlockLevel":10,"sourceSkillId":498529,"name":"Rune Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on target. When it hits, it will restore (Buff4-Dot) rage. \nIf used while in the [621218] state, the amount of aggro caused by this skill will be increased. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":6000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589478,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621176,621218,621175,622327],"components":[{"id":621176,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":10},"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621175,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":622327,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":0},"attackType":2,"damagePower":5,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":498529,"name":"Rune Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on target. When it hits, it will restore (Buff4-Dot) rage. \nIf used while in the [621218] state, the amount of aggro caused by this skill will be increased. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":6000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589478,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621176,621218,621175,622327]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/589478.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-3","classId":"rom-champion","group":"primary","unlockLevel":14,"sourceSkillId":498531,"name":"Fearless Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target and adds (Buff4-Dot) rage. When target's HP is less than 30%, this skill's damage is increased by (Buff0-621179)%. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589480,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621178,621183,621179],"components":[{"id":621178,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621183,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":3,"dot":{"timeSeconds":1,"type":2,"base":3,"skillLevelArg":5},"attackType":2,"damagePower":3,"fixedValue":0,"summonCreatureId":0},{"id":621179,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":1,"abilityModifiers":[{"type":173,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":498531,"name":"Fearless Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target and adds (Buff4-Dot) rage. When target's HP is less than 30%, this skill's damage is increased by (Buff0-621179)%. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589480,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621178,621183,621179]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/589480.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-5","classId":"rom-champion","group":"passive","unlockLevel":18,"sourceSkillId":498563,"name":"Runecraft - Fortify","description":"While in a [621218] state, increases [SC_SKILLTIPS_DEF] by (Buff0-621222)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589483,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621218,621222],"components":[{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621222,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":50331649,"specialActionFlags":0,"assistType":-1,"clearFlags":32,"abilityModifiers":[{"type":135,"value":9}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":498563,"name":"Runecraft - Fortify","description":"While in a [621218] state, increases [SC_SKILLTIPS_DEF] by (Buff0-621222)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589483,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621218,621222]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/589483.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-6","classId":"rom-champion","group":"primary","unlockLevel":18,"sourceSkillId":498533,"name":"Rune Energy Influx","description":"Converts rage to life. Restores (DMG0) HP. \nIf used while in [621218], then the amount of aggro caused by attacks is increased by (Buff4-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589484,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621181,621182,621218],"components":[{"id":621181,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":2,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621182,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":15}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":5,"fixedValue":0,"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":498533,"name":"Rune Energy Influx","description":"Converts rage to life. Restores (DMG0) HP. \nIf used while in [621218], then the amount of aggro caused by attacks is increased by (Buff4-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589484,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621181,621182,621218]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/589484.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-7","classId":"rom-champion","group":"passive","unlockLevel":22,"sourceSkillId":498535,"name":"Chain Drive","description":"While Forge Effect is active, all hits landed by normal attacks have a chance to reset the cooldown time of [498529] and increase damage dealt. In addition the next Curse will be transformed into an instant spell.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589486,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":498535,"name":"Chain Drive","description":"While Forge Effect is active, all hits landed by normal attacks have a chance to reset the cooldown time of [498529] and increase damage dealt. In addition the next Curse will be transformed into an instant spell.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589486,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/589486.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-8","classId":"rom-champion","group":"primary","unlockLevel":24,"sourceSkillId":498536,"name":"Rune Growth","description":"When used without the [621218] state, [SC_SKILLTIPS_01] is increased by (Buff1-0)% for (Buff0-Time) seconds.\nWhen used while in a Shield Form state, causes a reduction of [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589487,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621208,621218,621209],"components":[{"id":621208,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":206,"value":-5},{"type":207,"value":-5}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621209,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":498536,"name":"Rune Growth","description":"When used without the [621218] state, [SC_SKILLTIPS_01] is increased by (Buff1-0)% for (Buff0-Time) seconds.\nWhen used while in a Shield Form state, causes a reduction of [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589487,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621208,621218,621209]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/589487.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-9","classId":"rom-champion","group":"primary","unlockLevel":26,"sourceSkillId":498538,"name":"Agitated Whirlpool","description":"[SC_SKILLTIPS_621218]\nForces multiple targets within a radius of 75 to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622323)%.\nWhen it hits, it will reduce [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff8-0)% for (Buff8-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589488,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621213,621212,621214,622323],"components":[{"id":621213,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621212,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621214,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":5,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":5},{"type":142,"value":5}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622323,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":1}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":498538,"name":"Agitated Whirlpool","description":"[SC_SKILLTIPS_621218]\nForces multiple targets within a radius of 75 to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622323)%.\nWhen it hits, it will reduce [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff8-0)% for (Buff8-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589488,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621213,621212,621214,622323]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/589488.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-10","classId":"rom-champion","group":"primary","unlockLevel":28,"sourceSkillId":498537,"name":"Vacuum Wave","description":"Silences multiple enemies within a radius of 75 for (Buff4-Time) seconds. \n(If the target is a player, state lasts (Buff5-Time) seconds.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589489,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621210,621211,621287],"components":[{"id":621210,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621211,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621287,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":498537,"name":"Vacuum Wave","description":"Silences multiple enemies within a radius of 75 for (Buff4-Time) seconds. \n(If the target is a player, state lasts (Buff5-Time) seconds.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589489,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621210,621211,621287]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/589489.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-11","classId":"rom-champion","group":"passive","unlockLevel":30,"sourceSkillId":498539,"name":"Last Line of Defense","description":"When used while in a [621218] state and current HP is less than 30%, it reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621230)% \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589490,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621218,621230],"components":[{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621230,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435523,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":2},{"type":143,"value":2}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":498539,"name":"Last Line of Defense","description":"When used while in a [621218] state and current HP is less than 30%, it reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621230)% \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589490,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621218,621230]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/589490.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-12","classId":"rom-champion","group":"primary","unlockLevel":32,"sourceSkillId":498566,"name":"Imprisonment Pulse","description":"Sets up an imprisonment field in a designated area, inflicting (DMG-621231) main hand weapon physical DPS on targets. Also reduces [SC_SKILLTIPS_MOVE] by (Buff0-621232)% for (Buff-Time-621232) seconds. \nReduces target's [SC_SKILLTIPS_MOVE] by a maximum of (Max-Buff0-621232)%. If the target is a player, this state lasts for (Buff-Time-621290) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589491,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621233,621231,621232,621290],"components":[{"id":621233,"magicFunc":6,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621231,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621232,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0},{"id":621290,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":498566,"name":"Imprisonment Pulse","description":"Sets up an imprisonment field in a designated area, inflicting (DMG-621231) main hand weapon physical DPS on targets. Also reduces [SC_SKILLTIPS_MOVE] by (Buff0-621232)% for (Buff-Time-621232) seconds. \nReduces target's [SC_SKILLTIPS_MOVE] by a maximum of (Max-Buff0-621232)%. If the target is a player, this state lasts for (Buff-Time-621290) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589491,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621233,621231,621232,621290]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/589491.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-13","classId":"rom-champion","group":"primary","unlockLevel":34,"sourceSkillId":498481,"name":"Kinetic Burn","description":"Heat is dispelled 30 times in an instant. Inflicts (DMG0) main hand weapon physical DPS to targets in range. Also inflicts (Buff4-Dot) [SC_SKILLTIPS_FLAME] damage every 2 seconds. Lasts for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589460,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621085,621254],"components":[{"id":621085,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.2,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.2,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621254,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-3,"dot":{"timeSeconds":2,"type":0,"base":-3,"skillLevelArg":45},"attackType":0,"damagePower":-1,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":498481,"name":"Kinetic Burn","description":"Heat is dispelled 30 times in an instant. Inflicts (DMG0) main hand weapon physical DPS to targets in range. Also inflicts (Buff4-Dot) [SC_SKILLTIPS_FLAME] damage every 2 seconds. Lasts for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589460,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621085,621254]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/589460.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-14","classId":"rom-champion","group":"primary","unlockLevel":36,"sourceSkillId":498568,"name":"Feedback Defense","description":"[SC_SKILLTIPS_621218]\nActivates a protective shield that lasts for (Buff0-Time) seconds. Raises [SC_SKILLTIPS_DEF] by (Buff0-0)% while in effect. Attacks received are reflected and cause (DMG-621235) main hand weapon physical DPS. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589492,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621234,621235],"components":[{"id":621234,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":498569,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0},{"id":621235,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":0}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.02,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.02,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":498568,"name":"Feedback Defense","description":"[SC_SKILLTIPS_621218]\nActivates a protective shield that lasts for (Buff0-Time) seconds. Raises [SC_SKILLTIPS_DEF] by (Buff0-0)% while in effect. Attacks received are reflected and cause (DMG-621235) main hand weapon physical DPS. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589492,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621234,621235]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/589492.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-15","classId":"rom-champion","group":"primary","unlockLevel":36,"sourceSkillId":498570,"name":"Overrule","description":"Provides immunity to the effects of Helpless, Stun, Root and Slow. Lasts (Buff0-Time) seconds. \n(Target must be affected by Movement Impairing Effect or Stun for removal to work.) \n[SC_SKILLTIPS_FEAR]\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589510,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621236],"components":[{"id":621236,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":498570,"name":"Overrule","description":"Provides immunity to the effects of Helpless, Stun, Root and Slow. Lasts (Buff0-Time) seconds. \n(Target must be affected by Movement Impairing Effect or Stun for removal to work.) \n[SC_SKILLTIPS_FEAR]\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589510,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621236]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/589510.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-16","classId":"rom-champion","group":"primary","unlockLevel":38,"sourceSkillId":498571,"name":"Remodeled Body","description":"[SC_SKILLTIPS_621218]\nCounteracts one fatal blow and restores all HP while in effect. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589493,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621237],"components":[{"id":621237,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[32768,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":498571,"name":"Remodeled Body","description":"[SC_SKILLTIPS_621218]\nCounteracts one fatal blow and restores all HP while in effect. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589493,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621237]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/589493.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-17","classId":"rom-champion","group":"primary","unlockLevel":40,"sourceSkillId":498572,"name":"Rune Overload","description":"Consumes (Buff0-Dot) points rage every second while in effect. Continuously inflicts (DMG-621243) main hand weapon physical DPS to multiple targets in the immediate vicinity. \n(This effect ceases when rage reaches 0.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589494,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621241,621243],"components":[{"id":621241,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":47,"specialActionFlags":0,"assistType":-1,"clearFlags":1152,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":498574,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":2,"dotBase":-15,"dot":{"timeSeconds":1,"type":2,"base":-15,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621243,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":498572,"name":"Rune Overload","description":"Consumes (Buff0-Dot) points rage every second while in effect. Continuously inflicts (DMG-621243) main hand weapon physical DPS to multiple targets in the immediate vicinity. \n(This effect ceases when rage reaches 0.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589494,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621241,621243]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/589494.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-58","classId":"rom-champion","group":"passive","unlockLevel":8,"sourceSkillId":498525,"name":"Finishing Hammer","description":"Increases damage of one-handed and two-handed hammers by (Buff0-0)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589477,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621161],"components":[{"id":621161,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":62,"value":5},{"type":66,"value":5},{"type":66,"value":0}],"abilitySkillLevelArg":28,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":498525,"name":"Finishing Hammer","description":"Increases damage of one-handed and two-handed hammers by (Buff0-0)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589477,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621161]}}],"sourceFamily":"primary:58","icon":"/assets/ui/rom-spells/589477.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-0","classId":"rom-champion","group":"general","unlockLevel":1,"sourceSkillId":498521,"name":"Heavy Bash","description":"Inflicts (DMG0) main hand weapon physical DPS on target. There is also a chance it will cause [621164] when it lands a hit. This reduces [SC_SKILLTIPS_01] and [SC_SKILLTIPS_DEF] by 2%. Lasts (Buff4-Time) seconds. Can be stacked max. 3 times. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589471,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621160,621164],"components":[{"id":621160,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.65,"damagePowerSkillLevelArg":5.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621164,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilityModifiers":[{"type":134,"value":-2},{"type":135,"value":-2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":498521,"name":"Heavy Bash","description":"Inflicts (DMG0) main hand weapon physical DPS on target. There is also a chance it will cause [621164] when it lands a hit. This reduces [SC_SKILLTIPS_01] and [SC_SKILLTIPS_DEF] by 2%. Lasts (Buff4-Time) seconds. Can be stacked max. 3 times. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589471,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621160,621164]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/589471.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-1","classId":"rom-champion","group":"general","unlockLevel":1,"sourceSkillId":498522,"name":"Electrocution","description":"Inflicts (DMG0) main hand weapon physical DPS on target. Also invokes a state of [621166] and interrupts target's spell casting. Lasts (Buff5-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589472,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621165,621396,621166],"components":[{"id":621165,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621396,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilityModifiers":[{"type":226,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621166,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":498522,"name":"Electrocution","description":"Inflicts (DMG0) main hand weapon physical DPS on target. Also invokes a state of [621166] and interrupts target's spell casting. Lasts (Buff5-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589472,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621165,621396,621166]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/589472.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-2","classId":"rom-champion","group":"passive","unlockLevel":4,"sourceSkillId":498527,"name":"Hammer Weapon Proficiency","description":"Hammer weapons can be equipped.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589475,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621173],"components":[{"id":621173,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":89,"value":1},{"type":93,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":498527,"name":"Hammer Weapon Proficiency","description":"Hammer weapons can be equipped.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589475,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621173]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/589475.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-3","classId":"rom-champion","group":"general","unlockLevel":6,"sourceSkillId":498526,"name":"Energy Influx Strike","description":"Adds a Charge Rune to your attacks. Inflicts (DMG0) main hand weapon DPS physical damage on targets. \nIf target is in an [621166] state, this attack lands a critical hit. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589476,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621163,621166,621396,621162],"components":[{"id":621163,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":7,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-12},{"type":135,"value":-12}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":100,"hateRate":1},"summonCreatureId":0},{"id":621166,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621396,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilityModifiers":[{"type":226,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621162,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":7,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-8},{"type":135,"value":-8}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":498526,"name":"Energy Influx Strike","description":"Adds a Charge Rune to your attacks. Inflicts (DMG0) main hand weapon DPS physical damage on targets. \nIf target is in an [621166] state, this attack lands a critical hit. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589476,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621163,621166,621396,621162]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/589476.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-5","classId":"rom-champion","group":"passive","unlockLevel":12,"sourceSkillId":498530,"name":"Runecraft - Diversion","description":"Increases [SC_SKILLTIPS_PARRY] by (Buff0-0) points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589479,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621177],"components":[{"id":621177,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":75}],"abilitySkillLevelArg":15,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":498530,"name":"Runecraft - Diversion","description":"Increases [SC_SKILLTIPS_PARRY] by (Buff0-0) points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589479,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621177]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/589479.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-6","classId":"rom-champion","group":"passive","unlockLevel":16,"sourceSkillId":498532,"name":"Runecraft - Solidify","description":"Increases your stamina. (Current stamina + (Buff0-0) x (Buff0-1)% + (Buff0-0)) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589481,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621180],"components":[{"id":621180,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":3,"value":11},{"type":162,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":498532,"name":"Runecraft - Solidify","description":"Increases your stamina. (Current stamina + (Buff0-0) x (Buff0-1)% + (Buff0-0)) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589481,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621180]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/589481.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-7","classId":"rom-champion","group":"general","unlockLevel":20,"sourceSkillId":498534,"name":"Shock Strike","description":"Inflicts (DMG0) main hand weapon physical DPS on multiple targets within a range of 100 in a fan-shaped area in front of you. Also Stuns targets for (Buff4-Time) seconds. \nIf used while in a [621218], then there is an extra increase of aggro caused by this skill.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589485,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621206,621218,621205,621207],"components":[{"id":621206,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":10},"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621205,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621207,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777299,0],"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":498534,"name":"Shock Strike","description":"Inflicts (DMG0) main hand weapon physical DPS on multiple targets within a range of 100 in a fan-shaped area in front of you. Also Stuns targets for (Buff4-Time) seconds. \nIf used while in a [621218], then there is an extra increase of aggro caused by this skill.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589485,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621206,621218,621205,621207]}}],"sourceFamily":"general:7","icon":"/assets/ui/rom-spells/589485.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-15","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":545920,"sourceSkillId":498528,"name":"Arc Strike","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If target is in the [621166] state, then caster will earn an extra (Buff-Dot-621250) rage. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":5,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589495,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621225,621166,621250],"components":[{"id":621225,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621166,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621250,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":25,"dot":{"timeSeconds":1,"type":2,"base":25,"skillLevelArg":0},"attackType":2,"damagePower":25,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":498528,"name":"Arc Strike","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If target is in the [621166] state, then caster will earn an extra (Buff-Dot-621250) rage. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":5,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589495,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621225,621166,621250]}}],"icon":"/assets/ui/rom-spells/589495.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-20","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":545921,"sourceSkillId":498580,"name":"Rune Aggregation","description":"Using Enrage allows you to increase rage accumulation speed.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589496,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":498580,"name":"Rune Aggregation","description":"Using Enrage allows you to increase rage accumulation speed.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589496,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/589496.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-25","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":545922,"sourceSkillId":498582,"name":"Power Slash","description":"Your slash causes the target to suffer the effects of [621166].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589497,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621166],"components":[{"id":621166,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":498582,"name":"Power Slash","description":"Your slash causes the target to suffer the effects of [621166].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589497,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621166]}}],"icon":"/assets/ui/rom-spells/589497.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-30","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":545923,"sourceSkillId":498584,"name":"Determination Rune","description":"Use the power of this rune to protect yourself. It counteracts an amount of damage equal to (Buff0-Shield)% of Maximum HP for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":589498,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621246],"components":[{"id":621246,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":490363,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":2,"skillLevelArg":28}}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":498584,"name":"Determination Rune","description":"Use the power of this rune to protect yourself. It counteracts an amount of damage equal to (Buff0-Shield)% of Maximum HP for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":589498,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621246]}}],"icon":"/assets/ui/rom-spells/589498.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-35","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":545924,"sourceSkillId":498585,"name":"Eye for an Eye","description":"Temporarily increases parry rate by (Buff0-0)%. Lasts for (Buff0-Time) seconds. \nWhile in effect, successful parries have a chance of resetting [498522] and [498526]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589499,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621247],"components":[{"id":621247,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":227,"value":5}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":498585,"name":"Eye for an Eye","description":"Temporarily increases parry rate by (Buff0-0)%. Lasts for (Buff0-Time) seconds. \nWhile in effect, successful parries have a chance of resetting [498522] and [498526]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589499,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621247]}}],"icon":"/assets/ui/rom-spells/589499.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-40","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":545925,"sourceSkillId":498586,"name":"Superior Suppression","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If your HP ratio is higher than the targets when you land a hit, this skill will also raise [SC_SKILLTIPS_CRI] by (Buff0-621255) points. Lasts for (Buff-Time-621255) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589500,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621248,621249,621255],"components":[{"id":621248,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621249,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621255,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493092,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":498586,"name":"Superior Suppression","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If your HP ratio is higher than the targets when you land a hit, this skill will also raise [SC_SKILLTIPS_CRI] by (Buff0-621255) points. Lasts for (Buff-Time-621255) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589500,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621248,621249,621255]}}],"icon":"/assets/ui/rom-spells/589500.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-45","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":545926,"sourceSkillId":498588,"name":"Runecraft - Charge","description":"There is a chance that [498572] will stun the enemy when it hits.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589508,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621256],"components":[{"id":621256,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":498588,"name":"Runecraft - Charge","description":"There is a chance that [498572] will stun the enemy when it hits.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589508,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621256]}}],"icon":"/assets/ui/rom-spells/589508.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-50","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":545927,"sourceSkillId":498589,"name":"Enhancement Shield","description":"Using the Determination Rune while in a [621218] state increases damage resistance and reduces received damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589509,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621258,621218],"components":[{"id":621258,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":498589,"name":"Enhancement Shield","description":"Using the Determination Rune while in a [621218] state increases damage resistance and reduces received damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589509,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621258,621218]}}],"icon":"/assets/ui/rom-spells/589509.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-60","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":60,"keyItemId":546853,"sourceSkillId":499850,"name":"Blast of Vengeance","description":"Consumes half of caster's HP and attempts to Taunt all enemies in a range of 200. If the Taunt is successful, the caster will be unable to move for (Buff4-Time) seconds.\n[SC_SKILLTIPS_621218]","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801640,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623390,621685],"components":[{"id":623390,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498583],"sourceSkillId":499850,"name":"Blast of Vengeance","description":"Consumes half of caster's HP and attempts to Taunt all enemies in a range of 200. If the Taunt is successful, the caster will be unable to move for (Buff4-Time) seconds.\n[SC_SKILLTIPS_621218]","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801640,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623390,621685]}}],"icon":"/assets/ui/rom-spells/801640.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-70","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":70,"keyItemId":546854,"sourceSkillId":499848,"name":"Deadland Protection","description":"Increases caster's [SC_SKILLTIPS_DEF] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [623400] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801641,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623400],"components":[{"id":623400,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":2,"abilityModifiers":[{"type":135,"value":100},{"type":144,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498583],"sourceSkillId":499848,"name":"Deadland Protection","description":"Increases caster's [SC_SKILLTIPS_DEF] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [623400] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801641,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623400]}}],"icon":"/assets/ui/rom-spells/801641.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-15","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":15,"keyItemId":545928,"sourceSkillId":498725,"name":"Vicious Attack","description":"Makes your Shadowstab cause additional damage, but cancels Bleed effects.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581940,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":498725,"name":"Vicious Attack","description":"Makes your Shadowstab cause additional damage, but cancels Bleed effects.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581940,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581940.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-20","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":545929,"sourceSkillId":498726,"name":"Shadow Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on target. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581941,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621470,622365,622364],"components":[{"id":621470,"magicFunc":0,"magicType":5,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":6.2,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":622365,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":53,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622364,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":45},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":498726,"name":"Shadow Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on target. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581941,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621470,622365,622364]}}],"icon":"/assets/ui/rom-spells/581941.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-25","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":545930,"sourceSkillId":498727,"name":"Shadow Drive","description":"When Chain Drive effect is activated, the cooldown time for Shadow Pulse will be reset.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581942,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":498727,"name":"Shadow Drive","description":"When Chain Drive effect is activated, the cooldown time for Shadow Pulse will be reset.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581942,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581942.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-30","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":545931,"sourceSkillId":498728,"name":"Waiting Game","description":"Reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% and reduces received area damage by (Buff0-2)% for (Buff0-Time) seconds. While skill is in effect, attacks won't have Waiting Game effect and Attack Launch effect will be earned. This increases the damage caused by your next attack by (Buff0-621472)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581943,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621471,621472],"components":[{"id":621471,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":12289,"abilityModifiers":[{"type":206,"value":-5},{"type":207,"value":-5},{"type":209,"value":-8}],"abilitySkillLevelArg":6,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498729,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621472,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435523,"specialActionFlags":0,"assistType":-1,"clearFlags":12289,"abilityModifiers":[{"type":173,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":498728,"name":"Waiting Game","description":"Reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% and reduces received area damage by (Buff0-2)% for (Buff0-Time) seconds. While skill is in effect, attacks won't have Waiting Game effect and Attack Launch effect will be earned. This increases the damage caused by your next attack by (Buff0-621472)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581943,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621471,621472]}}],"icon":"/assets/ui/rom-spells/581943.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-35","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":35,"keyItemId":545932,"sourceSkillId":498731,"name":"Sentence Execution","description":"Enhances Fearless Blow and reduces its cooldown time by 10 seconds. When the target's HP falls below 45%, damage caused by Fearless Blow will be increased.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581944,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":498731,"name":"Sentence Execution","description":"Enhances Fearless Blow and reduces its cooldown time by 10 seconds. When the target's HP falls below 45%, damage caused by Fearless Blow will be increased.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581944,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581944.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-40","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":40,"keyItemId":545933,"sourceSkillId":498737,"name":"Runecraft - Haste","description":"Increases off hand weapon accuracy level by (Buff0-0)% and off hand weapon damage by (Buff0-1)%. \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581945,"sourceEffectType":2,"sourceTarget":6,"componentIds":[621481],"components":[{"id":621481,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":12289,"abilityModifiers":[{"type":36,"value":3},{"type":37,"value":3}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":498737,"name":"Runecraft - Haste","description":"Increases off hand weapon accuracy level by (Buff0-0)% and off hand weapon damage by (Buff0-1)%. \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581945,"sourceEffectType":2,"sourceTarget":6,"componentIds":[621481]}}],"icon":"/assets/ui/rom-spells/581945.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-45","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":545934,"sourceSkillId":498738,"name":"Disaster Appears","description":"Increases [SC_SKILLTIPS_CRI_POWER] and [SC_SKILLTIPS_DPS] after Shadow Step is used.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581946,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":498738,"name":"Disaster Appears","description":"Increases [SC_SKILLTIPS_CRI_POWER] and [SC_SKILLTIPS_DPS] after Shadow Step is used.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581946,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581946.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-50","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":545935,"sourceSkillId":498730,"name":"Death Arrives","description":"Instantly recovers rage and energy by (Buff4-Dot). Also restores (Buff4-Dot) rage and energy every 5 seconds for (Buff4-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581947,"sourceEffectType":1,"sourceTarget":0,"componentIds":[622191,621485,621486],"components":[{"id":622191,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621485,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":5,"dotType":2,"dotBase":100,"dot":{"timeSeconds":5,"type":2,"base":100,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621486,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":41,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":5,"dotType":4,"dotBase":100,"dot":{"timeSeconds":5,"type":4,"base":100,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":498730,"name":"Death Arrives","description":"Instantly recovers rage and energy by (Buff4-Dot). Also restores (Buff4-Dot) rage and energy every 5 seconds for (Buff4-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581947,"sourceEffectType":1,"sourceTarget":0,"componentIds":[622191,621485,621486]}}],"icon":"/assets/ui/rom-spells/581947.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-60","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":60,"keyItemId":546855,"sourceSkillId":499846,"name":"Smoke Diffusion","description":"Consumes half of caster's HP and lets all party members in range disappear for (Buff-Time-623401) seconds. The caster is unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801642,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623401,623693,621685,623389],"components":[{"id":623401,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623693,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":524288,"specialActionFlags":16,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623389,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498733],"sourceSkillId":499846,"name":"Smoke Diffusion","description":"Consumes half of caster's HP and lets all party members in range disappear for (Buff-Time-623401) seconds. The caster is unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801642,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623401,623693,621685,623389]}}],"icon":"/assets/ui/rom-spells/801642.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-70","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":70,"keyItemId":546856,"sourceSkillId":499844,"name":"Shadow Explosion","description":"Increases caster's [SC_SKILLTIPS_01] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [499844] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801643,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623402],"components":[{"id":623402,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":35,"specialActionFlags":0,"assistType":42,"abilityModifiers":[{"type":134,"value":50},{"type":144,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498733],"sourceSkillId":499844,"name":"Shadow Explosion","description":"Increases caster's [SC_SKILLTIPS_01] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [499844] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801643,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623402]}}],"icon":"/assets/ui/rom-spells/801643.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-15","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":545936,"sourceSkillId":498656,"name":"Backlash Armor","description":"For (Buff0-Time) seconds, inflicts (DMG-621344) main hand weapon DPS on targets within range with each successful block and reduces their [SC_SKILLTIPS_DPS] by (Buff0-621346)% for (Buff-Time-621346) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589519,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621345,621344,621346],"components":[{"id":621345,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621344,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621346,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":45}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":498656,"name":"Backlash Armor","description":"For (Buff0-Time) seconds, inflicts (DMG-621344) main hand weapon DPS on targets within range with each successful block and reduces their [SC_SKILLTIPS_DPS] by (Buff0-621346)% for (Buff-Time-621346) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589519,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621345,621344,621346]}}],"icon":"/assets/ui/rom-spells/589519.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-20","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":545937,"sourceSkillId":498658,"name":"Suppression Offensive","description":"Overwhelming attack that inflicts (DMG0) main hand weapon DPS on all enemies near a straight line between the caster and the target. Also reduces current target's weapon damage by (Buff4-0)% for (Buff4-Time). \n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589520,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621347,621348,621411,621355],"components":[{"id":621347,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621348,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":-100},{"type":37,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621411,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":50,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621355,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":2}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":498658,"name":"Suppression Offensive","description":"Overwhelming attack that inflicts (DMG0) main hand weapon DPS on all enemies near a straight line between the caster and the target. Also reduces current target's weapon damage by (Buff4-0)% for (Buff4-Time). \n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589520,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621347,621348,621411,621355]}}],"icon":"/assets/ui/rom-spells/589520.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-25","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":545938,"sourceSkillId":498659,"name":"Endless Rage","description":"Can be used during a successful dodge. Increases rage by (Buff4-Dot) and makes the next attack a critical attack.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589521,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621351,621350],"components":[{"id":621351,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,64],"clearFlags":13313,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621350,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":73,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":10,"dot":{"timeSeconds":1,"type":2,"base":10,"skillLevelArg":0},"attackType":2,"damagePower":20,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":498659,"name":"Endless Rage","description":"Can be used during a successful dodge. Increases rage by (Buff4-Dot) and makes the next attack a critical attack.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589521,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621351,621350]}}],"icon":"/assets/ui/rom-spells/589521.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-30","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":545939,"sourceSkillId":498682,"name":"Key Rescue","description":"Reduces a party member's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%. Lasts for (Buff0-Time) seconds. When this party member is hit during the time of the effect, your current [498564] cooldown time will be reduced by 12 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":17,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589522,"sourceEffectType":0,"sourceTarget":1,"componentIds":[621353],"components":[{"id":621353,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":142,"value":10},{"type":143,"value":10}],"abilitySkillLevelArg":6,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":498913,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":498682,"name":"Key Rescue","description":"Reduces a party member's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%. Lasts for (Buff0-Time) seconds. When this party member is hit during the time of the effect, your current [498564] cooldown time will be reduced by 12 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":17,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589522,"sourceEffectType":0,"sourceTarget":1,"componentIds":[621353]}}],"icon":"/assets/ui/rom-spells/589522.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-35","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":35,"keyItemId":545940,"sourceSkillId":498683,"name":"Bloody Experience","description":"For (Buff0-Time) seconds, the damage that is caused by your next use of [498658] will be converted to your HP and increase your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)%. When the skill hits, it will stun the target for (Buff-Time-621412) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589523,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621355,621412],"components":[{"id":621355,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":2}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621412,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777299,0],"clearFlags":1024,"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":498683,"name":"Bloody Experience","description":"For (Buff0-Time) seconds, the damage that is caused by your next use of [498658] will be converted to your HP and increase your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)%. When the skill hits, it will stun the target for (Buff-Time-621412) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589523,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621355,621412]}}],"icon":"/assets/ui/rom-spells/589523.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-40","classId":"rom-champion","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":545941,"sourceSkillId":498684,"name":"Obstacle Force Field","description":"Each time [498685] hits the target, the target's casting time is extended and skill cost is increased.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589524,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":498684,"name":"Obstacle Force Field","description":"Each time [498685] hits the target, the target's casting time is extended and skill cost is increased.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589524,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/589524.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-45","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":545942,"sourceSkillId":498687,"name":"High-Energy Barrier","description":"Uses energy to protect the target. Resists an amount of damage equal to (Buff0-Shield)% of Maximum HP for (Buff0-Time) seconds. Also increases [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% and [SC_SKILLTIPS_DMG] by (Buff0-0)%. When the effect ends, it deals (DMG-621419) main hand weapon physical DPS on targets in range and roots them for (Buff-Time-621420) seconds.\n[SC_SKILLTIPS_LEVEL50]\n[SC_SKILLTIPS_03]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":589525,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621416,621418,621419,621420],"components":[{"id":621416,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":483,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":173,"value":3},{"type":144,"value":5}],"abilitySkillLevelArg":6,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498688,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":2,"skillLevelArg":28}},{"id":621418,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"clearFlags":1072,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621419,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621420,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":498687,"name":"High-Energy Barrier","description":"Uses energy to protect the target. Resists an amount of damage equal to (Buff0-Shield)% of Maximum HP for (Buff0-Time) seconds. Also increases [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% and [SC_SKILLTIPS_DMG] by (Buff0-0)%. When the effect ends, it deals (DMG-621419) main hand weapon physical DPS on targets in range and roots them for (Buff-Time-621420) seconds.\n[SC_SKILLTIPS_LEVEL50]\n[SC_SKILLTIPS_03]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":589525,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621416,621418,621419,621420]}}],"icon":"/assets/ui/rom-spells/589525.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-50","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":545943,"sourceSkillId":498690,"name":"Rapid Spread","description":"Inflicts (DMG0) main hand weapon physical DPS on target. Also increases [SC_SKILLTIPS_PARRY] by (Buff4-1) and [SC_SKILLTIPS_DOGE] by (Buff4-0) for (Buff4-Time) seconds. \nIf the target is being affected by Suppression Offensive, then this skill will also cause (DMG0) main hand weapon physical DPS on nearby targets. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":36,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589526,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621422,621423],"components":[{"id":621422,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621423,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":17,"value":16},{"type":22,"value":16}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":498690,"name":"Rapid Spread","description":"Inflicts (DMG0) main hand weapon physical DPS on target. Also increases [SC_SKILLTIPS_PARRY] by (Buff4-1) and [SC_SKILLTIPS_DOGE] by (Buff4-0) for (Buff4-Time) seconds. \nIf the target is being affected by Suppression Offensive, then this skill will also cause (DMG0) main hand weapon physical DPS on nearby targets. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":36,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589526,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621422,621423]}}],"icon":"/assets/ui/rom-spells/589526.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-60","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":60,"keyItemId":546857,"sourceSkillId":499842,"name":"Elemental Rampage","description":"Consumes half of caster's HP, attempts to deal a high amount of damage to all enemies in a range of 200 and reduce their resistance by (Buff0-623404) and defense by (Buff1-623404)%. If the damage has been dealt successfully, the caster will not be able to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":801644,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623403,623404,621685,623389],"components":[{"id":623403,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-100,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623404,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":220,"value":-10},{"type":135,"value":-10},{"type":170,"value":-10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623389,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499842,"name":"Elemental Rampage","description":"Consumes half of caster's HP, attempts to deal a high amount of damage to all enemies in a range of 200 and reduce their resistance by (Buff0-623404) and defense by (Buff1-623404)%. If the damage has been dealt successfully, the caster will not be able to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":801644,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623403,623404,621685,623389]}}],"icon":"/assets/ui/rom-spells/801644.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-70","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":70,"keyItemId":546858,"sourceSkillId":499840,"name":"Elemental Defense","description":"Increases caster's [SC_SKILLTIPS_MDEF] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [499840] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801645,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623407],"components":[{"id":623407,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":97,"abilityModifiers":[{"type":170,"value":100},{"type":144,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499840,"name":"Elemental Defense","description":"Increases caster's [SC_SKILLTIPS_MDEF] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [499840] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801645,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623407]}}],"icon":"/assets/ui/rom-spells/801645.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-15","classId":"rom-champion","secondaryClassId":"rom-priest","group":"passive","unlockLevel":15,"keyItemId":545944,"sourceSkillId":498712,"name":"Runecraft - Devotion","description":"Extends the effect time of Holy Aura by 1 second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575748,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":498712,"name":"Runecraft - Devotion","description":"Extends the effect time of Holy Aura by 1 second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575748,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575748.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-20","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":545945,"sourceSkillId":498715,"name":"Divine Vengeance","description":"[SC_SKILLTIPS_621218]\nThere is a chance to use this when attacked while in a Shield Form state. Inflicts (DMG0) main hand weapon physical DPS on target and reduces the cooldown time for Holy Aura by (Buff-Time-621676) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575711,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621427,621428,621458,621676],"components":[{"id":621427,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":4},"summonCreatureId":0},{"id":621428,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621458,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":162,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621676,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":498715,"name":"Divine Vengeance","description":"[SC_SKILLTIPS_621218]\nThere is a chance to use this when attacked while in a Shield Form state. Inflicts (DMG0) main hand weapon physical DPS on target and reduces the cooldown time for Holy Aura by (Buff-Time-621676) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575711,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621427,621428,621458,621676]}}],"icon":"/assets/ui/rom-spells/575711.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-25","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":25,"keyItemId":545946,"sourceSkillId":498716,"name":"Rune Energy Consecration","description":"Restores (Buff-Dot-621429)% MP every 2 seconds and restores (Buff-Dot-621453) rage, (Buff-Dot-621455) energy, (Buff-Dot-621456) focus and (Buff-Dot-621430)% MP for all party members within a range of 200. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575712,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621429,621454,621453,621455,621456,621430],"components":[{"id":621429,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":239,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498717,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":850053,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":2,"dotType":6,"dotBase":3,"dot":{"timeSeconds":2,"type":6,"base":3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621454,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":524389,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498718,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621453,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":2,"dotBase":5,"dot":{"timeSeconds":2,"type":2,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621455,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":4,"dotBase":5,"dot":{"timeSeconds":2,"type":4,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621456,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":3,"dotBase":5,"dot":{"timeSeconds":2,"type":3,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621430,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":6,"dotBase":3,"dot":{"timeSeconds":2,"type":6,"base":3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":498716,"name":"Rune Energy Consecration","description":"Restores (Buff-Dot-621429)% MP every 2 seconds and restores (Buff-Dot-621453) rage, (Buff-Dot-621455) energy, (Buff-Dot-621456) focus and (Buff-Dot-621430)% MP for all party members within a range of 200. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575712,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621429,621454,621453,621455,621456,621430]}}],"icon":"/assets/ui/rom-spells/575712.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-30","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":545947,"sourceSkillId":498719,"name":"Salvation Engraving","description":"Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of nearby party members by (Buff0-0)%. Also reduces any aggro, inflicted while in effect, by (Buff0-2)%. Lasts for (Buff0-Time) seconds. \n(This skill has no effect on the caster.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575713,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621457],"components":[{"id":621457,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":5},{"type":143,"value":5},{"type":138,"value":-5}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":498719,"name":"Salvation Engraving","description":"Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of nearby party members by (Buff0-0)%. Also reduces any aggro, inflicted while in effect, by (Buff0-2)%. Lasts for (Buff0-Time) seconds. \n(This skill has no effect on the caster.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575713,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621457]}}],"icon":"/assets/ui/rom-spells/575713.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-35","classId":"rom-champion","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":545948,"sourceSkillId":498720,"name":"Way of Frenzy","description":"When Divine Vengeance hits, this skill increases stamina by an extra (Buff0-621458)%. This skill can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575716,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621458],"components":[{"id":621458,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":162,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":498720,"name":"Way of Frenzy","description":"When Divine Vengeance hits, this skill increases stamina by an extra (Buff0-621458)%. This skill can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575716,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621458]}}],"icon":"/assets/ui/rom-spells/575716.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-40","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":40,"keyItemId":545949,"sourceSkillId":498721,"name":"Light Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on nearby targets and restores (DMG-621459) HP for nearby party members. The higher your stamina, the more HP is restored. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575719,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621460,621461,621459],"components":[{"id":621460,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621461,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621459,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":6,"fixedValue":0.2,"attack":{"type":0,"calculationType":5,"damagePower":6,"damagePowerSkillLevelArg":5,"fixedValue":0.2,"fixedType":8,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":498721,"name":"Light Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on nearby targets and restores (DMG-621459) HP for nearby party members. The higher your stamina, the more HP is restored. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575719,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621460,621461,621459]}}],"icon":"/assets/ui/rom-spells/575719.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-45","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":45,"keyItemId":545950,"sourceSkillId":498722,"name":"Suicide Advance","description":"Sacrifices the caster's defense to increase the attack of him and his party members. Reduces the caster's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)%. Also increases the [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] of the caster and nearby party members by (Buff4-0)%. Lasts for (Buff0-Time). \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575737,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621462,621463],"components":[{"id":621462,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"clearFlags":1024,"abilityModifiers":[{"type":135,"value":-5},{"type":170,"value":-5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621463,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"clearFlags":1024,"abilityModifiers":[{"type":173,"value":5},{"type":192,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":498722,"name":"Suicide Advance","description":"Sacrifices the caster's defense to increase the attack of him and his party members. Reduces the caster's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)%. Also increases the [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] of the caster and nearby party members by (Buff4-0)%. Lasts for (Buff0-Time). \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575737,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621462,621463]}}],"icon":"/assets/ui/rom-spells/575737.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-50","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":545951,"sourceSkillId":498723,"name":"Holy Attack","description":"Inflicts (DMG0) main hand weapon physical DPS on target and randomly removes a negative magic, curse or poison effect from a party member. \n(Only one of these effects will appear at a time.) \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575747,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621464,621465],"components":[{"id":621464,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621465,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":498723,"name":"Holy Attack","description":"Inflicts (DMG0) main hand weapon physical DPS on target and randomly removes a negative magic, curse or poison effect from a party member. \n(Only one of these effects will appear at a time.) \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575747,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621464,621465]}}],"icon":"/assets/ui/rom-spells/575747.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-60","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":60,"keyItemId":546859,"sourceSkillId":499838,"name":"Reviving Blast","description":"Consumes half of caster's HP and recovers (DMG-623408) HP of all party members in range. The caster will be unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.6},"source":{"imageId":801646,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623408,621685,623389],"components":[{"id":623408,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":60,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":60,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623389,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499838,"name":"Reviving Blast","description":"Consumes half of caster's HP and recovers (DMG-623408) HP of all party members in range. The caster will be unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.6},"source":{"imageId":801646,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623408,621685,623389]}}],"icon":"/assets/ui/rom-spells/801646.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-70","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":70,"keyItemId":546860,"sourceSkillId":499836,"name":"Righteous Explosion","description":"Casting takes 3 seconds and removes all harmful effects from all party members in range.","target":"self","range":15,"castTimeMs":3000,"cooldownMs":30000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801647,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623412],"components":[{"id":623412,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499836,"name":"Righteous Explosion","description":"Casting takes 3 seconds and removes all harmful effects from all party members in range.","target":"self","range":15,"castTimeMs":3000,"cooldownMs":30000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801647,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623412]}}],"icon":"/assets/ui/rom-spells/801647.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-15","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":15,"keyItemId":545952,"sourceSkillId":498593,"name":"Endless Pulse","description":"Consumes an extra 40% of current HP and increases [SC_SKILLTIPS_DPS] by (Buff0-0)%. Also recovers (Buff0-Dot)% HP every 2 seconds for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589511,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621260],"components":[{"id":621260,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-2}],"abilitySkillLevelArg":5,"dotTime":2,"dotType":5,"dotBase":5,"dot":{"timeSeconds":2,"type":5,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498593,"name":"Endless Pulse","description":"Consumes an extra 40% of current HP and increases [SC_SKILLTIPS_DPS] by (Buff0-0)%. Also recovers (Buff0-Dot)% HP every 2 seconds for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589511,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621260]}}],"icon":"/assets/ui/rom-spells/589511.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-20","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":20,"keyItemId":545953,"sourceSkillId":498595,"name":"Rune Siphon","description":"Inflicts (DMG0) main hand weapon physical DPS and (DMG4) [SC_SKILLTIPS_DARK] to a target. Also restores (DMG8) HP to the caster. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589512,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621262,621263,621264],"components":[{"id":621262,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621263,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":1,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621264,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":20,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":20,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498595,"name":"Rune Siphon","description":"Inflicts (DMG0) main hand weapon physical DPS and (DMG4) [SC_SKILLTIPS_DARK] to a target. Also restores (DMG8) HP to the caster. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589512,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621262,621263,621264]}}],"icon":"/assets/ui/rom-spells/589512.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-25","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":25,"keyItemId":545954,"sourceSkillId":498596,"name":"Psychic Forge","description":"Restores focus while increasing rage. Can be stacked a maximum of 7 times.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589513,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498596,"name":"Psychic Forge","description":"Restores focus while increasing rage. Can be stacked a maximum of 7 times.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589513,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/589513.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-30","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":30,"keyItemId":545955,"sourceSkillId":498599,"name":"Dark Energy Strike","description":"Inflicts (DMG0) main hand weapon physical DPS and (DMG4) [SC_SKILLTIPS_DARK] on target. Also carries a chance to reset your Rune Siphon's cooldown time. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589514,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621305,621306,621307],"components":[{"id":621305,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621306,"magicFunc":0,"magicType":5,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":1,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621307,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498599,"name":"Dark Energy Strike","description":"Inflicts (DMG0) main hand weapon physical DPS and (DMG4) [SC_SKILLTIPS_DARK] on target. Also carries a chance to reset your Rune Siphon's cooldown time. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589514,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621305,621306,621307]}}],"icon":"/assets/ui/rom-spells/589514.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-35","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":35,"keyItemId":545956,"sourceSkillId":498600,"name":"Indomitable Spirit","description":"Can only be used when HP is less than 65%. The following 3 Dark Energy Strikes cause double the damage. Also restores (DMG-621310) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589515,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621309,621310],"components":[{"id":621309,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621310,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":2,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":2,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498600,"name":"Indomitable Spirit","description":"Can only be used when HP is less than 65%. The following 3 Dark Energy Strikes cause double the damage. Also restores (DMG-621310) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589515,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621309,621310]}}],"icon":"/assets/ui/rom-spells/589515.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-40","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":40,"keyItemId":545957,"sourceSkillId":498651,"name":"Heart Collection Rune","description":"Immediately resets the cooldown time for Rune Siphon and increases the damage by (Buff0-621338)% the next time it's used. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589516,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621336,621337,621338],"components":[{"id":621336,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":35,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621337,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621338,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":65,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":2}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498651,"name":"Heart Collection Rune","description":"Immediately resets the cooldown time for Rune Siphon and increases the damage by (Buff0-621338)% the next time it's used. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589516,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621336,621337,621338]}}],"icon":"/assets/ui/rom-spells/589516.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-45","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":45,"keyItemId":545958,"sourceSkillId":498652,"name":"Soul Forge Mystery","description":"Increases [SC_SKILLTIPS_CRI] by (Buff0-0) for (Buff0-Time) seconds. If critical attack occurs while in effect, it increases dark attribute magic power by (Buff0-621341)% for (Buff-Time-621341) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-621342)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589517,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621339,621341,621342],"components":[{"id":621339,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621341,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":50,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621342,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":498652,"name":"Soul Forge Mystery","description":"Increases [SC_SKILLTIPS_CRI] by (Buff0-0) for (Buff0-Time) seconds. If critical attack occurs while in effect, it increases dark attribute magic power by (Buff0-621341)% for (Buff-Time-621341) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-621342)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589517,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621339,621341,621342]}}],"icon":"/assets/ui/rom-spells/589517.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-50","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":545959,"sourceSkillId":498655,"name":"Dark Energy Punishment","description":"Consumes (Buff0-Dot)% HP every second and increases [SC_SKILLTIPS_01] by (Buff0-0)% and [SC_SKILLTIPS_02] by (Buff0-1)%. \n(This state ends when HP has been exhausted.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"health","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589518,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621343],"components":[{"id":621343,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":65643,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":134,"value":5},{"type":171,"value":5}],"abilitySkillLevelArg":10,"dotTime":1,"dotType":5,"dotBase":-3,"dot":{"timeSeconds":1,"type":5,"base":-3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498655,"name":"Dark Energy Punishment","description":"Consumes (Buff0-Dot)% HP every second and increases [SC_SKILLTIPS_01] by (Buff0-0)% and [SC_SKILLTIPS_02] by (Buff0-1)%. \n(This state ends when HP has been exhausted.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"health","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589518,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621343]}}],"icon":"/assets/ui/rom-spells/589518.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-60","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":60,"keyItemId":546861,"sourceSkillId":499833,"name":"Blast of Remorse","description":"Consumes half of caster's HP and knocks down all enemies in range for (Buff-Time-623413) seconds. If any enemy has been Knocked down successfully, the caster will be unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801648,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623413,621685,623389],"components":[{"id":623413,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4179,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623389,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":499833,"name":"Blast of Remorse","description":"Consumes half of caster's HP and knocks down all enemies in range for (Buff-Time-623413) seconds. If any enemy has been Knocked down successfully, the caster will be unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801648,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623413,621685,623389]}}],"icon":"/assets/ui/rom-spells/801648.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-70","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":70,"keyItemId":546862,"sourceSkillId":499831,"name":"Psychic Rampage","description":"Increases caster's critical hit rate by (Buff0-0). While in effect, any healing received is reduced by (Buff0-2)%.\n(Right click the [499831] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801649,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623414],"components":[{"id":623414,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":2500},{"type":20,"value":2500},{"type":144,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499831,"name":"Psychic Rampage","description":"Increases caster's critical hit rate by (Buff0-0). While in effect, any healing received is reduced by (Buff0-2)%.\n(Right click the [499831] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801649,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623414]}}],"icon":"/assets/ui/rom-spells/801649.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-15","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"passive","unlockLevel":15,"keyItemId":545968,"sourceSkillId":498760,"name":"Wild Slash","description":"Increases damage caused by Slash and changes to consume HP. After it hits, Bleed effect can also increase [SC_SKILLTIPS_DPS] by (Buff0-621575)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800160,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621575],"components":[{"id":621575,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":23,"value":-1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498760,"name":"Wild Slash","description":"Increases damage caused by Slash and changes to consume HP. After it hits, Bleed effect can also increase [SC_SKILLTIPS_DPS] by (Buff0-621575)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800160,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621575]}}],"icon":"/assets/ui/rom-spells/800160.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-20","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":545969,"sourceSkillId":498762,"name":"Blood Rune Weapon","description":"[SC_SKILLTIPS_HP5]\nIncreases [SC_SKILLTIPS_01] by (Buff0-0)% and [SC_SKILLTIPS_CRI] by (Buff4-0) for (Buff0-Time) times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800161,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621590,621591,621594],"components":[{"id":621590,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":6,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498781,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621591,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":18,"value":25}],"abilitySkillLevelArg":7,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621594,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498762,"name":"Blood Rune Weapon","description":"[SC_SKILLTIPS_HP5]\nIncreases [SC_SKILLTIPS_01] by (Buff0-0)% and [SC_SKILLTIPS_CRI] by (Buff4-0) for (Buff0-Time) times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800161,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621590,621591,621594]}}],"icon":"/assets/ui/rom-spells/800161.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-25","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":25,"keyItemId":545970,"sourceSkillId":498763,"name":"Bloody Slash","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) + (FixDMG0) x STR main hand weapon physical DPS on target. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800162,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621592],"components":[{"id":621592,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498763,"name":"Bloody Slash","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) + (FixDMG0) x STR main hand weapon physical DPS on target. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800162,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621592]}}],"icon":"/assets/ui/rom-spells/800162.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-30","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":30,"keyItemId":545971,"sourceSkillId":498764,"name":"Unbridled Rage","description":"[SC_SKILLTIPS_HP5]\nIncreases [SC_SKILLTIPS_STR] by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800163,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621593],"components":[{"id":621593,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":161,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498764,"name":"Unbridled Rage","description":"[SC_SKILLTIPS_HP5]\nIncreases [SC_SKILLTIPS_STR] by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800163,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621593]}}],"icon":"/assets/ui/rom-spells/800163.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-35","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":35,"keyItemId":545972,"sourceSkillId":498817,"name":"Bloody Battle","description":"|cffFF5755Can be used while in a Blood Rune Weapon state.|r\nThis skill can be used 6 seconds after a critical attack. Recovers 25% of caster's lost HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800164,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621598],"components":[{"id":621598,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498817,"name":"Bloody Battle","description":"|cffFF5755Can be used while in a Blood Rune Weapon state.|r\nThis skill can be used 6 seconds after a critical attack. Recovers 25% of caster's lost HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800164,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621598]}}],"icon":"/assets/ui/rom-spells/800164.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-40","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":40,"keyItemId":545973,"sourceSkillId":498820,"name":"Fearless Rune","description":"Provides immunity to all magical damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800165,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621599],"components":[{"id":621599,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498820,"name":"Fearless Rune","description":"Provides immunity to all magical damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800165,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621599]}}],"icon":"/assets/ui/rom-spells/800165.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-45","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":45,"keyItemId":545974,"sourceSkillId":498821,"name":"Stifling Attack","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) main hand weapon physical DPS + (FixDMG0) x STR damage on the target and reduces the target's [SC_SKILLTIPS_DEF] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"health","amount":31,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800166,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621615,621616],"components":[{"id":621615,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621616,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":-8}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0.2,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498821,"name":"Stifling Attack","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) main hand weapon physical DPS + (FixDMG0) x STR damage on the target and reduces the target's [SC_SKILLTIPS_DEF] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"health","amount":31,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800166,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621615,621616]}}],"icon":"/assets/ui/rom-spells/800166.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-50","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":50,"keyItemId":545975,"sourceSkillId":498822,"name":"Vendetta Blow","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) main hand weapon physical DPS + (FixDMG0) x STR damage on a target. The more HP you lose, the more damage this skill inflicts. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800167,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621618],"components":[{"id":621618,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498822,"name":"Vendetta Blow","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) main hand weapon physical DPS + (FixDMG0) x STR damage on a target. The more HP you lose, the more damage this skill inflicts. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800167,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621618]}}],"icon":"/assets/ui/rom-spells/800167.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-60","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"passive","unlockLevel":60,"keyItemId":546746,"sourceSkillId":499823,"name":"Enhanced Shock","description":"Causes [499824] to Slow down target for (Buff-Time-623420) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801616,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623420],"components":[{"id":623420,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":499823,"name":"Enhanced Shock","description":"Causes [499824] to Slow down target for (Buff-Time-623420) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801616,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623420]}}],"icon":"/assets/ui/rom-spells/801616.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-70","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"passive","unlockLevel":70,"keyItemId":546747,"sourceSkillId":499804,"name":"Blood Whirlwind","description":"A [623422] effect will be added to [499822]. Each time an enemy is hit, the caster recovers (DMG-623423) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801617,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623422,623423],"components":[{"id":623422,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623423,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":3,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":3,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":499804,"name":"Blood Whirlwind","description":"A [623422] effect will be added to [499822]. Each time an enemy is hit, the caster recovers (DMG-623423) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801617,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623422,623423]}}],"icon":"/assets/ui/rom-spells/801617.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-15","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":541885,"sourceSkillId":491328,"name":"Skull Breaker","description":"Precise strike at the enemy's head that causes (DMG0) main hand weapon DPS and has a 50% chance of lowering the target's accuracy by (Buff4-0)%.\n(Accuracy for players is decreased by (Buff5-0)%.)\n(This skill decreases the target's accuracy by a maximum of (Max-Buff0-501864)%).","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575211,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620362,501864,503843],"components":[{"id":620362,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501864,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":197,"value":-10}],"abilitySkillLevelArg":6.6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":503843,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":197,"value":-10}],"abilitySkillLevelArg":6.6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491328,"name":"Skull Breaker","description":"Precise strike at the enemy's head that causes (DMG0) main hand weapon DPS and has a 50% chance of lowering the target's accuracy by (Buff4-0)%.\n(Accuracy for players is decreased by (Buff5-0)%.)\n(This skill decreases the target's accuracy by a maximum of (Max-Buff0-501864)%).","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575211,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620362,501864,503843]}}],"icon":"/assets/ui/rom-spells/575211.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-20","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":20,"keyItemId":541915,"sourceSkillId":491452,"name":"Stun Shot","description":"Causes your target to be Stunned for (Buff0-Time) seconds. (Requires ranged weapon.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575240,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501858,503842,502719],"components":[{"id":501858,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":4,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":503842,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":4,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":491452,"name":"Stun Shot","description":"Causes your target to be Stunned for (Buff0-Time) seconds. (Requires ranged weapon.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575240,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501858,503842,502719]}}],"icon":"/assets/ui/rom-spells/575240.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-25","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":25,"keyItemId":541945,"sourceSkillId":491458,"name":"Moon Cleave Perfection","description":"Reduces your Moon Cleave rage cost by 10 points and cool down by 20 seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575732,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":491458,"name":"Moon Cleave Perfection","description":"Reduces your Moon Cleave rage cost by 10 points and cool down by 20 seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575732,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575732.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-30","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":541975,"sourceSkillId":491451,"name":"Aim for the Wound","description":"Inflict (DMG0) ranged weapon DPS. You have a chance of gaining an additional (Buff4-Dot) points of rage. (Requires ranged weapon.)\n(This skill generates a maximum of an additional (Max-Buff-Dot-501859) points of rage.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575239,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501857,501859],"components":[{"id":501857,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501859,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":1048585,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":12},"attackType":2,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":491451,"name":"Aim for the Wound","description":"Inflict (DMG0) ranged weapon DPS. You have a chance of gaining an additional (Buff4-Dot) points of rage. (Requires ranged weapon.)\n(This skill generates a maximum of an additional (Max-Buff-Dot-501859) points of rage.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575239,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501857,501859]}}],"icon":"/assets/ui/rom-spells/575239.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-35","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":542006,"sourceSkillId":492615,"name":"Sword Breath","description":"Sword breath pierces the target, inflicting (DMG0) main hand weapon DPS and with each hit also has a chance of increasing rage by (Buff4-Dot) points.\n(This skill generates a maximum of an additional (Max-Buff-Dot-502888) points of rage.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576990,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502887,502888],"components":[{"id":502887,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502888,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":1048585,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":8},"attackType":2,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":492615,"name":"Sword Breath","description":"Sword breath pierces the target, inflicting (DMG0) main hand weapon DPS and with each hit also has a chance of increasing rage by (Buff4-Dot) points.\n(This skill generates a maximum of an additional (Max-Buff-Dot-502888) points of rage.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576990,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502887,502888]}}],"icon":"/assets/ui/rom-spells/576990.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-40","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":40,"keyItemId":542036,"sourceSkillId":498032,"name":"Calm","description":"When Skull Breaker fails you have the opportunity to enter a state of calm in order to increase accuracy by (Buff0-620337)%. Effective for (Buff-Time-620337) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577572,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620337],"components":[{"id":620337,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":498032,"name":"Calm","description":"When Skull Breaker fails you have the opportunity to enter a state of calm in order to increase accuracy by (Buff0-620337)%. Effective for (Buff-Time-620337) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577572,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620337]}}],"icon":"/assets/ui/rom-spells/577572.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-45","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":542066,"sourceSkillId":492959,"name":"Waiting Game","description":"When you successfully use Aim for the Wound or hit the target with a Moon Cleave your physical attack power instantly increases.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577641,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":492959,"name":"Waiting Game","description":"When you successfully use Aim for the Wound or hit the target with a Moon Cleave your physical attack power instantly increases.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577641,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577641.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-50","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":542096,"sourceSkillId":493247,"name":"The Final Battle","description":"Inflicts (DMG0) main hand weapon DPS. If target's HP is lower than 30%, it will inflict (DMG1) main hand weapon DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577771,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503508,620363],"components":[{"id":503508,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620363,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493247,"name":"The Final Battle","description":"Inflicts (DMG0) main hand weapon DPS. If target's HP is lower than 30%, it will inflict (DMG1) main hand weapon DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577771,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503508,620363]}}],"icon":"/assets/ui/rom-spells/577771.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-60","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546730,"sourceSkillId":499473,"name":"Battle Focus","description":"Increases [SC_SKILLTIPS_HITP] when your [499625] hits, and recovers (Buff-Dot-622988) Focus. Lasts for (Buff-Time-620365). \n([SC_SKILLTIPS_CD_1] (Buff-Time-622989) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801259,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622988,620365,622989],"components":[{"id":622988,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":73,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":3,"dotBase":20,"dot":{"timeSeconds":1,"type":3,"base":20,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620365,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"summonCreatureId":0},{"id":622989,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499473,"name":"Battle Focus","description":"Increases [SC_SKILLTIPS_HITP] when your [499625] hits, and recovers (Buff-Dot-622988) Focus. Lasts for (Buff-Time-620365). \n([SC_SKILLTIPS_CD_1] (Buff-Time-622989) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801259,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622988,620365,622989]}}],"icon":"/assets/ui/rom-spells/801259.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-70","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546731,"sourceSkillId":499475,"name":"Blood Battle","description":"Increases your [499998|Blood Arrow's] [SC_SKILLTIPS_POWER] at the same time.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801307,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499475,"name":"Blood Battle","description":"Increases your [499998|Blood Arrow's] [SC_SKILLTIPS_POWER] at the same time.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801307,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801307.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-15","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":15,"keyItemId":541886,"sourceSkillId":491460,"name":"Shadowstab Perfection","description":"You no longer need to have a dagger equipped to gain the Bleed bonus of the Shadowstab skill. Bleed duration is increased by 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575733,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":491460,"name":"Shadowstab Perfection","description":"You no longer need to have a dagger equipped to gain the Bleed bonus of the Shadowstab skill. Bleed duration is increased by 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575733,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575733.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-20","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":20,"keyItemId":541916,"sourceSkillId":491463,"name":"Speed Up","description":"Increases your movement speed by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576384,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501869],"components":[{"id":501869,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":3}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":491463,"name":"Speed Up","description":"Increases your movement speed by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576384,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501869]}}],"icon":"/assets/ui/rom-spells/576384.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-25","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":25,"keyItemId":541946,"sourceSkillId":491329,"name":"Blood Dance","description":"Attack the enemy with full strength and spill his blood! Causes (DMG0) main hand weapon DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"health","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575212,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501800],"components":[{"id":501800,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":4.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":491329,"name":"Blood Dance","description":"Attack the enemy with full strength and spill his blood! Causes (DMG0) main hand weapon DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"health","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575212,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501800]}}],"icon":"/assets/ui/rom-spells/575212.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-30","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":541976,"sourceSkillId":491330,"name":"Frenzied Attack","description":"For (Buff0-Time) seconds you go into a Frenzy. During this time, your [SC_SKILLTIPS_CRI] for all kinds of attacks is increased by (Buff0-1). All Slow and Root effects are removed, but [SC_SKILLTIPS_DEF] is reduced by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575213,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501801],"components":[{"id":501801,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":-50},{"type":18,"value":700}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":491330,"name":"Frenzied Attack","description":"For (Buff0-Time) seconds you go into a Frenzy. During this time, your [SC_SKILLTIPS_CRI] for all kinds of attacks is increased by (Buff0-1). All Slow and Root effects are removed, but [SC_SKILLTIPS_DEF] is reduced by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575213,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501801]}}],"icon":"/assets/ui/rom-spells/575213.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-35","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542007,"sourceSkillId":492619,"name":"Keen Attack","description":"If the target is Vulnerable, two quick attacks cause (DMG0) main hand weapon DPS. Your critical damage will be increased by (Buff8-0)% for (Buff8-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576991,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502883,501520,623524],"components":[{"id":502883,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":128,"abilityModifiers":[{"type":135,"value":25},{"type":22,"value":5},{"type":17,"value":5},{"type":144,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501520,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0},{"id":623524,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":492619,"name":"Keen Attack","description":"If the target is Vulnerable, two quick attacks cause (DMG0) main hand weapon DPS. Your critical damage will be increased by (Buff8-0)% for (Buff8-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576991,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502883,501520,623524]}}],"icon":"/assets/ui/rom-spells/576991.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-40","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":542037,"sourceSkillId":492911,"name":"Splitting Chop","description":"When the target is Weakened, inflicts (DMG0) main hand weapon DPS to the target and decreases the target's [SC_SKILLTIPS_DEF] by (Buff4-0)% for (Buff4-Time) seconds.\n(This skill decreases the target's [SC_SKILLTIPS_DEF] by a maximum of (Max-Buff0-503161)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577574,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503160,503161,502923],"components":[{"id":503160,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503161,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-2}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502923,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":492911,"name":"Splitting Chop","description":"When the target is Weakened, inflicts (DMG0) main hand weapon DPS to the target and decreases the target's [SC_SKILLTIPS_DEF] by (Buff4-0)% for (Buff4-Time) seconds.\n(This skill decreases the target's [SC_SKILLTIPS_DEF] by a maximum of (Max-Buff0-503161)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577574,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503160,503161,502923]}}],"icon":"/assets/ui/rom-spells/577574.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-45","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":542067,"sourceSkillId":492997,"name":"Frenzied Heart","description":"When you enter Frenzied Attack state, your physical critical damage is increased.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577642,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":492997,"name":"Frenzied Heart","description":"When you enter Frenzied Attack state, your physical critical damage is increased.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577642,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577642.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-50","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":50,"keyItemId":542097,"sourceSkillId":493248,"name":"Exhaustion","description":"Lowers the rage required by your Whirlwind by 20 points, and shortens cooldown by 10 seconds. Also when you use a Probing Attack, there is an additional chance that it will lower the target's energy, focus, rage, and mana. (This effect can only be used on players.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577772,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":493248,"name":"Exhaustion","description":"Lowers the rage required by your Whirlwind by 20 points, and shortens cooldown by 10 seconds. Also when you use a Probing Attack, there is an additional chance that it will lower the target's energy, focus, rage, and mana. (This effect can only be used on players.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577772,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577772.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-60","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546732,"sourceSkillId":499483,"name":"Attack Launch","description":"Stops your [499484] from reducing [SC_SKILLTIPS_DEF].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801260,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499483,"name":"Attack Launch","description":"Stops your [499484] from reducing [SC_SKILLTIPS_DEF].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801260,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801260.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-70","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":70,"keyItemId":546733,"sourceSkillId":499997,"name":"Desperate Measures","description":"When activated, it will prevent death once and restore full HP within (Buff0-Time) seconds. After death is averted, the caster will experience a Weakened state for (Buff-Time-622951) seconds. This will cause (Buff-Dot-622951)% HP damage for every second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801308,"sourceEffectType":0,"sourceTarget":0,"componentIds":[622949,622950,622951],"components":[{"id":622949,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[32768,0],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":499995,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622950,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":0,"summonCreatureId":0},{"id":622951,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":65610,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":1,"dotType":5,"dotBase":-15,"dot":{"timeSeconds":1,"type":5,"base":-15,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499997,"name":"Desperate Measures","description":"When activated, it will prevent death once and restore full HP within (Buff0-Time) seconds. After death is averted, the caster will experience a Weakened state for (Buff-Time-622951) seconds. This will cause (Buff-Dot-622951)% HP damage for every second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801308,"sourceEffectType":0,"sourceTarget":0,"componentIds":[622949,622950,622951]}}],"icon":"/assets/ui/rom-spells/801308.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-15","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541887,"sourceSkillId":491474,"name":"Electrical Rage","description":"Causes (DMG0) main hand weapon DPS and puts High Voltage on the caster. [SC_SKILLTIPS_02] is increased by (Buff7-0)% for (Buff7-Time) seconds. High Voltage stacks up to 3 times.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":15,"percentage":false},{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575246,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501880,501884,501882,501881],"components":[{"id":501880,"magicFunc":0,"magicType":3,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501884,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435523,"specialActionFlags":0,"assistType":13,"abilityModifiers":[{"type":171,"value":15}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":501882,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435523,"specialActionFlags":0,"assistType":13,"abilityModifiers":[{"type":171,"value":10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":501881,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435523,"specialActionFlags":0,"assistType":13,"abilityModifiers":[{"type":171,"value":5}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491474,"name":"Electrical Rage","description":"Causes (DMG0) main hand weapon DPS and puts High Voltage on the caster. [SC_SKILLTIPS_02] is increased by (Buff7-0)% for (Buff7-Time) seconds. High Voltage stacks up to 3 times.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":15,"percentage":false},{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575246,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501880,501884,501882,501881]}}],"icon":"/assets/ui/rom-spells/575246.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-20","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":541917,"sourceSkillId":491477,"name":"Lightning's Touch","description":"Your weapon strikes the enemy with a flash of lightning, dealing (DMG0) points of Wind damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":575247,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501883],"components":[{"id":501883,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":45,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":491477,"name":"Lightning's Touch","description":"Your weapon strikes the enemy with a flash of lightning, dealing (DMG0) points of Wind damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":575247,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501883]}}],"icon":"/assets/ui/rom-spells/575247.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-25","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":541947,"sourceSkillId":491331,"name":"Sense of Danger","description":"Lowers the damage you receive by (Buff0-0)% for (Buff0-Time) Seconds. Can only be activated when HP is below 30%. (Does not lower critical damage received)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575214,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501802,509772],"components":[{"id":501802,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435683,"specialActionFlags":0,"assistType":178,"abilityModifiers":[{"type":143,"value":10},{"type":142,"value":0}],"abilitySkillLevelArg":17,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509772,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268959969,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":143,"value":0},{"type":142,"value":10}],"abilitySkillLevelArg":17,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491331,"name":"Sense of Danger","description":"Lowers the damage you receive by (Buff0-0)% for (Buff0-Time) Seconds. Can only be activated when HP is below 30%. (Does not lower critical damage received)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575214,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501802,509772]}}],"icon":"/assets/ui/rom-spells/575214.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-30","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":541977,"sourceSkillId":491332,"name":"Thunder Sword","description":"Fires 4 sword shaped thunder bolts at the target inflicting (DMG0) points of Wind damage.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":575215,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501803],"components":[{"id":501803,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":35,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491332,"name":"Thunder Sword","description":"Fires 4 sword shaped thunder bolts at the target inflicting (DMG0) points of Wind damage.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":575215,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501803]}}],"icon":"/assets/ui/rom-spells/575215.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-35","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":35,"keyItemId":542008,"sourceSkillId":492618,"name":"Electric Attack","description":"For (Buff0-Time) seconds, your normal attacks additionally cause (Buff0-0) Wind damage.\n[SC_SKILLTIPS_492618]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576992,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502886],"components":[{"id":502886,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":187,"value":100}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":492618,"name":"Electric Attack","description":"For (Buff0-Time) seconds, your normal attacks additionally cause (Buff0-0) Wind damage.\n[SC_SKILLTIPS_492618]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576992,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502886]}}],"icon":"/assets/ui/rom-spells/576992.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-40","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":40,"keyItemId":542038,"sourceSkillId":492913,"name":"Lava Weapon","description":"Adds (Buff0-0) Fire damage to your normal attacks for (Buff0-Time) seconds. (The value of this damage varies considerably.)\n[SC_SKILLTIPS_492618]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577575,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503163],"components":[{"id":503163,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":186,"value":70}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":492913,"name":"Lava Weapon","description":"Adds (Buff0-0) Fire damage to your normal attacks for (Buff0-Time) seconds. (The value of this damage varies considerably.)\n[SC_SKILLTIPS_492618]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577575,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503163]}}],"icon":"/assets/ui/rom-spells/577575.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-45","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"passive","unlockLevel":45,"keyItemId":542068,"sourceSkillId":493000,"name":"Power Control","description":"Causes your Electric Attack to additionally increase your physical accuracy and your Lava Weapon to raise your physical critical hit rate.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577643,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":493000,"name":"Power Control","description":"Causes your Electric Attack to additionally increase your physical accuracy and your Lava Weapon to raise your physical critical hit rate.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577643,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577643.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-50","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"passive","unlockLevel":50,"keyItemId":542098,"sourceSkillId":499486,"name":"Wind Bastion","description":"When you use [499487], a defensive wind will protect you, lowering the physical damage inflicted upon you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577773,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":499486,"name":"Wind Bastion","description":"When you use [499487], a defensive wind will protect you, lowering the physical damage inflicted upon you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577773,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577773.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-60","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":60,"keyItemId":546734,"sourceSkillId":490062,"name":"Lightning Burn Weapon","description":"A special power that controls wind and fire. Instills flame and electricity in your weapon, but their power is reduced by 25%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500162,500163],"components":[{"id":500162,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":110,"clearFlags":1024,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":490063,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500163,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":490062,"name":"Lightning Burn Weapon","description":"A special power that controls wind and fire. Instills flame and electricity in your weapon, but their power is reduced by 25%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500162,500163]}}],"icon":"/assets/ui/rom-spells/801261.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-70","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546735,"sourceSkillId":499485,"name":"Possessed by Anger","description":"Makes your [499994] stackable and have an extra [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] bonus increase.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801309,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499485,"name":"Possessed by Anger","description":"Makes your [499994] stackable and have an extra [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] bonus increase.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801309,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801309.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-15","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":15,"keyItemId":541888,"sourceSkillId":491466,"name":"Defender's Roar","description":"Increases your and your party members' [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"health","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575244,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501872,506365],"components":[{"id":501872,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":120,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":102,"abilityModifiers":[{"type":8,"value":300}],"abilitySkillLevelArg":10,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495381,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":506365,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":120,"hateCost":-10,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491466,"name":"Defender's Roar","description":"Increases your and your party members' [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"health","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575244,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501872,506365]}}],"icon":"/assets/ui/rom-spells/575244.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-20","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":541918,"sourceSkillId":491469,"name":"Interrupting Strike","description":"Interrupts target's casting and causes (DMG0) points of damage. (The interrupted spell will enter a cooldown phase. If the interrupted spell has no cooldown, all spells will enter a cooldown time of 3 seconds.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":575556,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501875,502703],"components":[{"id":501875,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":30,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-16.4,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-16.4,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502703,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":491469,"name":"Interrupting Strike","description":"Interrupts target's casting and causes (DMG0) points of damage. (The interrupted spell will enter a cooldown phase. If the interrupted spell has no cooldown, all spells will enter a cooldown time of 3 seconds.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":575556,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501875,502703]}}],"icon":"/assets/ui/rom-spells/575556.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-25","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":25,"keyItemId":541948,"sourceSkillId":491471,"name":"Magic Barrier Perfection","description":"Your Magic Barrier now also decreases the [SC_SKILLTIPS_MDMG] received.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575735,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":491471,"name":"Magic Barrier Perfection","description":"Your Magic Barrier now also decreases the [SC_SKILLTIPS_MDMG] received.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575735,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575735.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-30","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":541978,"sourceSkillId":492332,"name":"Bloodlust","description":"Convert 10% of your HP into 30 points of rage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"health","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575736,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501873],"components":[{"id":501873,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":18,"abilityModifiers":[{"type":8,"value":150}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":30,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":30,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":492332,"name":"Bloodlust","description":"Convert 10% of your HP into 30 points of rage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"health","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575736,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501873]}}],"icon":"/assets/ui/rom-spells/575736.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-35","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":35,"keyItemId":542009,"sourceSkillId":492617,"name":"Opportunity","description":"When the target is Weakened, (DMG0) main hand weapon DPS is dealt to the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576993,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502884,502923],"components":[{"id":502884,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502923,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":492617,"name":"Opportunity","description":"When the target is Weakened, (DMG0) main hand weapon DPS is dealt to the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576993,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502884,502923]}}],"icon":"/assets/ui/rom-spells/576993.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-40","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":40,"keyItemId":542039,"sourceSkillId":492912,"name":"Blood Retention","description":"When you use Bloodlust, you'll gain 3 rage points every 2 seconds for 10 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577576,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":492912,"name":"Blood Retention","description":"When you use Bloodlust, you'll gain 3 rage points every 2 seconds for 10 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577576,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577576.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-45","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542069,"sourceSkillId":492998,"name":"Morale Boost","description":"Causes your Berserk to increase the [SC_SKILLTIPS_DMG] of nearby party members' next four attacks for 30 seconds. Disappears after four attacks or 30 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577644,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":492998,"name":"Morale Boost","description":"Causes your Berserk to increase the [SC_SKILLTIPS_DMG] of nearby party members' next four attacks for 30 seconds. Disappears after four attacks or 30 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577644,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577644.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-50","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":542099,"sourceSkillId":493249,"name":"Barbarian Battle Cry","description":"Causes multiple targets within a radius of 80 to fear your power, and lowers their [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-0)% for (Buff0-Time) seconds. If the target has been inflicted with Fear, your Slash and Probing Attack will cause additional damage.","target":"self","range":8,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577774,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503511],"components":[{"id":503511,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":1,"abilityModifiers":[{"type":173,"value":-2},{"type":44,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":493249,"name":"Barbarian Battle Cry","description":"Causes multiple targets within a radius of 80 to fear your power, and lowers their [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-0)% for (Buff0-Time) seconds. If the target has been inflicted with Fear, your Slash and Probing Attack will cause additional damage.","target":"self","range":8,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577774,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503511]}}],"icon":"/assets/ui/rom-spells/577774.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-60","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":60,"keyItemId":546736,"sourceSkillId":499488,"name":"Combat Expertise","description":"Stops your [499489] from reducing [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801262,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499488,"name":"Combat Expertise","description":"Stops your [499489] from reducing [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801262,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801262.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-70","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546737,"sourceSkillId":499490,"name":"Blood Fury Battle Cry","description":"When you use [499992] it will carry an additional increase of [SC_SKILLTIPS_DPS] by (Buff1-622956)% and [SC_SKILLTIPS_CRI] by (Buff0-622956) points. Lasts for 15 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801310,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622956],"components":[{"id":622956,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":18,"value":30},{"type":23,"value":-1}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499490,"name":"Blood Fury Battle Cry","description":"When you use [499992] it will carry an additional increase of [SC_SKILLTIPS_DPS] by (Buff1-622956)% and [SC_SKILLTIPS_CRI] by (Buff0-622956) points. Lasts for 15 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801310,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622956]}}],"icon":"/assets/ui/rom-spells/801310.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-15","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"elite","unlockLevel":15,"keyItemId":541889,"sourceSkillId":491333,"name":"Throw Shield","description":"Throws your shield at the target causing (DMG0) main hand weapon DPS + (FixDMG-620344) x (shield's defense value) damage.\n(Must have a shield equipped)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575216,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620344],"components":[{"id":620344,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":491333,"name":"Throw Shield","description":"Throws your shield at the target causing (DMG0) main hand weapon DPS + (FixDMG-620344) x (shield's defense value) damage.\n(Must have a shield equipped)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575216,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620344]}}],"icon":"/assets/ui/rom-spells/575216.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-20","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"elite","unlockLevel":20,"keyItemId":541919,"sourceSkillId":491480,"name":"Blocking Stance","description":"Increases your chance to parry by (Buff0-0) points for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575558,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502007],"components":[{"id":502007,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":491480,"name":"Blocking Stance","description":"Increases your chance to parry by (Buff0-0) points for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575558,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502007]}}],"icon":"/assets/ui/rom-spells/575558.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-25","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"elite","unlockLevel":25,"keyItemId":541949,"sourceSkillId":491334,"name":"Ignore Pain","description":"Immune to Helpless, Stun, Root and Slow for (Buff0-Time) seconds.\n(Effect can only be removed if target has Movement Impairing Effect or Stun)\n\n[SC_SKILLTIPS_FEAR]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575217,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501805],"components":[{"id":501805,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":491334,"name":"Ignore Pain","description":"Immune to Helpless, Stun, Root and Slow for (Buff0-Time) seconds.\n(Effect can only be removed if target has Movement Impairing Effect or Stun)\n\n[SC_SKILLTIPS_FEAR]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575217,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501805]}}],"icon":"/assets/ui/rom-spells/575217.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-30","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541979,"sourceSkillId":491484,"name":"Shield Bash","description":"Immediately strike at the target with your shield causing (DMG0) main hand weapon DPS + (FixDMG-620345) x (shield's defense value) damage and restore you (DMG4) rage.\n(Must have a shield equipped)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575557,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620345,502012],"components":[{"id":620345,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.55,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.55,"damagePowerSkillLevelArg":6,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502012,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":30,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":5,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":5,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491484,"name":"Shield Bash","description":"Immediately strike at the target with your shield causing (DMG0) main hand weapon DPS + (FixDMG-620345) x (shield's defense value) damage and restore you (DMG4) rage.\n(Must have a shield equipped)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575557,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620345,502012]}}],"icon":"/assets/ui/rom-spells/575557.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-35","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":35,"keyItemId":542010,"sourceSkillId":492661,"name":"Heroic Surprise Attack","description":"Your Surprise Attack generates additional rage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576994,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492661,"name":"Heroic Surprise Attack","description":"Your Surprise Attack generates additional rage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576994,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/576994.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-40","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":40,"keyItemId":542040,"sourceSkillId":492914,"name":"Concentrated Precision","description":"Increases [SC_SKILLTIPS_HIT] by (Buff0-0) and allows you to equip plate armor.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577577,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620374],"components":[{"id":620374,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":16,"value":10},{"type":99,"value":1}],"abilitySkillLevelArg":10.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":492914,"name":"Concentrated Precision","description":"Increases [SC_SKILLTIPS_HIT] by (Buff0-0) and allows you to equip plate armor.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577577,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620374]}}],"icon":"/assets/ui/rom-spells/577577.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-45","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":45,"keyItemId":542070,"sourceSkillId":493003,"name":"Fierce Attack","description":"When you hit the target with your Throw Shield, instantly decreases your target's [SC_SKILLTIPS_CRI_PASSIVE] for (Buff-Time-503253) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503312)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577645,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503253,503312],"components":[{"id":503253,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":1342177474,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":182,"value":-22}],"abilitySkillLevelArg":12.5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493053,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503312,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493003,"name":"Fierce Attack","description":"When you hit the target with your Throw Shield, instantly decreases your target's [SC_SKILLTIPS_CRI_PASSIVE] for (Buff-Time-503253) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503312)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577645,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503253,503312]}}],"icon":"/assets/ui/rom-spells/577645.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-50","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":50,"keyItemId":542100,"sourceSkillId":493251,"name":"Resist","description":"In Blocking Stance you will receive less physical damage, and there is an additional chance that your rage will increase.\n([SC_SKILLTIPS_CD_1](Buff-Time-503572)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577775,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503572],"components":[{"id":503572,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493251,"name":"Resist","description":"In Blocking Stance you will receive less physical damage, and there is an additional chance that your rage will increase.\n([SC_SKILLTIPS_CD_1](Buff-Time-503572)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577775,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503572]}}],"icon":"/assets/ui/rom-spells/577775.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-60","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546738,"sourceSkillId":499491,"name":"Whirlwind Battle Technique","description":"Reduces your [499989|Whirlwind's] rage by 25 and cooldown time by 15 seconds. If a shield is equipped then it increases aggro.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801263,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499491,"name":"Whirlwind Battle Technique","description":"Reduces your [499989|Whirlwind's] rage by 25 and cooldown time by 15 seconds. If a shield is equipped then it increases aggro.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801263,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801263.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-70","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":70,"keyItemId":546739,"sourceSkillId":499492,"name":"Bullseye","description":"Makes your [499988] hits cause an additional Stun effect for (Buff-Time-622972) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801311,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622972],"components":[{"id":622972,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":2,"hateCost":0,"settingFlags":1342701634,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":499492,"name":"Bullseye","description":"Makes your [499988] hits cause an additional Stun effect for (Buff-Time-622972) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801311,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622972]}}],"icon":"/assets/ui/rom-spells/801311.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-15","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":15,"keyItemId":543016,"sourceSkillId":494031,"name":"Savage Strike","description":"Increases your [SC_SKILLTIPS_01] after you hit a target with a Surprise Attack.\n([SC_SKILLTIPS_CD_1](Buff-Time-506367)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579101,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506367],"components":[{"id":506367,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494031,"name":"Savage Strike","description":"Increases your [SC_SKILLTIPS_01] after you hit a target with a Surprise Attack.\n([SC_SKILLTIPS_CD_1](Buff-Time-506367)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579101,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506367]}}],"icon":"/assets/ui/rom-spells/579101.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-20","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":20,"keyItemId":543024,"sourceSkillId":494032,"name":"Attack Weakener","description":"Use when the target is Vulnerable to inflict (DMG0) main hand weapon DPS and reduce target's physical attack by (Buff4-0)% for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579102,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620346,504584,501520],"components":[{"id":620346,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504584,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501520,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494032,"name":"Attack Weakener","description":"Use when the target is Vulnerable to inflict (DMG0) main hand weapon DPS and reduce target's physical attack by (Buff4-0)% for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579102,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620346,504584,501520]}}],"icon":"/assets/ui/rom-spells/579102.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-25","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":25,"keyItemId":543032,"sourceSkillId":494033,"name":"Mental Bestiary","description":"Understand the structure of organisms, increasing the damage of your Slash attacks on vulnerable beasts and humanoid monsters.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579103,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494033,"name":"Mental Bestiary","description":"Understand the structure of organisms, increasing the damage of your Slash attacks on vulnerable beasts and humanoid monsters.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579103,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579103.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-30","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":30,"keyItemId":543040,"sourceSkillId":494324,"name":"Savage Whirlwind","description":"Harness primal natural forces to launch an attack. Inflicts (DMG0) main hand weapon DPS on target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579879,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503952],"components":[{"id":503952,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494324,"name":"Savage Whirlwind","description":"Harness primal natural forces to launch an attack. Inflicts (DMG0) main hand weapon DPS on target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579879,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503952]}}],"icon":"/assets/ui/rom-spells/579879.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-35","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":35,"keyItemId":543048,"sourceSkillId":494374,"name":"Wild Howl","description":"Upon hitting the target your Savage Whirlwind can temporary increase your own and your party members' [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG].\n([SC_SKILLTIPS_CD_1](Buff-Time-505168)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579880,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505168],"components":[{"id":505168,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494374,"name":"Wild Howl","description":"Upon hitting the target your Savage Whirlwind can temporary increase your own and your party members' [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG].\n([SC_SKILLTIPS_CD_1](Buff-Time-505168)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579880,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505168]}}],"icon":"/assets/ui/rom-spells/579880.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-40","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":40,"keyItemId":543056,"sourceSkillId":499495,"name":"Awakening of the Wild","description":"Renders you immune to Root and Slow effects for (Buff0-Time) seconds, and makes your next attack a critical attack.\n(Effect can only be removed if target has Movement Impairing Effect)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579881,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623004,623005],"components":[{"id":623004,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623005,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,64],"clearFlags":1057,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":499495,"name":"Awakening of the Wild","description":"Renders you immune to Root and Slow effects for (Buff0-Time) seconds, and makes your next attack a critical attack.\n(Effect can only be removed if target has Movement Impairing Effect)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579881,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623004,623005]}}],"icon":"/assets/ui/rom-spells/579881.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-45","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":45,"keyItemId":543064,"sourceSkillId":494624,"name":"Battle Creed","description":"Increases your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)% for (Buff0-Time) seconds. While the effect lasts, when you hit a target with Slash or Probing Attack, your attacks generate (Buff0-505845)% less aggro for (Buff-Time-505845) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-505846)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581098,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505208,505845,505846],"components":[{"id":505208,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505845,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":-15}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494972,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505846,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":494624,"name":"Battle Creed","description":"Increases your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)% for (Buff0-Time) seconds. While the effect lasts, when you hit a target with Slash or Probing Attack, your attacks generate (Buff0-505845)% less aggro for (Buff-Time-505845) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-505846)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581098,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505208,505845,505846]}}],"icon":"/assets/ui/rom-spells/581098.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-50","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543072,"sourceSkillId":494625,"name":"Air Tremor","description":"Coalesces the power within the surrounding atmosphere in your body and then releases it in an instant, inflicting (DMG0) main hand weapon DPS to all targets within a radius of 80.","target":"self","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581099,"sourceEffectType":1,"sourceTarget":0,"componentIds":[505209],"components":[{"id":505209,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494625,"name":"Air Tremor","description":"Coalesces the power within the surrounding atmosphere in your body and then releases it in an instant, inflicting (DMG0) main hand weapon DPS to all targets within a radius of 80.","target":"self","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581099,"sourceEffectType":1,"sourceTarget":0,"componentIds":[505209]}}],"icon":"/assets/ui/rom-spells/581099.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-60","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":60,"keyItemId":546740,"sourceSkillId":499493,"name":"Visceral Impact","description":"Makes your [499987] hits cause an additional reduction of [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801264,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499493,"name":"Visceral Impact","description":"Makes your [499987] hits cause an additional reduction of [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801264,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801264.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-70","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":70,"keyItemId":546741,"sourceSkillId":499494,"name":"Barbaric Execution","description":"Makes it possible for your [499986] hits to inflict an additional Stun effect for (Buff-Time-622974) seconds. The higher the level of [499986], the longer the effect works. Also increases critical hit rate by 50% against enemies with less than 30% HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801312,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622974],"components":[{"id":622974,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499494,"name":"Barbaric Execution","description":"Makes it possible for your [499986] hits to inflict an additional Stun effect for (Buff-Time-622974) seconds. The higher the level of [499986], the longer the effect works. Also increases critical hit rate by 50% against enemies with less than 30% HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801312,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622974]}}],"icon":"/assets/ui/rom-spells/801312.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-15","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543017,"sourceSkillId":494034,"name":"Rose Vine","description":"When the sharp rose vines entwine your weapon, your standard attacks cause your target to bleed, inflicting (Buff-Dot-504585) points of blood damage every 2 seconds for (Buff-Time-504585) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504712)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579104,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504543,504585,504712],"components":[{"id":504543,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"onAttackTrigger":{"rate":100,"rank":0,"id":495278},"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504585,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":1342185674,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494210,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":2,"dotType":0,"dotBase":-20,"dot":{"timeSeconds":2,"type":0,"base":-20,"skillLevelArg":10},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504712,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":268443648,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494034,"name":"Rose Vine","description":"When the sharp rose vines entwine your weapon, your standard attacks cause your target to bleed, inflicting (Buff-Dot-504585) points of blood damage every 2 seconds for (Buff-Time-504585) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504712)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579104,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504543,504585,504712]}}],"icon":"/assets/ui/rom-spells/579104.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-20","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":20,"keyItemId":543025,"sourceSkillId":494035,"name":"Tremor","description":"Use when target is Weakened to cause fierce tremors that inflict (DMG0) main hand weapon DPS. Each successful hit has a chance of reducing the target's [SC_SKILLTIPS_HIT] by (Buff4-0) points for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-506417)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579105,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504544,504586,502923,506417],"components":[{"id":504544,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504586,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":1073742018,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":16,"value":-6}],"abilitySkillLevelArg":12,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495409,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502923,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506417,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":494035,"name":"Tremor","description":"Use when target is Weakened to cause fierce tremors that inflict (DMG0) main hand weapon DPS. Each successful hit has a chance of reducing the target's [SC_SKILLTIPS_HIT] by (Buff4-0) points for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-506417)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579105,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504544,504586,502923,506417]}}],"icon":"/assets/ui/rom-spells/579105.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-25","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":25,"keyItemId":543033,"sourceSkillId":494036,"name":"Guardian's Pledge","description":"Temporarily increases you and your party members' [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0). Also raises [SC_SKILLTIPS_CRI_PASSIVE] by (Buff8-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579106,"sourceEffectType":1,"sourceTarget":0,"componentIds":[504545,506227,506228],"components":[{"id":504545,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":8,"value":40}],"abilitySkillLevelArg":22,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495287,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506227,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506228,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":182,"value":22}],"abilitySkillLevelArg":12.5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494036,"name":"Guardian's Pledge","description":"Temporarily increases you and your party members' [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0). Also raises [SC_SKILLTIPS_CRI_PASSIVE] by (Buff8-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579106,"sourceEffectType":1,"sourceTarget":0,"componentIds":[504545,506227,506228]}}],"icon":"/assets/ui/rom-spells/579106.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-30","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":30,"keyItemId":543041,"sourceSkillId":494325,"name":"Redemption","description":"When you use your Probing Attack, physical and magical accuracy for all party members in a range of 100 will be increased by (Buff0-620359) for (Buff-Time-620359) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579882,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620359],"components":[{"id":620359,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":32,"abilityModifiers":[{"type":16,"value":10},{"type":195,"value":10}],"abilitySkillLevelArg":46,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494340,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494325,"name":"Redemption","description":"When you use your Probing Attack, physical and magical accuracy for all party members in a range of 100 will be increased by (Buff0-620359) for (Buff-Time-620359) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579882,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620359]}}],"icon":"/assets/ui/rom-spells/579882.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-35","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":35,"keyItemId":543049,"sourceSkillId":494376,"name":"Remove Magic","description":"Cleanses harmful magical effects from your target.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579883,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504903],"components":[{"id":504903,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":494376,"name":"Remove Magic","description":"Cleanses harmful magical effects from your target.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579883,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504903]}}],"icon":"/assets/ui/rom-spells/579883.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-40","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":40,"keyItemId":543057,"sourceSkillId":494377,"name":"Recovery of Life","description":"Your Whirlwind's cooldown time is reduced by 10 seconds, and the required rage is reduced by 10. Upon hitting the target, rage requirement for the skill is immediately decreased.\n([SC_SKILLTIPS_CD_1](Buff-Time-506368)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579884,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506368],"components":[{"id":506368,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494377,"name":"Recovery of Life","description":"Your Whirlwind's cooldown time is reduced by 10 seconds, and the required rage is reduced by 10. Upon hitting the target, rage requirement for the skill is immediately decreased.\n([SC_SKILLTIPS_CD_1](Buff-Time-506368)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579884,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506368]}}],"icon":"/assets/ui/rom-spells/579884.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-45","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":45,"keyItemId":543065,"sourceSkillId":494626,"name":"Resistance","description":"When you are attacked when you have the Berserk buff active, you will be able to completely resist the next attack.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581100,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494626,"name":"Resistance","description":"When you are attacked when you have the Berserk buff active, you will be able to completely resist the next attack.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581100,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581100.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-50","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":50,"keyItemId":543073,"sourceSkillId":494627,"name":"Stifle","description":"When the target is Vulnerable and is not able to respond in time your attack will deal him (DMG0) main hand weapon DPS. Additionally the next 10 times physical damage is dealt to the target it will be increased by 20%. Starting with the first attack the Stifle effect will gradually decrease by 2% with the overall time span being (Buff-Time-505906) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581101,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505680,501520,505906],"components":[{"id":505680,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501520,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0},{"id":505906,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":32834,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":494627,"name":"Stifle","description":"When the target is Vulnerable and is not able to respond in time your attack will deal him (DMG0) main hand weapon DPS. Additionally the next 10 times physical damage is dealt to the target it will be increased by 20%. Starting with the first attack the Stifle effect will gradually decrease by 2% with the overall time span being (Buff-Time-505906) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581101,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505680,501520,505906]}}],"icon":"/assets/ui/rom-spells/581101.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-60","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546742,"sourceSkillId":499496,"name":"Revival Slash","description":"When targets are hit by your [499497], there is a chance that you will receive a [493528] effect. However, the healing effect is reduced. \n(Can't be re-triggered while [493528] is in effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801265,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499496,"name":"Revival Slash","description":"When targets are hit by your [499497], there is a chance that you will receive a [493528] effect. However, the healing effect is reduced. \n(Can't be re-triggered while [493528] is in effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801265,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801265.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-70","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":70,"keyItemId":546743,"sourceSkillId":499498,"name":"Irresistible Force","description":"When you use [499499] and a target is hit, there is a chance you will achieve a [499498] effect. This effect will increase your inflicted damage and lasts for (Buff-Time-623013) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-623014) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801313,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623013,623014],"components":[{"id":623013,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":2},{"type":205,"value":2}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623014,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499498,"name":"Irresistible Force","description":"When you use [499499] and a target is hit, there is a chance you will achieve a [499498] effect. This effect will increase your inflicted damage and lasts for (Buff-Time-623013) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-623014) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801313,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623013,623014]}}],"icon":"/assets/ui/rom-spells/801313.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-15","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":15,"keyItemId":545960,"sourceSkillId":498706,"name":"Rage Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If target is attacking you, the skill will increase your rage by (DMG4). If nothing is attacking then it will restore (DMG5) points of your focus. \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800120,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621447,621448,621449],"components":[{"id":621447,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621448,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":15,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":15,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621449,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":15,"fixedValue":0,"attack":{"type":3,"calculationType":4,"damagePower":15,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498706,"name":"Rage Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If target is attacking you, the skill will increase your rage by (DMG4). If nothing is attacking then it will restore (DMG5) points of your focus. \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800120,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621447,621448,621449]}}],"icon":"/assets/ui/rom-spells/800120.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-20","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":20,"keyItemId":545961,"sourceSkillId":498707,"name":"Psychic Whirlwind","description":"Inflicts (DMG0) main hand weapon physical DPS on targets nearby the designated target. If target is in a Weakened state, then skill will cause extra damage. \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800129,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621476,501577,621480,621478],"components":[{"id":621476,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621480,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621478,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498707,"name":"Psychic Whirlwind","description":"Inflicts (DMG0) main hand weapon physical DPS on targets nearby the designated target. If target is in a Weakened state, then skill will cause extra damage. \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800129,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621476,501577,621480,621478]}}],"icon":"/assets/ui/rom-spells/800129.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-25","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":25,"keyItemId":545962,"sourceSkillId":498734,"name":"Divine Battle Spirit","description":"Earns (Buff0-Dot) rage every second for (Buff0-Time). \n(Effect disappears after you cross the line or change areas.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800130,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621477],"components":[{"id":621477,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"clearFlags":1072,"abilitySkillLevelArg":0,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":5},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498734,"name":"Divine Battle Spirit","description":"Earns (Buff0-Dot) rage every second for (Buff0-Time). \n(Effect disappears after you cross the line or change areas.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800130,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621477]}}],"icon":"/assets/ui/rom-spells/800130.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-30","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":30,"keyItemId":545963,"sourceSkillId":498735,"name":"Psychic Battle Cry","description":"Earns Psychic Torrent state. \nWhen you use an elite skill that inflicts area damage, party members in the damage area will earn Spirit Shield Protection. This effect will resist an amount of damage equal to (Buff-Shield-621479)% of the caster's healing bonus for (Buff-Time-621479) seconds. Shield can be stacked a maximum of 3 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":8000},"source":{"imageId":800131,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621478,621479],"components":[{"id":621478,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621479,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":33123,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":4,"effect":0,"point":50,"skillLevelArg":100}}]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498735,"name":"Psychic Battle Cry","description":"Earns Psychic Torrent state. \nWhen you use an elite skill that inflicts area damage, party members in the damage area will earn Spirit Shield Protection. This effect will resist an amount of damage equal to (Buff-Shield-621479)% of the caster's healing bonus for (Buff-Time-621479) seconds. Shield can be stacked a maximum of 3 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":8000},"source":{"imageId":800131,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621478,621479]}}],"icon":"/assets/ui/rom-spells/800131.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-35","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":35,"keyItemId":545964,"sourceSkillId":498739,"name":"Psychic Ghost Step","description":"Charges the target and inflicts (DMG0) main hand weapon physical DPS on nearby targets. If Divine Battle Spirit is in effect then additional damage is inflicted on most targets. \n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800132,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621483,621484,621477,621480],"components":[{"id":621483,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.3,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621484,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4163,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.2,"fixedValue":0,"summonCreatureId":0},{"id":621477,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"clearFlags":1072,"abilitySkillLevelArg":0,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":5},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621480,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498739,"name":"Psychic Ghost Step","description":"Charges the target and inflicts (DMG0) main hand weapon physical DPS on nearby targets. If Divine Battle Spirit is in effect then additional damage is inflicted on most targets. \n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800132,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621483,621484,621477,621480]}}],"icon":"/assets/ui/rom-spells/800132.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-40","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":40,"keyItemId":545965,"sourceSkillId":498740,"name":"Spirit-Cracking Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target and carries a Spirit Wound state. Every 2 seconds, this state inflicts (Buff4-Dot) physical damage on the target and increases the caster's rage by (Buff8-Dot). Lasts for (Buff4-Time). \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800133,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621487,621488,621489],"components":[{"id":621487,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621488,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":45},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621489,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":75,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":2,"dotBase":4,"dot":{"timeSeconds":2,"type":2,"base":4,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498740,"name":"Spirit-Cracking Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target and carries a Spirit Wound state. Every 2 seconds, this state inflicts (Buff4-Dot) physical damage on the target and increases the caster's rage by (Buff8-Dot). Lasts for (Buff4-Time). \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800133,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621487,621488,621489]}}],"icon":"/assets/ui/rom-spells/800133.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-45","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":45,"keyItemId":545966,"sourceSkillId":498741,"name":"Lightning Spell","description":"Inflicts (DMG0) main hand weapon physical DPS on targets in range. Also increases [SC_SKILLTIPS_MOVE] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":7.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579904,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621490,621491,621480,621478],"components":[{"id":621490,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621491,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621480,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621478,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":498741,"name":"Lightning Spell","description":"Inflicts (DMG0) main hand weapon physical DPS on targets in range. Also increases [SC_SKILLTIPS_MOVE] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":7.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579904,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621490,621491,621480,621478]}}],"icon":"/assets/ui/rom-spells/579904.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-50","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":545967,"sourceSkillId":498742,"name":"Spirit Blade Storm","description":"Summons a Spirit Blade Storm that engulfs targets in range. Inflicts (DMG-621497) main hand weapon physical DPS for 6 seconds. Also reduces [SC_SKILLTIPS_MOVE] by (Buff0-621498)% for (Buff-Time-621498) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800204,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621496,621480,621478,621497,621498],"components":[{"id":621496,"magicFunc":6,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621480,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621478,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621497,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.2,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.2,"damagePowerSkillLevelArg":6.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621498,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498742,"name":"Spirit Blade Storm","description":"Summons a Spirit Blade Storm that engulfs targets in range. Inflicts (DMG-621497) main hand weapon physical DPS for 6 seconds. Also reduces [SC_SKILLTIPS_MOVE] by (Buff0-621498)% for (Buff-Time-621498) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800204,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621496,621480,621478,621497,621498]}}],"icon":"/assets/ui/rom-spells/800204.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-60","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":60,"keyItemId":546744,"sourceSkillId":499827,"name":"Speed Slash","description":"There is a chance that [499828] will reset the cooldown timer of [498739].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801614,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":499827,"name":"Speed Slash","description":"There is a chance that [499828] will reset the cooldown timer of [498739].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801614,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801614.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-70","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":70,"keyItemId":546745,"sourceSkillId":499806,"name":"Excellent Combat Training","description":"The cooldown time of [499825] is reduced to 10 seconds, and each time [499826] hits a target, the cooldown time of [498742] is reduced by 3 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801615,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499806,"name":"Excellent Combat Training","description":"The cooldown time of [499825] is reduced to 10 seconds, and each time [499826] hits a target, the cooldown time of [498742] is reduced by 3 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801615,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801615.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-15","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":541890,"sourceSkillId":491337,"name":"Battle Instinct","description":"Temporarily increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575220,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501821,506361],"components":[{"id":501821,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":6,"value":20}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495379,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506361,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":165,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491337,"name":"Battle Instinct","description":"Temporarily increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575220,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501821,506361]}}],"icon":"/assets/ui/rom-spells/575220.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-20","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":541920,"sourceSkillId":491488,"name":"Master of Survival","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575705,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501889,506369],"components":[{"id":501889,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":8,"value":50}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":506369,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":491488,"name":"Master of Survival","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575705,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501889,506369]}}],"icon":"/assets/ui/rom-spells/575705.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-25","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":541950,"sourceSkillId":491489,"name":"Enhanced Throat Attack","description":"Your Throat Attack can cause an additional 4 seconds of Silence to the target, and also increases the range of Throat Attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575575,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":491489,"name":"Enhanced Throat Attack","description":"Your Throat Attack can cause an additional 4 seconds of Silence to the target, and also increases the range of Throat Attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575575,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575575.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-30","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":541980,"sourceSkillId":491491,"name":"Mental Focus","description":"Recovers (Buff0-Dot) focus points every 5 seconds for a total of (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575704,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501892],"components":[{"id":501892,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":120,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":40,"abilitySkillLevelArg":5,"dotTime":5,"dotType":3,"dotBase":5,"dot":{"timeSeconds":5,"type":3,"base":5,"skillLevelArg":11.2},"attackType":3,"damagePower":5,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":491491,"name":"Mental Focus","description":"Recovers (Buff0-Dot) focus points every 5 seconds for a total of (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575704,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501892]}}],"icon":"/assets/ui/rom-spells/575704.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-35","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542011,"sourceSkillId":492620,"name":"Target Lock","description":"Physical damage received by the target is increased by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576995,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502920],"components":[{"id":502920,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":492620,"name":"Target Lock","description":"Physical damage received by the target is increased by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576995,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502920]}}],"icon":"/assets/ui/rom-spells/576995.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-40","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":40,"keyItemId":542041,"sourceSkillId":492915,"name":"Gale","description":"Increases damage of Combo Shot and prevents you from being interrupted by an attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577578,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492915,"name":"Gale","description":"Increases damage of Combo Shot and prevents you from being interrupted by an attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577578,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577578.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-45","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":542071,"sourceSkillId":493006,"name":"Accurate Targeting","description":"When your Shot hits a target, it instantly increases your [SC_SKILLTIPS_01]. Effective for (Buff-Time-503255) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503254)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577646,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503255,503254],"components":[{"id":503255,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":12,"value":50}],"abilitySkillLevelArg":11,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493054,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"summonCreatureId":0},{"id":503254,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":493006,"name":"Accurate Targeting","description":"When your Shot hits a target, it instantly increases your [SC_SKILLTIPS_01]. Effective for (Buff-Time-503255) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503254)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577646,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503255,503254]}}],"icon":"/assets/ui/rom-spells/577646.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-50","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":542101,"sourceSkillId":493252,"name":"Recover Vitality","description":"Upon hitting a target with Snipe or Piercing Arrow, there is an additional chance that you will gain rage points. Also, upon hitting a target with Snipe, there is an additional chance of canceling beneficial effects on the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577776,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":493252,"name":"Recover Vitality","description":"Upon hitting a target with Snipe or Piercing Arrow, there is an additional chance that you will gain rage points. Also, upon hitting a target with Snipe, there is an additional chance of canceling beneficial effects on the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577776,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577776.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-60","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546748,"sourceSkillId":499511,"name":"Vital Reflection","description":"Increases damage inflicted by your [499512] on targets that have less than 30% HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801266,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499511,"name":"Vital Reflection","description":"Increases damage inflicted by your [499512] on targets that have less than 30% HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801266,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801266.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-70","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546749,"sourceSkillId":499513,"name":"Breathing Obstruction","description":"If a target uses a skill in the time allotted after being hit by your [490442], then that skills cooldown time will be increased by an extra (Buff-Time-623057) seconds. If the skill doesn't have a cooldown time then the cooldown times for all skills will be (Buff-Time-623060) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801382,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623057,623060],"components":[{"id":623057,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623060,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499513,"name":"Breathing Obstruction","description":"If a target uses a skill in the time allotted after being hit by your [490442], then that skills cooldown time will be increased by an extra (Buff-Time-623057) seconds. If the skill doesn't have a cooldown time then the cooldown times for all skills will be (Buff-Time-623060) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801382,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623057,623060]}}],"icon":"/assets/ui/rom-spells/801382.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-15","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":541891,"sourceSkillId":491493,"name":"Weak Spot","description":"Aiming at the target's weak spot inflicts (DMG0) ranged weapon DPS. Also increases your [SC_SKILLTIPS_CRI] by (Buff4-0) for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575572,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501894,501895],"components":[{"id":501894,"magicFunc":0,"magicType":4,"effectType":1,"effectTime":-1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":34,"abilityModifiers":[{"type":18,"value":5}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501895,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":34,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":491493,"name":"Weak Spot","description":"Aiming at the target's weak spot inflicts (DMG0) ranged weapon DPS. Also increases your [SC_SKILLTIPS_CRI] by (Buff4-0) for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575572,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501894,501895]}}],"icon":"/assets/ui/rom-spells/575572.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-20","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":541921,"sourceSkillId":491336,"name":"Blinding Powder","description":"Prevents your target from attacking for (Buff0-Time) seconds. \n(For players this effect lasts for (Buff1-Time) seconds.)\n(Effect will be removed when target is attacked)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575219,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501820,503840,502719],"components":[{"id":501820,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":126,"effectFlagWords":[2099,0],"clearFlags":2,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503840,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[51,0],"clearFlags":2,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":491336,"name":"Blinding Powder","description":"Prevents your target from attacking for (Buff0-Time) seconds. \n(For players this effect lasts for (Buff1-Time) seconds.)\n(Effect will be removed when target is attacked)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575219,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501820,503840,502719]}}],"icon":"/assets/ui/rom-spells/575219.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-25","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":541951,"sourceSkillId":492342,"name":"Lasso Master","description":"Your lasso now hinders the target from movement and attacks.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575561,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":492342,"name":"Lasso Master","description":"Your lasso now hinders the target from movement and attacks.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575561,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575561.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-30","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":541981,"sourceSkillId":491496,"name":"Sapping Arrow","description":"Decreases the target's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575576,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501897],"components":[{"id":501897,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":170,"value":-1},{"type":135,"value":-1}],"abilitySkillLevelArg":28,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":491496,"name":"Sapping Arrow","description":"Decreases the target's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575576,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501897]}}],"icon":"/assets/ui/rom-spells/575576.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-35","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542012,"sourceSkillId":492621,"name":"Deadly Poison Bite","description":"The deadly poison on your arrow inflicts (DMG0) ranged weapon DPS. When the target is under the effect of [501690], Deadly Poison Bite will also cause (DMG4) ranged weapon DPS.","target":"hostile","range":16,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576996,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502890,620183,501690],"components":[{"id":502890,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620183,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.4,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501690,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":492621,"name":"Deadly Poison Bite","description":"The deadly poison on your arrow inflicts (DMG0) ranged weapon DPS. When the target is under the effect of [501690], Deadly Poison Bite will also cause (DMG4) ranged weapon DPS.","target":"hostile","range":16,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576996,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502890,620183,501690]}}],"icon":"/assets/ui/rom-spells/576996.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-40","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":40,"keyItemId":542042,"sourceSkillId":492916,"name":"Exploiting Shot","description":"When your Shot makes a critical hit, you increase your targets received Physical Damage by (Buff0-503169)%. Lasts (Buff-Time-503169) seconds. \n(This skill increases the target's received Physical Damage by a maximum of (Max-Buff0-503169)%.)\n([SC_SKILLTIPS_CD_1](Buff-Time-503453)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577579,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503169,503453],"components":[{"id":503169,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":1342177506,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":-2}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493245,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503453,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":492916,"name":"Exploiting Shot","description":"When your Shot makes a critical hit, you increase your targets received Physical Damage by (Buff0-503169)%. Lasts (Buff-Time-503169) seconds. \n(This skill increases the target's received Physical Damage by a maximum of (Max-Buff0-503169)%.)\n([SC_SKILLTIPS_CD_1](Buff-Time-503453)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577579,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503169,503453]}}],"icon":"/assets/ui/rom-spells/577579.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-45","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":542072,"sourceSkillId":493007,"name":"Deadly Counterattack","description":"When your Piercing Arrow hits the target, it instantly increases your [SC_SKILLTIPS_CRI].\n([SC_SKILLTIPS_CD_1](Buff-Time-503299)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577647,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503299],"components":[{"id":503299,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":-20,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":493007,"name":"Deadly Counterattack","description":"When your Piercing Arrow hits the target, it instantly increases your [SC_SKILLTIPS_CRI].\n([SC_SKILLTIPS_CD_1](Buff-Time-503299)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577647,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503299]}}],"icon":"/assets/ui/rom-spells/577647.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-50","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":50,"keyItemId":542102,"sourceSkillId":493253,"name":"Poisonous Spit","description":"Keeps your Reflected Shot from losing reflective damage. Also, with every successful hit of your Reflected Shot or Combo Shot, the target will be poisoned if you are carrying Poison Powder.\n([SC_SKILLTIPS_CD_1](Buff-Time-503521)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577777,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503521],"components":[{"id":503521,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":493253,"name":"Poisonous Spit","description":"Keeps your Reflected Shot from losing reflective damage. Also, with every successful hit of your Reflected Shot or Combo Shot, the target will be poisoned if you are carrying Poison Powder.\n([SC_SKILLTIPS_CD_1](Buff-Time-503521)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577777,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503521]}}],"icon":"/assets/ui/rom-spells/577777.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-60","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546750,"sourceSkillId":499534,"name":"Master Reflected Shot","description":"Makes your [499535] fire 2 additional shots. Also increases damage from each [499535].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801267,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499534,"name":"Master Reflected Shot","description":"Makes your [499535] fire 2 additional shots. Also increases damage from each [499535].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801267,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801267.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-70","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546751,"sourceSkillId":499536,"name":"Meridian Attack","description":"Makes your [499537] cause an additional decrease in the target's [SC_SKILLTIPS_MDMG]. Also prolongs the effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801315,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499536,"name":"Meridian Attack","description":"Makes your [499537] cause an additional decrease in the target's [SC_SKILLTIPS_MDMG]. Also prolongs the effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801315,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801315.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-15","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541892,"sourceSkillId":491507,"name":"Purifying Arrow","description":"Removes curses and harmful effects from target.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575564,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501908],"components":[{"id":501908,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-5,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491507,"name":"Purifying Arrow","description":"Removes curses and harmful effects from target.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575564,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501908]}}],"icon":"/assets/ui/rom-spells/575564.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-20","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":541922,"sourceSkillId":499538,"name":"Blazing Energy","description":"When activated, power of your Fire based spells increases by (Buff0-0)% and area damage increases by (Buff0-1)%. This effect lasts (Buff0-Time) seconds. If you shoot while this is in effect, there is a chance of casting Fireball automatically.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575706,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501907],"components":[{"id":501907,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":47,"value":2},{"type":208,"value":3}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-5,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":499538,"name":"Blazing Energy","description":"When activated, power of your Fire based spells increases by (Buff0-0)% and area damage increases by (Buff0-1)%. This effect lasts (Buff0-Time) seconds. If you shoot while this is in effect, there is a chance of casting Fireball automatically.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575706,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501907]}}],"icon":"/assets/ui/rom-spells/575706.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-25","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":541952,"sourceSkillId":491509,"name":"Ignite","description":"Inflicts ((DMG0), based on the DPS of the ranged weapon, + (FixDMG-501910) x intelligence) [SC_SKILLTIPS_FLAME] to multiple targets within range.\n\n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575699,"sourceEffectType":0,"sourceTarget":16,"componentIds":[501910],"components":[{"id":501910,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.35,"fixedValue":-0.2,"attack":{"type":0,"calculationType":3,"damagePower":-0.35,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491509,"name":"Ignite","description":"Inflicts ((DMG0), based on the DPS of the ranged weapon, + (FixDMG-501910) x intelligence) [SC_SKILLTIPS_FLAME] to multiple targets within range.\n\n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575699,"sourceEffectType":0,"sourceTarget":16,"componentIds":[501910]}}],"icon":"/assets/ui/rom-spells/575699.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-30","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":541982,"sourceSkillId":491510,"name":"Gone with the Wind","description":"Wind magic makes the caster invisible for (Buff0-Time) seconds, clearing aggro and ending combat.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":575709,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501909,501567],"components":[{"id":501909,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501567,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":16,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491510,"name":"Gone with the Wind","description":"Wind magic makes the caster invisible for (Buff0-Time) seconds, clearing aggro and ending combat.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":575709,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501909,501567]}}],"icon":"/assets/ui/rom-spells/575709.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-35","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":35,"keyItemId":542013,"sourceSkillId":492623,"name":"Cursed Arrow","description":"Puts a poisonous curse on your arrow to inflict (DMG0) damage on the target, based on the DPS of the ranged weapon. After a hit, Healing effects on the target are reduced by (Buff4-0)% for (Buff4-Time) seconds.\n(Received healing of players is reduced by (Buff5-0)% for (Buff5-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50] \n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576997,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502880,502892,504248],"components":[{"id":502880,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502892,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504248,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":492623,"name":"Cursed Arrow","description":"Puts a poisonous curse on your arrow to inflict (DMG0) damage on the target, based on the DPS of the ranged weapon. After a hit, Healing effects on the target are reduced by (Buff4-0)% for (Buff4-Time) seconds.\n(Received healing of players is reduced by (Buff5-0)% for (Buff5-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50] \n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576997,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502880,502892,504248]}}],"icon":"/assets/ui/rom-spells/576997.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-40","classId":"rom-scout","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":542043,"sourceSkillId":492918,"name":"Prairie Fire","description":"Increases damage of Ignite and has a chance of triggering Root on your opponent.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577581,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":492918,"name":"Prairie Fire","description":"Increases damage of Ignite and has a chance of triggering Root on your opponent.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577581,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577581.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-45","classId":"rom-scout","secondaryClassId":"rom-mage","group":"passive","unlockLevel":45,"keyItemId":542073,"sourceSkillId":493013,"name":"Wilderness Campaign","description":"When your Combo Shot makes a successful hit, it instantly increases the [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] of all nearby party members.\n([SC_SKILLTIPS_CD_1](Buff-Time-503292)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577648,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503292],"components":[{"id":503292,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":493013,"name":"Wilderness Campaign","description":"When your Combo Shot makes a successful hit, it instantly increases the [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] of all nearby party members.\n([SC_SKILLTIPS_CD_1](Buff-Time-503292)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577648,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503292]}}],"icon":"/assets/ui/rom-spells/577648.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-50","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":542103,"sourceSkillId":493255,"name":"Aggro Transfer","description":"Using Shot while Aggro Transfer is in effect triggers Secret Hatred, which lasts for (Buff-Time-503574) seconds. While Secret Hatred is in effect, you can transfer your aggro to a party member through the power of the wind.\nAggro Transfer is in effect for (Buff0-Time) seconds, during this time this party member will receive (Buff0-Dot) MP every 2 seconds. \n(In order to transfer aggro to a party member your target needs to be within a range of 500.)\n(Cannot be cast on yourself.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577778,"sourceEffectType":0,"sourceTarget":1,"componentIds":[501912,501911,503574],"components":[{"id":501912,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1048683,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":1,"dotBase":3,"dot":{"timeSeconds":2,"type":1,"base":3,"skillLevelArg":30},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501911,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503574,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":-100,"settingFlags":268435651,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1073741824,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":491512,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":493255,"name":"Aggro Transfer","description":"Using Shot while Aggro Transfer is in effect triggers Secret Hatred, which lasts for (Buff-Time-503574) seconds. While Secret Hatred is in effect, you can transfer your aggro to a party member through the power of the wind.\nAggro Transfer is in effect for (Buff0-Time) seconds, during this time this party member will receive (Buff0-Dot) MP every 2 seconds. \n(In order to transfer aggro to a party member your target needs to be within a range of 500.)\n(Cannot be cast on yourself.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577778,"sourceEffectType":0,"sourceTarget":1,"componentIds":[501912,501911,503574]}}],"icon":"/assets/ui/rom-spells/577778.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-60","classId":"rom-scout","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546752,"sourceSkillId":499539,"name":"Cross-Domain Discipline","description":"Allows you to equip a staff. When hitting a target with your [499540], there is a chance that it will carry ((DMG-623064) + (FixDMG-623064) * INT) wind damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801268,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623062,623064],"components":[{"id":623062,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":91,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623064,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499539,"name":"Cross-Domain Discipline","description":"Allows you to equip a staff. When hitting a target with your [499540], there is a chance that it will carry ((DMG-623064) + (FixDMG-623064) * INT) wind damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801268,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623062,623064]}}],"icon":"/assets/ui/rom-spells/801268.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-70","classId":"rom-scout","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546753,"sourceSkillId":499548,"name":"Wind Return","description":"Earns you a [499548] effect after your [499549] effect wears off. Increases [SC_SKILLTIPS_01] by (Buff0-623070)% and [SC_SKILLTIPS_02] by (Buff1-623070)%. Also recovers (Buff-Dot-623083) HP every two seconds. Lasts (Buff-Time-623070) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801316,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623070,623083],"components":[{"id":623070,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1},{"type":171,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623083,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":20,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499548,"name":"Wind Return","description":"Earns you a [499548] effect after your [499549] effect wears off. Increases [SC_SKILLTIPS_01] by (Buff0-623070)% and [SC_SKILLTIPS_02] by (Buff1-623070)%. Also recovers (Buff-Dot-623083) HP every two seconds. Lasts (Buff-Time-623070) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801316,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623070,623083]}}],"icon":"/assets/ui/rom-spells/801316.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-15","classId":"rom-scout","secondaryClassId":"rom-priest","group":"elite","unlockLevel":15,"keyItemId":541893,"sourceSkillId":491504,"name":"Purifying Shot","description":"Removes harmful effects from target.","target":"friendly","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575574,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501904],"components":[{"id":501904,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":-30,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491504,"name":"Purifying Shot","description":"Removes harmful effects from target.","target":"friendly","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575574,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501904]}}],"icon":"/assets/ui/rom-spells/575574.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-20","classId":"rom-scout","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":541923,"sourceSkillId":491513,"name":"Mana Arrows","description":"Casting Mana Arrow to the party members of your range of 50 absorbs all damage equal to (Buff0-Shield)% of the targets' max HP for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":575562,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620186],"components":[{"id":620186,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":5,"skillLevelArg":3}}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":491513,"name":"Mana Arrows","description":"Casting Mana Arrow to the party members of your range of 50 absorbs all damage equal to (Buff0-Shield)% of the targets' max HP for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":575562,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620186]}}],"icon":"/assets/ui/rom-spells/575562.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-25","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":25,"keyItemId":541953,"sourceSkillId":492344,"name":"Sniper","description":"Reduces casting time of Snipe by 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575563,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":492344,"name":"Sniper","description":"Reduces casting time of Snipe by 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575563,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575563.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-30","classId":"rom-scout","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":541983,"sourceSkillId":491335,"name":"Spiritual Leader","description":"Raises the speed of physical attacks and spell casting of you and your party members by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":30,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575218,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501819],"components":[{"id":501819,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":25,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":9,"abilityModifiers":[{"type":23,"value":-2},{"type":51,"value":-2}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":491335,"name":"Spiritual Leader","description":"Raises the speed of physical attacks and spell casting of you and your party members by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":30,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575218,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501819]}}],"icon":"/assets/ui/rom-spells/575218.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-35","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":542014,"sourceSkillId":492622,"name":"Vampiric Transformation","description":"Transforms the blood drawn by your Vampire Arrows into heals for your own group members.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576998,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":492622,"name":"Vampiric Transformation","description":"Transforms the blood drawn by your Vampire Arrows into heals for your own group members.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576998,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/576998.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-40","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":40,"keyItemId":542044,"sourceSkillId":492917,"name":"Target Neck","description":"Extends the range of your Neck Strike, but requires long range weapons.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577582,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":492917,"name":"Target Neck","description":"Extends the range of your Neck Strike, but requires long range weapons.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577582,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577582.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-45","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542074,"sourceSkillId":493010,"name":"Drums of War","description":"Each time you hit your target with a Shot, it instantly increases the [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] of party members near you. Effective for (Buff-Time-503258) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503310)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577649,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503258,503310],"components":[{"id":503258,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":1342177379,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20},{"type":20,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503310,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":493010,"name":"Drums of War","description":"Each time you hit your target with a Shot, it instantly increases the [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] of party members near you. Effective for (Buff-Time-503258) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503310)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577649,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503258,503310]}}],"icon":"/assets/ui/rom-spells/577649.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-50","classId":"rom-scout","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":542104,"sourceSkillId":493254,"name":"Aggro Lead","description":"Using Shot while Aggro Lead is in effect triggers Secret Hatred, which lasts for (Buff-Time-503574) seconds. While Secret Hatred is in effect, you can transfer your aggro to a party member through the power of the wind.\nAggro Lead is in effect for (Buff0-Time) seconds, during this time [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] suffered by this party member are decreased by (Buff0-0)%. (Cannot be cast on yourself.)\n(In order to transfer aggro to a party member your target needs to be within a range of 500.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577779,"sourceEffectType":0,"sourceTarget":1,"componentIds":[501901,509801,501900,503574],"components":[{"id":501901,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":2},{"type":142,"value":0}],"abilitySkillLevelArg":8,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509801,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":268959969,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":0},{"type":142,"value":2}],"abilitySkillLevelArg":8,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501900,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503574,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":-100,"settingFlags":268435651,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1073741824,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":491512,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":493254,"name":"Aggro Lead","description":"Using Shot while Aggro Lead is in effect triggers Secret Hatred, which lasts for (Buff-Time-503574) seconds. While Secret Hatred is in effect, you can transfer your aggro to a party member through the power of the wind.\nAggro Lead is in effect for (Buff0-Time) seconds, during this time [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] suffered by this party member are decreased by (Buff0-0)%. (Cannot be cast on yourself.)\n(In order to transfer aggro to a party member your target needs to be within a range of 500.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577779,"sourceEffectType":0,"sourceTarget":1,"componentIds":[501901,509801,501900,503574]}}],"icon":"/assets/ui/rom-spells/577779.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-60","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":60,"keyItemId":546754,"sourceSkillId":499552,"name":"Revival Engraving","description":"Increases your companions' [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-623087)%, reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MDMG] by (Buff1-623087)% after a target is hit by your [490443]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801269,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623087],"components":[{"id":623087,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":144,"value":3},{"type":142,"value":3},{"type":143,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499552,"name":"Revival Engraving","description":"Increases your companions' [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-623087)%, reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MDMG] by (Buff1-623087)% after a target is hit by your [490443]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801269,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623087]}}],"icon":"/assets/ui/rom-spells/801269.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-70","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546755,"sourceSkillId":499555,"name":"Screen Attack","description":"Causes an additional (Buff0-623089)% increase in damage inflicted by your and your friendly targets' [499578]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801317,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623089],"components":[{"id":623089,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":2},{"type":192,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499555,"name":"Screen Attack","description":"Causes an additional (Buff0-623089)% increase in damage inflicted by your and your friendly targets' [499578]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801317,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623089]}}],"icon":"/assets/ui/rom-spells/801317.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-15","classId":"rom-scout","secondaryClassId":"rom-knight","group":"elite","unlockLevel":15,"keyItemId":541894,"sourceSkillId":491516,"name":"Repelling Arrow","description":"Repelling your target Roots it for (Buff4-Time) seconds and inflicts (DMG0) ranged weapon DPS.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575573,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502016,502013,503847],"components":[{"id":502016,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":2,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502013,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilityModifiers":[{"type":0,"value":-60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503847,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilityModifiers":[{"type":0,"value":-60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":491516,"name":"Repelling Arrow","description":"Repelling your target Roots it for (Buff4-Time) seconds and inflicts (DMG0) ranged weapon DPS.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575573,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502016,502013,503847]}}],"icon":"/assets/ui/rom-spells/575573.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-20","classId":"rom-scout","secondaryClassId":"rom-knight","group":"elite","unlockLevel":20,"keyItemId":541924,"sourceSkillId":499558,"name":"Healing Shot","description":"Fires one Shot at the target causing (DMG0) ranged weapon DPS. When it hits, it will also heal the party member with the lowest maximum HP by (DMG-501888) + (FixDMG-501888) x (ranged weapon damage).","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575703,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620194,623090,501888],"components":[{"id":620194,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623090,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501888,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":23,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0.2,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":18,"fixedValue":0.2,"fixedType":3,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":499558,"name":"Healing Shot","description":"Fires one Shot at the target causing (DMG0) ranged weapon DPS. When it hits, it will also heal the party member with the lowest maximum HP by (DMG-501888) + (FixDMG-501888) x (ranged weapon damage).","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575703,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620194,623090,501888]}}],"icon":"/assets/ui/rom-spells/575703.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-25","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":25,"keyItemId":541954,"sourceSkillId":492346,"name":"Enhanced Armor Perfection","description":"Enhanced Armor now lasts (Buff-Time-501823) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575568,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501823],"components":[{"id":501823,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":2,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":492346,"name":"Enhanced Armor Perfection","description":"Enhanced Armor now lasts (Buff-Time-501823) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575568,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501823]}}],"icon":"/assets/ui/rom-spells/575568.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-30","classId":"rom-scout","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541984,"sourceSkillId":491519,"name":"Mana Conversion","description":"Converts mana into (DMG0) focus points.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":5,"percentage":true},{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575701,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502019],"components":[{"id":502019,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":10,"fixedValue":0,"attack":{"type":3,"calculationType":4,"damagePower":10,"damagePowerSkillLevelArg":18,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491519,"name":"Mana Conversion","description":"Converts mana into (DMG0) focus points.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":5,"percentage":true},{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575701,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502019]}}],"icon":"/assets/ui/rom-spells/575701.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-35","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":35,"keyItemId":542015,"sourceSkillId":492624,"name":"Mana Recovery","description":"Gives your Healing Shots an additional chance of recovering mana.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576999,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492624,"name":"Mana Recovery","description":"Gives your Healing Shots an additional chance of recovering mana.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576999,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/576999.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-40","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":40,"keyItemId":542045,"sourceSkillId":490431,"name":"Armor-Piercing Arrow","description":"Extends the range of your Disarmament. The damage caused is increased according to the DPS of the ranged weapon. (Requires ranged weapon.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577583,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":490431,"name":"Armor-Piercing Arrow","description":"Extends the range of your Disarmament. The damage caused is increased according to the DPS of the ranged weapon. (Requires ranged weapon.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577583,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577583.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-45","classId":"rom-scout","secondaryClassId":"rom-knight","group":"elite","unlockLevel":45,"keyItemId":542075,"sourceSkillId":493016,"name":"Escape Danger","description":"For (Buff0-Time) seconds you are immune against Helpless, Stun, Root, and Slow effects.\n(Effect can only be removed if target has Movement Impairing Effect or Stun)\n[SC_SKILLTIPS_FEAR]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577650,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503261],"components":[{"id":503261,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493016,"name":"Escape Danger","description":"For (Buff0-Time) seconds you are immune against Helpless, Stun, Root, and Slow effects.\n(Effect can only be removed if target has Movement Impairing Effect or Stun)\n[SC_SKILLTIPS_FEAR]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577650,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503261]}}],"icon":"/assets/ui/rom-spells/577650.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-50","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":50,"keyItemId":542105,"sourceSkillId":493256,"name":"Spirit Meld","description":"Keeps your Reflected Shots from losing reflective damage. Also, with every successful hit of your Reflected Shot, it boosts the [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] of party members within a radius of 100.\n([SC_SKILLTIPS_CD_1](Buff-Time-503563)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577780,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503563],"components":[{"id":503563,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493256,"name":"Spirit Meld","description":"Keeps your Reflected Shots from losing reflective damage. Also, with every successful hit of your Reflected Shot, it boosts the [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] of party members within a radius of 100.\n([SC_SKILLTIPS_CD_1](Buff-Time-503563)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577780,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503563]}}],"icon":"/assets/ui/rom-spells/577780.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-60","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546756,"sourceSkillId":499561,"name":"Blessed Quiver","description":"Reduces your [499562] cooldown time by 4 seconds. Also increases your [499562] critical hit rate. When your [499562] is a critical attack, it will definitely trigger a [492624].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801270,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499561,"name":"Blessed Quiver","description":"Reduces your [499562] cooldown time by 4 seconds. Also increases your [499562] critical hit rate. When your [499562] is a critical attack, it will definitely trigger a [492624].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801270,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801270.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-70","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":70,"keyItemId":546757,"sourceSkillId":499564,"name":"Transformation Torrent","description":"When you use [499565], it affects all companions in a range of 90 by recovering Energy, Rage, and Focus.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801318,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":499564,"name":"Transformation Torrent","description":"When you use [499565], it affects all companions in a range of 90 by recovering Energy, Rage, and Focus.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801318,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801318.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-15","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":15,"keyItemId":543018,"sourceSkillId":494037,"name":"Thorn Arrow","description":"Use it when you have a Briar Shield to turn the thorns that surround you into thorn arrows that attack your target inflicting (DMG0) ranged weapon DPS. (The Briar Shield will not disappear.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579107,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504546],"components":[{"id":504546,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.8,"damagePowerSkillLevelArg":5.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494037,"name":"Thorn Arrow","description":"Use it when you have a Briar Shield to turn the thorns that surround you into thorn arrows that attack your target inflicting (DMG0) ranged weapon DPS. (The Briar Shield will not disappear.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579107,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504546]}}],"icon":"/assets/ui/rom-spells/579107.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-20","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":20,"keyItemId":543026,"sourceSkillId":494038,"name":"Entling Offering","description":"For (Buff0-Time) seconds, each time your Shot hits a target, the target will also take ranged damage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579108,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504547],"components":[{"id":504547,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494038,"name":"Entling Offering","description":"For (Buff0-Time) seconds, each time your Shot hits a target, the target will also take ranged damage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579108,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504547]}}],"icon":"/assets/ui/rom-spells/579108.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-25","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":25,"keyItemId":543034,"sourceSkillId":494039,"name":"Hidden Peril","description":"You attack your target using the forest for cover, inflicting (DMG0) ranged weapon DPS on the target. There is a chance of reducing the casting time of Snipe to 1 second the next time you cast it.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579109,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504548,504588],"components":[{"id":504548,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504588,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494039,"name":"Hidden Peril","description":"You attack your target using the forest for cover, inflicting (DMG0) ranged weapon DPS on the target. There is a chance of reducing the casting time of Snipe to 1 second the next time you cast it.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579109,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504548,504588]}}],"icon":"/assets/ui/rom-spells/579109.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-30","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":30,"keyItemId":543042,"sourceSkillId":494326,"name":"Charged Power","description":"Your Charged Chop can be activated from a distance, but cooldown is changed to 15 seconds and it also causes a Knockdown effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579885,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494326,"name":"Charged Power","description":"Your Charged Chop can be activated from a distance, but cooldown is changed to 15 seconds and it also causes a Knockdown effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579885,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579885.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-35","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":35,"keyItemId":543050,"sourceSkillId":494378,"name":"Natural Care","description":"Permanently increases the amount of healing you receive by (Buff0-0)%, and also increases your ranged weapon damage by (Buff4-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579886,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504905,505169],"components":[{"id":504905,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":144,"value":1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505169,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":52,"value":1}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494378,"name":"Natural Care","description":"Permanently increases the amount of healing you receive by (Buff0-0)%, and also increases your ranged weapon damage by (Buff4-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579886,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504905,505169]}}],"icon":"/assets/ui/rom-spells/579886.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-40","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":40,"keyItemId":543058,"sourceSkillId":494379,"name":"Hide Scent","description":"While merged with your surrounding, all enemies will lose interest in you allowing you to leave combat for (Buff0-Time) seconds and erasing all aggro. Additionally, your next Hidden Peril damage is increased by (Buff0-505194)% for (Buff4-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":579887,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504906,505193,501567,505194],"components":[{"id":504906,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505193,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501567,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":16,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505194,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":8193,"abilityModifiers":[{"type":173,"value":20}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":494379,"name":"Hide Scent","description":"While merged with your surrounding, all enemies will lose interest in you allowing you to leave combat for (Buff0-Time) seconds and erasing all aggro. Additionally, your next Hidden Peril damage is increased by (Buff0-505194)% for (Buff4-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":579887,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504906,505193,501567,505194]}}],"icon":"/assets/ui/rom-spells/579887.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-45","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":45,"keyItemId":543066,"sourceSkillId":494628,"name":"Wind Attack","description":"Your Combo Shots cannot be interrupted by damage. Also, when you make a critical hit it will additionally decrease the target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE].\n([SC_SKILLTIPS_CD_1](Buff-Time-507327)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581102,"sourceEffectType":2,"sourceTarget":0,"componentIds":[507327],"components":[{"id":507327,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":494628,"name":"Wind Attack","description":"Your Combo Shots cannot be interrupted by damage. Also, when you make a critical hit it will additionally decrease the target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE].\n([SC_SKILLTIPS_CD_1](Buff-Time-507327)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581102,"sourceEffectType":2,"sourceTarget":0,"componentIds":[507327]}}],"icon":"/assets/ui/rom-spells/581102.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-50","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543074,"sourceSkillId":494629,"name":"Gryphon Bash","description":"Like a mighty gryphon using its sharp claws to attack an enemy, it shoots a fierce arrow, causing (DMG0) ranged weapon DPS. When the target is struck, it may also damage all targets within a radius of 80.\n(This skill has a fairly high chance to make a critical hit.)","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581103,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620195],"components":[{"id":620195,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":10,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494629,"name":"Gryphon Bash","description":"Like a mighty gryphon using its sharp claws to attack an enemy, it shoots a fierce arrow, causing (DMG0) ranged weapon DPS. When the target is struck, it may also damage all targets within a radius of 80.\n(This skill has a fairly high chance to make a critical hit.)","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581103,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620195]}}],"icon":"/assets/ui/rom-spells/581103.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-60","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":60,"keyItemId":546758,"sourceSkillId":499571,"name":"Deep Roots","description":"Increases the distance of your [499573] reflected shot to 180. Also each reflected shot has a a chance to root the enemy for (Buff-Time-623114) seconds. \n(When the reflected shot target is a player, the rooting effect is reduced.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801271,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623114],"components":[{"id":623114,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499571,"name":"Deep Roots","description":"Increases the distance of your [499573] reflected shot to 180. Also each reflected shot has a a chance to root the enemy for (Buff-Time-623114) seconds. \n(When the reflected shot target is a player, the rooting effect is reduced.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801271,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623114]}}],"icon":"/assets/ui/rom-spells/801271.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-70","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":70,"keyItemId":546759,"sourceSkillId":499575,"name":"Forest Guidance","description":"When a target is hit by your [499576], it causes a (Buff0-623117)% increase in [SC_SKILLTIPS_DMG] received by the enemy. Lasts for (Buff-Time-623117) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801319,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623117],"components":[{"id":623117,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":143,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499575,"name":"Forest Guidance","description":"When a target is hit by your [499576], it causes a (Buff0-623117)% increase in [SC_SKILLTIPS_DMG] received by the enemy. Lasts for (Buff-Time-623117) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801319,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623117]}}],"icon":"/assets/ui/rom-spells/801319.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-15","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543019,"sourceSkillId":494040,"name":"Curse Breaker","description":"Removes target's cursed status. (Requires ranged weapon.)","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579110,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504549],"components":[{"id":504549,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494040,"name":"Curse Breaker","description":"Removes target's cursed status. (Requires ranged weapon.)","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579110,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504549]}}],"icon":"/assets/ui/rom-spells/579110.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-20","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":20,"keyItemId":543027,"sourceSkillId":499583,"name":"Snake Poison Arrow","description":"Turns your magic into poisonous snakes, inflicting (DMG0) ranged weapon DPS and (Buff4-Dot) poison every 2 seconds for (Buff4-Time) seconds. When the target is affected by Vampire Arrows, it will stun the target for (Buff8-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579111,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504550,504590,504589,501690],"components":[{"id":504550,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504590,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-11,"dot":{"timeSeconds":2,"type":0,"base":-11,"skillLevelArg":24},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504589,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777331,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501690,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":499583,"name":"Snake Poison Arrow","description":"Turns your magic into poisonous snakes, inflicting (DMG0) ranged weapon DPS and (Buff4-Dot) poison every 2 seconds for (Buff4-Time) seconds. When the target is affected by Vampire Arrows, it will stun the target for (Buff8-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579111,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504550,504590,504589,501690]}}],"icon":"/assets/ui/rom-spells/579111.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-25","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":25,"keyItemId":543035,"sourceSkillId":494042,"name":"Unbinding Magic","description":"Removes Root and Slow from target's body. (Requires ranged weapon)\n(Effective only when the Movement Impairing Effect on the target is displayed.)","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579112,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504551],"components":[{"id":504551,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494042,"name":"Unbinding Magic","description":"Removes Root and Slow from target's body. (Requires ranged weapon)\n(Effective only when the Movement Impairing Effect on the target is displayed.)","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579112,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504551]}}],"icon":"/assets/ui/rom-spells/579112.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-30","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":30,"keyItemId":543043,"sourceSkillId":494327,"name":"Elven Eye","description":"Temporarily increases critical physical hit rate by (Buff0-0) points for (Buff0-Time) seconds. Every second costs (Buff0-Dot)% mana.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579888,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504719],"components":[{"id":504719,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":34,"clearFlags":2048,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":22,"dotTime":2,"dotType":6,"dotBase":-5,"dot":{"timeSeconds":2,"type":6,"base":-5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494327,"name":"Elven Eye","description":"Temporarily increases critical physical hit rate by (Buff0-0) points for (Buff0-Time) seconds. Every second costs (Buff0-Dot)% mana.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579888,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504719]}}],"icon":"/assets/ui/rom-spells/579888.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-35","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":35,"keyItemId":543051,"sourceSkillId":494380,"name":"Devour Blood","description":"A successful hit of your Vampire Arrows restores MP to party members in a range of 100.\n([SC_SKILLTIPS_CD_1](Buff-Time-506370)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579889,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506370],"components":[{"id":506370,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":494380,"name":"Devour Blood","description":"A successful hit of your Vampire Arrows restores MP to party members in a range of 100.\n([SC_SKILLTIPS_CD_1](Buff-Time-506370)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579889,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506370]}}],"icon":"/assets/ui/rom-spells/579889.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-40","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":40,"keyItemId":543059,"sourceSkillId":494529,"name":"Focus","description":"For (Buff-Time-504908) seconds 50% of your wisdom will be converted into [SC_SKILLTIPS_01].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579890,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505273,504908],"components":[{"id":505273,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504908,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":268435559,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":12,"value":1}],"abilitySkillLevelArg":100,"triggers":{"onTimeMagicId":494681,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494529,"name":"Focus","description":"For (Buff-Time-504908) seconds 50% of your wisdom will be converted into [SC_SKILLTIPS_01].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579890,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505273,504908]}}],"icon":"/assets/ui/rom-spells/579890.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-45","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":45,"keyItemId":543067,"sourceSkillId":494919,"name":"Archer Blessing","description":"When your shot hits a target, the damage received from the next attack for 3 party members or pets is reduced.\n([SC_SKILLTIPS_CD_1](Buff-Time-505718)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581104,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505718],"components":[{"id":505718,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494919,"name":"Archer Blessing","description":"When your shot hits a target, the damage received from the next attack for 3 party members or pets is reduced.\n([SC_SKILLTIPS_CD_1](Buff-Time-505718)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581104,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505718]}}],"icon":"/assets/ui/rom-spells/581104.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-50","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":50,"keyItemId":543075,"sourceSkillId":499584,"name":"Ancestor's Blessing","description":"Permanently reduces the damage you receive by (Buff0-0)% and when you strike a target with Piercing Arrow, the aggro caused by the next action of the party member with the second most aggro will be reduced.\n([SC_SKILLTIPS_CD_1](Buff-Time-503954)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581105,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505684,503954],"components":[{"id":505684,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":1},{"type":143,"value":1}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503954,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":499584,"name":"Ancestor's Blessing","description":"Permanently reduces the damage you receive by (Buff0-0)% and when you strike a target with Piercing Arrow, the aggro caused by the next action of the party member with the second most aggro will be reduced.\n([SC_SKILLTIPS_CD_1](Buff-Time-503954)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581105,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505684,503954]}}],"icon":"/assets/ui/rom-spells/581105.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-60","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546760,"sourceSkillId":499587,"name":"Efficiency Guidance","description":"When your [499592] is triggered, it recovers (DMG-623151) of your companions' Rage, Focus, and Energy. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801272,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623151],"components":[{"id":623151,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":2,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":2,"damagePowerSkillLevelArg":28,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499587,"name":"Efficiency Guidance","description":"When your [499592] is triggered, it recovers (DMG-623151) of your companions' Rage, Focus, and Energy. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801272,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623151]}}],"icon":"/assets/ui/rom-spells/801272.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-70","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":70,"keyItemId":546761,"sourceSkillId":499594,"name":"Soul Blessing","description":"When your [494919] is triggered, it affects your entire party and has an enhanced effect.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801320,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499594,"name":"Soul Blessing","description":"When your [494919] is triggered, it affects your entire party and has an enhanced effect.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801320,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801320.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-15","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":15,"keyItemId":541895,"sourceSkillId":491526,"name":"Throwing Mastery","description":"Your Throw can now Slow the target for 5 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575245,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491526,"name":"Throwing Mastery","description":"Your Throw can now Slow the target for 5 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575245,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575245.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-20","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":541925,"sourceSkillId":491527,"name":"One-Hand Axe Mastery","description":"One-hand axe damage increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575734,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620315],"components":[{"id":620315,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":61,"value":5}],"abilitySkillLevelArg":26,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":491527,"name":"One-Hand Axe Mastery","description":"One-hand axe damage increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575734,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620315]}}],"icon":"/assets/ui/rom-spells/575734.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-25","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":541955,"sourceSkillId":492349,"name":"Whirlwind Mastery","description":"Reduces the cost of Whirlwind by 20 rage and decreases cooldown by 20 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575738,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":492349,"name":"Whirlwind Mastery","description":"Reduces the cost of Whirlwind by 20 rage and decreases cooldown by 20 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575738,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575738.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-30","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":541985,"sourceSkillId":491339,"name":"Death's Touch","description":"For (Buff8-Time) seconds causes (DMG4) main hand weapon DPS + (FixDMG4) x Dexterity physical damage to your target, reduces healing effects received by the target by (Buff0-0)% and increases your [SC_SKILLTIPS_01] by (Buff8-0)%.\n(This skill reduces the target's received healing by a maximum of (Max-Buff0-501815)%.)\n(Received healing of players is reduced by (Buff1-0)% for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575222,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501815,506383,620285,506222],"components":[{"id":501815,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":48,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506383,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":48,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620285,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":506222,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":491339,"name":"Death's Touch","description":"For (Buff8-Time) seconds causes (DMG4) main hand weapon DPS + (FixDMG4) x Dexterity physical damage to your target, reduces healing effects received by the target by (Buff0-0)% and increases your [SC_SKILLTIPS_01] by (Buff8-0)%.\n(This skill reduces the target's received healing by a maximum of (Max-Buff0-501815)%.)\n(Received healing of players is reduced by (Buff1-0)% for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575222,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501815,506383,620285,506222]}}],"icon":"/assets/ui/rom-spells/575222.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-35","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542016,"sourceSkillId":492625,"name":"Poisonous Infection","description":"While Poisonous, each successful hit can poison the target inflicting (Buff4-Dot) poison damage every 2 seconds. Additionally (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage is dealt to the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577000,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620287,502894,500715],"components":[{"id":620287,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":7.5,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502894,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":113,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-12,"dot":{"timeSeconds":2,"type":0,"base":-12,"skillLevelArg":35},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500715,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":106,"onAttackTrigger":{"rate":50,"rank":0,"id":490357},"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":492625,"name":"Poisonous Infection","description":"While Poisonous, each successful hit can poison the target inflicting (Buff4-Dot) poison damage every 2 seconds. Additionally (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage is dealt to the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577000,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620287,502894,500715]}}],"icon":"/assets/ui/rom-spells/577000.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-40","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":542046,"sourceSkillId":492920,"name":"Poison Spray","description":"Can be used when the target is Poisoned from a Poisonous Infection to spread the poison to nearby targets and cause (DMG-503223) damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":2},"source":{"imageId":577591,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503222,503223],"components":[{"id":503222,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503223,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-200,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492920,"name":"Poison Spray","description":"Can be used when the target is Poisoned from a Poisonous Infection to spread the poison to nearby targets and cause (DMG-503223) damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":2},"source":{"imageId":577591,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503222,503223]}}],"icon":"/assets/ui/rom-spells/577591.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-45","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":45,"keyItemId":542076,"sourceSkillId":493017,"name":"Decay","description":"Can be used when Poisonous. It causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage and increases your [SC_SKILLTIPS_CRI] by (Buff8-0) and [SC_SKILLTIPS_CRI_POWER] by (Buff4-0)%. Effective for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503309)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577651,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620288,503263,506231,503309],"components":[{"id":620288,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503263,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":1}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493179,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506231,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503309,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":493017,"name":"Decay","description":"Can be used when Poisonous. It causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage and increases your [SC_SKILLTIPS_CRI] by (Buff8-0) and [SC_SKILLTIPS_CRI_POWER] by (Buff4-0)%. Effective for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503309)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577651,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620288,503263,506231,503309]}}],"icon":"/assets/ui/rom-spells/577651.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-50","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":542106,"sourceSkillId":493257,"name":"Reclaim Energy","description":"When you use Shadowstab, you have a chance of recovering energy. When you use Poisonous Infection, there is a chance that your rage will increase.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577781,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":493257,"name":"Reclaim Energy","description":"When you use Shadowstab, you have a chance of recovering energy. When you use Poisonous Infection, there is a chance that your rage will increase.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577781,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577781.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-60","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546762,"sourceSkillId":499476,"name":"Toxic Splash","description":"Makes [499477] trigger a [493296] effect that causes damage and poisons all surrounding enemies.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801273,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499476,"name":"Toxic Splash","description":"Makes [499477] trigger a [493296] effect that causes damage and poisons all surrounding enemies.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801273,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801273.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-70","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546763,"sourceSkillId":499480,"name":"Poison Battle Technique","description":"If target hit by your [499481] has a [499476] effect, then extra damage is inflicted.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801321,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499480,"name":"Poison Battle Technique","description":"If target hit by your [499481] has a [499476] effect, then extra damage is inflicted.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801321,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801321.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-15","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":15,"keyItemId":545984,"sourceSkillId":498826,"name":"Confusion Mechanism","description":"Creates a Confusion Mechanism near the target. This mechanism forces the target to attack it and reduces the target's [SC_SKILLTIPS_DEF] by (Buff0-621600)% and [SC_SKILLTIPS_MDEF] by (Buff0-621600)% in the process. Confusion Mechanism exists for 3 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800184,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623430,621601,621653,621600],"components":[{"id":623430,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[262144,0],"abilityModifiers":[{"type":135,"value":-5},{"type":170,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621601,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621600,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[262144,0],"abilityModifiers":[{"type":135,"value":-5},{"type":170,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498826,"name":"Confusion Mechanism","description":"Creates a Confusion Mechanism near the target. This mechanism forces the target to attack it and reduces the target's [SC_SKILLTIPS_DEF] by (Buff0-621600)% and [SC_SKILLTIPS_MDEF] by (Buff0-621600)% in the process. Confusion Mechanism exists for 3 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800184,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623430,621601,621653,621600]}}],"icon":"/assets/ui/rom-spells/800184.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-20","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":545985,"sourceSkillId":498828,"name":"Foot Mechanism","description":"Creates a Foot Mechanism under the caster's feet. When a a friendly target hits the mechanism, it will increase [SC_SKILLTIPS_MOVE] by (Buff0-621605)% for (Buff-Time-621605) seconds. This mechanism will affect a maximum of 6 friendly targets or last for 30 seconds then disappear.","target":"self","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800185,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623432,621604,621653,621605],"components":[{"id":623432,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621604,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621605,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498828,"name":"Foot Mechanism","description":"Creates a Foot Mechanism under the caster's feet. When a a friendly target hits the mechanism, it will increase [SC_SKILLTIPS_MOVE] by (Buff0-621605)% for (Buff-Time-621605) seconds. This mechanism will affect a maximum of 6 friendly targets or last for 30 seconds then disappear.","target":"self","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800185,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623432,621604,621653,621605]}}],"icon":"/assets/ui/rom-spells/800185.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-25","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":25,"keyItemId":545986,"sourceSkillId":498830,"name":"Stepping Mechanism","description":"Creates a Stepping Mechanism under the caster's feet. When a target passes through the mechanism, it will activate and create a Slow area which reduces the [SC_SKILLTIPS_MOVE] of targets in the area by (Buff0-621608)%. This mechanism lasts for 10 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800186,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623429,621606,621653,621608],"components":[{"id":623429,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621606,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621608,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":2,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498830,"name":"Stepping Mechanism","description":"Creates a Stepping Mechanism under the caster's feet. When a target passes through the mechanism, it will activate and create a Slow area which reduces the [SC_SKILLTIPS_MOVE] of targets in the area by (Buff0-621608)%. This mechanism lasts for 10 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800186,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623429,621606,621653,621608]}}],"icon":"/assets/ui/rom-spells/800186.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-30","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":30,"keyItemId":545987,"sourceSkillId":498833,"name":"Silent Rune Bomb","description":"Drops a Silent Rune Bomb that inflicts (DMG0) main hand weapon [SC_SKILLTIPS_NONE] DPS on targets in the area. Also carries a Silenced effect for (Buff4-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800187,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621609,621610,621653],"components":[{"id":621609,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621610,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":22,"effectFlagWords":[1,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498833,"name":"Silent Rune Bomb","description":"Drops a Silent Rune Bomb that inflicts (DMG0) main hand weapon [SC_SKILLTIPS_NONE] DPS on targets in the area. Also carries a Silenced effect for (Buff4-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800187,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621609,621610,621653]}}],"icon":"/assets/ui/rom-spells/800187.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-35","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":35,"keyItemId":545988,"sourceSkillId":498834,"name":"Pulse Rune Bomb","description":"Drops a Pulse Rune Bomb that inflicts (DMG0) main hand weapon [SC_SKILLTIPS_NONE] DPS on targets in the area. Also carries a Stunned effect for (Buff4-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800188,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621609,621611,621653],"components":[{"id":621609,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621611,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498834,"name":"Pulse Rune Bomb","description":"Drops a Pulse Rune Bomb that inflicts (DMG0) main hand weapon [SC_SKILLTIPS_NONE] DPS on targets in the area. Also carries a Stunned effect for (Buff4-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800188,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621609,621611,621653]}}],"icon":"/assets/ui/rom-spells/800188.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-40","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"passive","unlockLevel":40,"keyItemId":545989,"sourceSkillId":498836,"name":"Mechanism Activation Spike","description":"Each time an elite skill is used , your next normal attack will cause extra damage. Lasts for (Buff-Time-621613) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800189,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621613],"components":[{"id":621613,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":181,"value":100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498836,"name":"Mechanism Activation Spike","description":"Each time an elite skill is used , your next normal attack will cause extra damage. Lasts for (Buff-Time-621613) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800189,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621613]}}],"icon":"/assets/ui/rom-spells/800189.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-45","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":45,"keyItemId":545990,"sourceSkillId":498837,"name":"Burying Mechanism","description":"Creates a Burying Mechanism under the caster's feet. When a target passes through the mechanism, it activates and increases the damage received by the target by (Buff0-621651)%. It also reduces the target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE] by (Buff2-621651) for (Buff-Time-621651) seconds. This mechanism lasts for 25 seconds. \n\n(Only one mechanism can exist at a time.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800190,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623431,621614,621653,621651],"components":[{"id":623431,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621614,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621651,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":-10},{"type":143,"value":-10},{"type":183,"value":-100},{"type":182,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498837,"name":"Burying Mechanism","description":"Creates a Burying Mechanism under the caster's feet. When a target passes through the mechanism, it activates and increases the damage received by the target by (Buff0-621651)%. It also reduces the target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE] by (Buff2-621651) for (Buff-Time-621651) seconds. This mechanism lasts for 25 seconds. \n\n(Only one mechanism can exist at a time.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800190,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623431,621614,621653,621651]}}],"icon":"/assets/ui/rom-spells/800190.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-50","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"passive","unlockLevel":50,"keyItemId":545991,"sourceSkillId":498839,"name":"Nerve Gear","description":"Every time an elite skill is used, it increases [SC_SKILLTIPS_DPS] by (Buff0-621652)% and [SC_SKILLTIPS_DOGEP] by (Buff1-621652)% for (Buff-Time-621652) seconds. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800191,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621652],"components":[{"id":621652,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-5},{"type":198,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498839,"name":"Nerve Gear","description":"Every time an elite skill is used, it increases [SC_SKILLTIPS_DPS] by (Buff0-621652)% and [SC_SKILLTIPS_DOGEP] by (Buff1-621652)% for (Buff-Time-621652) seconds. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800191,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621652]}}],"icon":"/assets/ui/rom-spells/800191.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-60","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"passive","unlockLevel":60,"keyItemId":546778,"sourceSkillId":499817,"name":"Guidance Feedback","description":"Each time the mechanism is triggered it reduces the cooldown time of all mechanism skills to 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801620,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":499817,"name":"Guidance Feedback","description":"Each time the mechanism is triggered it reduces the cooldown time of all mechanism skills to 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801620,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801620.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-70","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":70,"keyItemId":546779,"sourceSkillId":499816,"name":"Electrocution Mechanism","description":"Creates a mechanism at the casting location that continuously releases electrical shocks to enemies within a range of 60 at a maximum of three targets per second. The electrical shocks inflict (DMG-623471) main hand weapon DPS for (Buff-Time-623479) seconds.\n[SC_SKILLTIPS_03]\n(Affected targets will be in a state of Electrocution)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801621,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623470,621653,623471,623479],"components":[{"id":623470,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623471,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":8388608,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-5,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623479,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":5,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":499815,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":499816,"name":"Electrocution Mechanism","description":"Creates a mechanism at the casting location that continuously releases electrical shocks to enemies within a range of 60 at a maximum of three targets per second. The electrical shocks inflict (DMG-623471) main hand weapon DPS for (Buff-Time-623479) seconds.\n[SC_SKILLTIPS_03]\n(Affected targets will be in a state of Electrocution)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801621,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623470,621653,623471,623479]}}],"icon":"/assets/ui/rom-spells/801621.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-15","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":15,"keyItemId":541896,"sourceSkillId":491530,"name":"Deadly Shot","description":"Increases your Shot's critical hit rate by 30%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575565,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491530,"name":"Deadly Shot","description":"Increases your Shot's critical hit rate by 30%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575565,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575565.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-20","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":541926,"sourceSkillId":491532,"name":"Slit Throat","description":"Your Throat Attack now also Silences the target for 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575739,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":491532,"name":"Slit Throat","description":"Your Throat Attack now also Silences the target for 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575739,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575739.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-25","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":541956,"sourceSkillId":491528,"name":"Energy Thief","description":"Every normal attack restores 20 points of energy. This effect will last (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575560,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501924],"components":[{"id":501924,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"onAttackTrigger":{"rate":100,"rank":1,"id":491529},"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":491528,"name":"Energy Thief","description":"Every normal attack restores 20 points of energy. This effect will last (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575560,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501924]}}],"icon":"/assets/ui/rom-spells/575560.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-30","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":541986,"sourceSkillId":491525,"name":"Combat Master","description":"Raises your [SC_SKILLTIPS_CRI] by (Buff0-0) and enhances [SC_SKILLTIPS_CRI_POWER] by (Buff4-0)% for (Buff0-Time) seconds.\n(This skill increases [SC_SKILLTIPS_CRI_POWER] by a maximum of (Max-Buff0-506223)%.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575566,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501921,506223],"components":[{"id":501921,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":34,"abilityModifiers":[{"type":18,"value":25}],"abilitySkillLevelArg":15.3,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495281,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506223,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":900,"hateCost":-10,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":491525,"name":"Combat Master","description":"Raises your [SC_SKILLTIPS_CRI] by (Buff0-0) and enhances [SC_SKILLTIPS_CRI_POWER] by (Buff4-0)% for (Buff0-Time) seconds.\n(This skill increases [SC_SKILLTIPS_CRI_POWER] by a maximum of (Max-Buff0-506223)%.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575566,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501921,506223]}}],"icon":"/assets/ui/rom-spells/575566.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-35","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":542017,"sourceSkillId":492626,"name":"Substitute","description":"Conjures a substitute for you for (Buff0-Time) seconds to take 1 physical attack for you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":20000},"source":{"imageId":577001,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620305],"components":[{"id":620305,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":1,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":492626,"name":"Substitute","description":"Conjures a substitute for you for (Buff0-Time) seconds to take 1 physical attack for you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":20000},"source":{"imageId":577001,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620305]}}],"icon":"/assets/ui/rom-spells/577001.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-40","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":542047,"sourceSkillId":492922,"name":"Tongue Poison","description":"Using [492922] on your target causes the target's Casting Time to increase by (Buff0-0)% for (Buff0-Time) seconds.\n(Casting time of players increases by (Buff1-0)% for (Buff1-Time) seconds.)\n(Consumes one poison bottle.)","target":"hostile","range":12,"castTimeMs":1000,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577594,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503180,504246],"components":[{"id":503180,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504246,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":492922,"name":"Tongue Poison","description":"Using [492922] on your target causes the target's Casting Time to increase by (Buff0-0)% for (Buff0-Time) seconds.\n(Casting time of players increases by (Buff1-0)% for (Buff1-Time) seconds.)\n(Consumes one poison bottle.)","target":"hostile","range":12,"castTimeMs":1000,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577594,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503180,504246]}}],"icon":"/assets/ui/rom-spells/577594.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-45","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":542077,"sourceSkillId":493019,"name":"Coerce","description":"The energy cost for using Low Blow is reduced by 5. When your target's HP drops below 30%, using Low Blow on your target will increase the damage of your physical attack by (Buff0-503264)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577652,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503264],"components":[{"id":503264,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":8192,"abilityModifiers":[{"type":173,"value":2}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":493019,"name":"Coerce","description":"The energy cost for using Low Blow is reduced by 5. When your target's HP drops below 30%, using Low Blow on your target will increase the damage of your physical attack by (Buff0-503264)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577652,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503264]}}],"icon":"/assets/ui/rom-spells/577652.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-50","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":50,"keyItemId":542107,"sourceSkillId":493258,"name":"Wraith Attack","description":"Your Shadowstab will damage 2 targets at once. However, damage done to the second target will be half.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577782,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493258,"name":"Wraith Attack","description":"Your Shadowstab will damage 2 targets at once. However, damage done to the second target will be half.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577782,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577782.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-60","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546764,"sourceSkillId":499611,"name":"Paralysis Attack","description":"Transforms your [490347] to arrow use.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801274,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499611,"name":"Paralysis Attack","description":"Transforms your [490347] to arrow use.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801274,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801274.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-70","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546765,"sourceSkillId":499482,"name":"Shadow Figure","description":"Summons a real [499501] on the spot when a [499501] is used. The [499501] exists for (Buff-Time-620305) seconds and maintains a [499503] with a range of 70. After it is attacked 5 times it will blow up, causing damage and [503174] for (Buff-Time-503174) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801322,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620305,503174],"components":[{"id":620305,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":1,"skillLevelArg":0}},{"id":503174,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499482,"name":"Shadow Figure","description":"Summons a real [499501] on the spot when a [499501] is used. The [499501] exists for (Buff-Time-620305) seconds and maintains a [499503] with a range of 70. After it is attacked 5 times it will blow up, causing damage and [503174] for (Buff-Time-503174) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801322,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620305,503174]}}],"icon":"/assets/ui/rom-spells/801322.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-15","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541897,"sourceSkillId":491178,"name":"Enchanted Throw","description":"Enchants your projectile weapons so that every normal attack will carry additional [490309] damage. \n(Launching during an attack will consume one projectile weapon.)\n(This effect is mutually exclusive with [490329].)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801383,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501279,501274],"components":[{"id":501279,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":163,"specialActionFlags":0,"assistType":106,"onAttackTrigger":{"rate":100,"rank":0,"id":492506},"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":491185,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501274,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":35,"specialActionFlags":0,"assistType":106,"onAttackTrigger":{"rate":100,"rank":0,"id":492506},"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491178,"name":"Enchanted Throw","description":"Enchants your projectile weapons so that every normal attack will carry additional [490309] damage. \n(Launching during an attack will consume one projectile weapon.)\n(This effect is mutually exclusive with [490329].)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801383,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501279,501274]}}],"icon":"/assets/ui/rom-spells/801383.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-20","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":541927,"sourceSkillId":491180,"name":"Enlivened Blade","description":"Launches an enchanted projectile at the specified area and causes (DMG0) main hand weapon DPS + (FixDMG0) * [SC_SKILLTIPS_THROWDMG] physical damage to a maximum of 5 enemies in the area. If the attack causes damage to more than 3 enemies, then the skill's cooldown time is reduced by half. \n(Consumes one projectile weapon.)","target":"self","range":20,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801359,"sourceEffectType":1,"sourceTarget":16,"componentIds":[501276,502598],"components":[{"id":501276,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-1,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":7,"fixedValue":-1,"fixedType":4,"fixedDamageSkillLevelArg":7,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502598,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"effectFlagWords":[2,0],"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":491180,"name":"Enlivened Blade","description":"Launches an enchanted projectile at the specified area and causes (DMG0) main hand weapon DPS + (FixDMG0) * [SC_SKILLTIPS_THROWDMG] physical damage to a maximum of 5 enemies in the area. If the attack causes damage to more than 3 enemies, then the skill's cooldown time is reduced by half. \n(Consumes one projectile weapon.)","target":"self","range":20,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801359,"sourceEffectType":1,"sourceTarget":16,"componentIds":[501276,502598]}}],"icon":"/assets/ui/rom-spells/801359.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-25","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"passive","unlockLevel":25,"keyItemId":541957,"sourceSkillId":491181,"name":"Evil Intent","description":"Enables you to use [491182] in a battle, but it will have a 90 second cooldown time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801384,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491181,"name":"Evil Intent","description":"Enables you to use [491182] in a battle, but it will have a 90 second cooldown time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801384,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801384.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-30","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":541987,"sourceSkillId":491183,"name":"Day of Rain","description":"Launches a projectile at all surrounding enemies and causes (DMG0) projectile DPS + (FixDMG0) x [SC_SKILLTIPS_THROWDMG] physical damage. Every time [490309] is used, the skill's cooldown time can be reduced by 1 second. If [491178] is used in conjunction, then it only has a 50% hit rate. \n(Consumes 2 projectiles.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":25000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801363,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501278,502598],"components":[{"id":501278,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":-1,"attack":{"type":0,"calculationType":2,"damagePower":-1,"damagePowerSkillLevelArg":7,"fixedValue":-1,"fixedType":4,"fixedDamageSkillLevelArg":7,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502598,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"effectFlagWords":[2,0],"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491183,"name":"Day of Rain","description":"Launches a projectile at all surrounding enemies and causes (DMG0) projectile DPS + (FixDMG0) x [SC_SKILLTIPS_THROWDMG] physical damage. Every time [490309] is used, the skill's cooldown time can be reduced by 1 second. If [491178] is used in conjunction, then it only has a 50% hit rate. \n(Consumes 2 projectiles.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":25000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801363,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501278,502598]}}],"icon":"/assets/ui/rom-spells/801363.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-35","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":542018,"sourceSkillId":491184,"name":"Vengeance Sting","description":"If you are attacked while [491178] is in effect, this will inflict (DMG-502595) main hand weapon DPS + (FixDMG-502595) * [SC_SKILLTIPS_THROWDMG] physical damage to your attacker. You will also receive a [502596] effect which reduces received [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-502596)%. Lasts (Buff-Time-502596) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801385,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502595,502596],"components":[{"id":502595,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-1,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":7,"fixedValue":-1,"fixedType":4,"fixedDamageSkillLevelArg":7,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0},{"id":502596,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":10},{"type":143,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":491184,"name":"Vengeance Sting","description":"If you are attacked while [491178] is in effect, this will inflict (DMG-502595) main hand weapon DPS + (FixDMG-502595) * [SC_SKILLTIPS_THROWDMG] physical damage to your attacker. You will also receive a [502596] effect which reduces received [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-502596)%. Lasts (Buff-Time-502596) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801385,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502595,502596]}}],"icon":"/assets/ui/rom-spells/801385.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-40","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":542048,"sourceSkillId":491186,"name":"Life Rope Throw","description":"Reduces the interval time of [491187] to 0.5 seconds and increases the number of throws to 4. \nConsumes four projectile weapons each time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801386,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":491186,"name":"Life Rope Throw","description":"Reduces the interval time of [491187] to 0.5 seconds and increases the number of throws to 4. \nConsumes four projectile weapons each time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801386,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801386.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-45","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":542078,"sourceSkillId":498024,"name":"Create Opportunity","description":"Increase [SC_SKILLTIPS_CRI] by (Buff0-0) for (Buff0-Time) seconds, and there is a chance to stun the target for (Buff-Time-503267) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577653,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620301,503267],"components":[{"id":620301,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"onAttackTrigger":{"rate":100,"rank":5,"id":490851},"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503267,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":4,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777331,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":498024,"name":"Create Opportunity","description":"Increase [SC_SKILLTIPS_CRI] by (Buff0-0) for (Buff0-Time) seconds, and there is a chance to stun the target for (Buff-Time-503267) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577653,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620301,503267]}}],"icon":"/assets/ui/rom-spells/577653.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-50","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"passive","unlockLevel":50,"keyItemId":542108,"sourceSkillId":491188,"name":"Disabling Blade","description":"Renders enemies that are being attacked by [491180] and [491183] unable to carry out physical attacks and use physical skills, and slows their [SC_SKILLTIPS_MOVE] by (Buff0-502598)% for a period of time. Lasts for (Buff-Time-502598) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801387,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502598],"components":[{"id":502598,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"effectFlagWords":[2,0],"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":491188,"name":"Disabling Blade","description":"Renders enemies that are being attacked by [491180] and [491183] unable to carry out physical attacks and use physical skills, and slows their [SC_SKILLTIPS_MOVE] by (Buff0-502598)% for a period of time. Lasts for (Buff-Time-502598) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801387,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502598]}}],"icon":"/assets/ui/rom-spells/801387.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-60","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":60,"keyItemId":546766,"sourceSkillId":497206,"name":"Instant Shadow","description":"This effect can be triggered after you do a dodge maneuver. It quickly conceals you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":15,"percentage":false},{"resource":"mana","amount":6,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801275,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502597],"components":[{"id":502597,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":497206,"name":"Instant Shadow","description":"This effect can be triggered after you do a dodge maneuver. It quickly conceals you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":15,"percentage":false},{"resource":"mana","amount":6,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801275,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502597]}}],"icon":"/assets/ui/rom-spells/801275.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-70","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":70,"keyItemId":546767,"sourceSkillId":497205,"name":"Illusion Blade Dance","description":"After this is cast, you enter a [491189] state that lasts for (Buff-Time-502599) seconds. It will also cause (DMG-502577) projectile DPS + (FixDMG-502577) x [SC_SKILLTIPS_THROWDMG] physical damage to surrounding enemies every 2 seconds. While in effect, it also increases [SC_SKILLTIPS_DPS] by (Buff0-0)% and critical damage by (Buff0-1)%. \n(Consumes 10 projectiles.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801323,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502599,502577],"components":[{"id":502599,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":103,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-2},{"type":19,"value":5}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":491189,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502577,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":-1,"attack":{"type":0,"calculationType":2,"damagePower":-1,"damagePowerSkillLevelArg":7,"fixedValue":-1,"fixedType":4,"fixedDamageSkillLevelArg":7,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":497205,"name":"Illusion Blade Dance","description":"After this is cast, you enter a [491189] state that lasts for (Buff-Time-502599) seconds. It will also cause (DMG-502577) projectile DPS + (FixDMG-502577) x [SC_SKILLTIPS_THROWDMG] physical damage to surrounding enemies every 2 seconds. While in effect, it also increases [SC_SKILLTIPS_DPS] by (Buff0-0)% and critical damage by (Buff0-1)%. \n(Consumes 10 projectiles.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801323,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502599,502577]}}],"icon":"/assets/ui/rom-spells/801323.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-15","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"elite","unlockLevel":15,"keyItemId":541898,"sourceSkillId":491536,"name":"Quickness Aura","description":"Your and your party members' dodge rate raises by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575559,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501932],"components":[{"id":501932,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":31,"abilityModifiers":[{"type":198,"value":2}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491536,"name":"Quickness Aura","description":"Your and your party members' dodge rate raises by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575559,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501932]}}],"icon":"/assets/ui/rom-spells/575559.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-20","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":20,"keyItemId":541928,"sourceSkillId":491539,"name":"Wound Tear","description":"Raises your Wound Attack's critical hit rate by 30%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575740,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":491539,"name":"Wound Tear","description":"Raises your Wound Attack's critical hit rate by 30%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575740,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575740.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-25","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":25,"keyItemId":541958,"sourceSkillId":491537,"name":"Shadow Walker","description":"You can use Sneak Attack during battle. The energy cost is reduced by 10, but the cooldown is increased by 10 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575741,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":491537,"name":"Shadow Walker","description":"You can use Sneak Attack during battle. The energy cost is reduced by 10, but the cooldown is increased by 10 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575741,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575741.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-30","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":541988,"sourceSkillId":491540,"name":"Fearless","description":"Immune to Fear effect for the next (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575742,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501933],"components":[{"id":501933,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":17,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":491540,"name":"Fearless","description":"Immune to Fear effect for the next (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575742,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501933]}}],"icon":"/assets/ui/rom-spells/575742.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-35","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"elite","unlockLevel":35,"keyItemId":542019,"sourceSkillId":492627,"name":"Kick","description":"Kicks the targets shinbone causing (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage . Due to great pain the target's movement speed is lowered by (Buff4-0)% for (Buff4-Time) seconds.\n(Movement speed of players is lowered by (Buff5-0)% for (Buff5-Time) seconds.)\n(This skill lowers the movement speed by a maximum of (Max-Buff0-502896)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577003,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620293,502896,503852],"components":[{"id":620293,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502896,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503852,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":492627,"name":"Kick","description":"Kicks the targets shinbone causing (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage . Due to great pain the target's movement speed is lowered by (Buff4-0)% for (Buff4-Time) seconds.\n(Movement speed of players is lowered by (Buff5-0)% for (Buff5-Time) seconds.)\n(This skill lowers the movement speed by a maximum of (Max-Buff0-502896)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577003,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620293,502896,503852]}}],"icon":"/assets/ui/rom-spells/577003.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-40","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"elite","unlockLevel":40,"keyItemId":542049,"sourceSkillId":492921,"name":"Slowing Poison","description":"Using [492351] on your target reduces the target's Physical Attack Speed by (Buff0-0)% for (Buff0-Time) seconds.\n(Physical Attack Speed of players reduces by (Buff1-0)% for (Buff1-Time) seconds.)\n(Consumes one poison bottle.)","target":"hostile","range":12,"castTimeMs":1000,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577592,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503176,504247],"components":[{"id":503176,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":115,"abilityModifiers":[{"type":23,"value":60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504247,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":115,"abilityModifiers":[{"type":23,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":492921,"name":"Slowing Poison","description":"Using [492351] on your target reduces the target's Physical Attack Speed by (Buff0-0)% for (Buff0-Time) seconds.\n(Physical Attack Speed of players reduces by (Buff1-0)% for (Buff1-Time) seconds.)\n(Consumes one poison bottle.)","target":"hostile","range":12,"castTimeMs":1000,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577592,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503176,504247]}}],"icon":"/assets/ui/rom-spells/577592.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-45","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542079,"sourceSkillId":493020,"name":"Sinister Methods","description":"Making a successful hit with Low Blow or Blind Spot instantly increases your [SC_SKILLTIPS_CRI] for (Buff-Time-503265) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503300)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577654,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503265,503300],"components":[{"id":503265,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493023,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503300,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":493020,"name":"Sinister Methods","description":"Making a successful hit with Low Blow or Blind Spot instantly increases your [SC_SKILLTIPS_CRI] for (Buff-Time-503265) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503300)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577654,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503265,503300]}}],"icon":"/assets/ui/rom-spells/577654.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-50","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":50,"keyItemId":542109,"sourceSkillId":493260,"name":"Mana Surge","description":"Magic Barrier will recover MP whenever you receive a physical attack, and reduce the damage inflicted on you by (Buff0-503181)%.\n([SC_SKILLTIPS_CD_1](Buff-Time-503529)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577784,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503181,503529],"components":[{"id":503181,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":-5},{"type":207,"value":-5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503529,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":493260,"name":"Mana Surge","description":"Magic Barrier will recover MP whenever you receive a physical attack, and reduce the damage inflicted on you by (Buff0-503181)%.\n([SC_SKILLTIPS_CD_1](Buff-Time-503529)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577784,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503181,503529]}}],"icon":"/assets/ui/rom-spells/577784.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-60","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":60,"keyItemId":546768,"sourceSkillId":499505,"name":"Mana Needle","description":"While in a [493297], received [SC_SKILLTIPS_DMG] will stun the attacker for (Buff-Time-623033) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-623034) [SC_SKILLTIPS_CD_2].)","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801276,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623033,623034],"components":[{"id":623033,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623034,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499505,"name":"Mana Needle","description":"While in a [493297], received [SC_SKILLTIPS_DMG] will stun the attacker for (Buff-Time-623033) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-623034) [SC_SKILLTIPS_CD_2].)","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801276,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623033,623034]}}],"icon":"/assets/ui/rom-spells/801276.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-70","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546769,"sourceSkillId":499510,"name":"Demonstration of Evil","description":"When [493020] are triggered, your party members receive half the effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801324,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499510,"name":"Demonstration of Evil","description":"When [493020] are triggered, your party members receive half the effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801324,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801324.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-15","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"passive","unlockLevel":15,"keyItemId":541899,"sourceSkillId":491551,"name":"Armor Breaker","description":"Raises the damage by way of Disarmament, and adds a cooldown time of 3 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575744,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":491551,"name":"Armor Breaker","description":"Raises the damage by way of Disarmament, and adds a cooldown time of 3 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575744,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575744.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-20","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":20,"keyItemId":541929,"sourceSkillId":491549,"name":"Poison Protection","description":"When activated, this will protect you from getting Poisoned for the next (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575745,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501943],"components":[{"id":501943,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":5,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":491549,"name":"Poison Protection","description":"When activated, this will protect you from getting Poisoned for the next (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575745,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501943]}}],"icon":"/assets/ui/rom-spells/575745.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-25","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":25,"keyItemId":541959,"sourceSkillId":491552,"name":"Lion's Protection","description":"You feel strong like a lion! Your [SC_SKILLTIPS_01] is increased by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575567,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620316],"components":[{"id":620316,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":112,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":491552,"name":"Lion's Protection","description":"You feel strong like a lion! Your [SC_SKILLTIPS_01] is increased by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575567,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620316]}}],"icon":"/assets/ui/rom-spells/575567.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-30","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541989,"sourceSkillId":491546,"name":"Holy Light Protection","description":"Lowers [SC_SKILLTIPS_MDMG] you suffer by (Buff0-0)% and renders you immune to Root or Slow effects for the next (Buff0-Time) seconds.\n(Effect can only be removed if target has Movement Impairing Effect)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575571,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501940],"components":[{"id":501940,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":2}],"abilitySkillLevelArg":54,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491546,"name":"Holy Light Protection","description":"Lowers [SC_SKILLTIPS_MDMG] you suffer by (Buff0-0)% and renders you immune to Root or Slow effects for the next (Buff0-Time) seconds.\n(Effect can only be removed if target has Movement Impairing Effect)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575571,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501940]}}],"icon":"/assets/ui/rom-spells/575571.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-35","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":35,"keyItemId":542020,"sourceSkillId":492629,"name":"Courageous Guard","description":"Protects party members in a range of 100 from Fear for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"self","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577004,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502898],"components":[{"id":502898,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":17,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492629,"name":"Courageous Guard","description":"Protects party members in a range of 100 from Fear for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"self","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577004,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502898]}}],"icon":"/assets/ui/rom-spells/577004.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-40","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":40,"keyItemId":542050,"sourceSkillId":492924,"name":"Power of the Lion","description":"While you are under the Lion's Protection, you can turn it into Power of the Lion to instantly restore your HP by (current [SC_SKILLTIPS_HP] x (DMG4)) + (DMG0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":577595,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503185,506308,503225],"components":[{"id":503185,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":506308,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":14,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503225,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":112,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":492924,"name":"Power of the Lion","description":"While you are under the Lion's Protection, you can turn it into Power of the Lion to instantly restore your HP by (current [SC_SKILLTIPS_HP] x (DMG4)) + (DMG0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":577595,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503185,506308,503225]}}],"icon":"/assets/ui/rom-spells/577595.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-45","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":45,"keyItemId":542080,"sourceSkillId":493025,"name":"Searing Light","description":"Causes your normal attacks to deal additional (Buff0-0) Light damage for (Buff0-Time) seconds. Also, when your physical attacks hit the target your [SC_SKILLTIPS_CRI] increases by (Buff0-503270) points for (Buff-Time-503270) seconds. (This effect is mutually exclusive with Poisonous.)\n([SC_SKILLTIPS_CD_1](Buff-Time-506385)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577655,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503268,503270,506385],"components":[{"id":503268,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":106,"abilityModifiers":[{"type":188,"value":10}],"onAttackTrigger":{"rate":100,"rank":0,"id":495578},"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503270,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495385,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506385,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493025,"name":"Searing Light","description":"Causes your normal attacks to deal additional (Buff0-0) Light damage for (Buff0-Time) seconds. Also, when your physical attacks hit the target your [SC_SKILLTIPS_CRI] increases by (Buff0-503270) points for (Buff-Time-503270) seconds. (This effect is mutually exclusive with Poisonous.)\n([SC_SKILLTIPS_CD_1](Buff-Time-506385)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577655,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503268,503270,506385]}}],"icon":"/assets/ui/rom-spells/577655.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-50","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"passive","unlockLevel":50,"keyItemId":542110,"sourceSkillId":493261,"name":"Reckless Warrior","description":"Whenever you use Low Blow or Blind Spot and successfully hit your target your [SC_SKILLTIPS_01] increases. Effective for (Buff-Time-503531) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503532)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577785,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503531,503532],"components":[{"id":503531,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":12,"value":50}],"abilitySkillLevelArg":11,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493284,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503532,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493261,"name":"Reckless Warrior","description":"Whenever you use Low Blow or Blind Spot and successfully hit your target your [SC_SKILLTIPS_01] increases. Effective for (Buff-Time-503531) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503532)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577785,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503531,503532]}}],"icon":"/assets/ui/rom-spells/577785.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-60","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546770,"sourceSkillId":499529,"name":"Illegal Punishment","description":"Inflicts additional damage caused by your [490074] depending on [SC_SKILLTIPS_AGI].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801277,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499529,"name":"Illegal Punishment","description":"Inflicts additional damage caused by your [490074] depending on [SC_SKILLTIPS_AGI].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801277,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801277.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-70","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"passive","unlockLevel":70,"keyItemId":546771,"sourceSkillId":490069,"name":"Punishment Thrust","description":"[490185] will now cause the Stun effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801325,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":490069,"name":"Punishment Thrust","description":"[490185] will now cause the Stun effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801325,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801325.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-15","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":15,"keyItemId":543020,"sourceSkillId":494043,"name":"Weak Point Strike","description":"Inflicts (DMG1) main hand weapon DPS + (FixDMG1) x Dexterity physical damage. This skill has a chance of causing the target's weak point to suffer a powerful attack, suffering (DMG0) + (FixDMG0) x Dexterity main hand weapon physical DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579113,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620294,620295],"components":[{"id":620294,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.95,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.95,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620295,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494043,"name":"Weak Point Strike","description":"Inflicts (DMG1) main hand weapon DPS + (FixDMG1) x Dexterity physical damage. This skill has a chance of causing the target's weak point to suffer a powerful attack, suffering (DMG0) + (FixDMG0) x Dexterity main hand weapon physical DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579113,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620294,620295]}}],"icon":"/assets/ui/rom-spells/579113.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-20","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"passive","unlockLevel":20,"keyItemId":543028,"sourceSkillId":494044,"name":"Hidden Master","description":"Reduces [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] received while in Hide status.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579114,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494044,"name":"Hidden Master","description":"Reduces [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] received while in Hide status.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579114,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579114.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-25","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":25,"keyItemId":543036,"sourceSkillId":494045,"name":"Bloodthirsty Blade","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. Successful attacks increase your [SC_SKILLTIPS_CRI] by (Buff4-0) points for (Buff4-Time) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-507326)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579115,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620296,504595,504598,507326],"components":[{"id":620296,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504595,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":1073741923,"specialActionFlags":0,"assistType":34,"abilityModifiers":[{"type":18,"value":6}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504598,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":268959809,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507326,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":268959809,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494045,"name":"Bloodthirsty Blade","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. Successful attacks increase your [SC_SKILLTIPS_CRI] by (Buff4-0) points for (Buff4-Time) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-507326)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579115,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620296,504595,504598,507326]}}],"icon":"/assets/ui/rom-spells/579115.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-30","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"passive","unlockLevel":30,"keyItemId":543044,"sourceSkillId":494328,"name":"Crazed Creed","description":"Permanently raises your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579891,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504720],"components":[{"id":504720,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":1}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494328,"name":"Crazed Creed","description":"Permanently raises your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579891,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504720]}}],"icon":"/assets/ui/rom-spells/579891.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-35","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":35,"keyItemId":543052,"sourceSkillId":494545,"name":"Emotional Obstruction","description":"Creates a purple fog that temporarily reduces the magical damage done by the target by (Buff0-0)% for (Buff0-Time) seconds.\n(If the target is a player, the damage done will be reduced by (Buff1-0)% for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579892,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504909,504249],"components":[{"id":504909,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":44,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504249,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":44,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494545,"name":"Emotional Obstruction","description":"Creates a purple fog that temporarily reduces the magical damage done by the target by (Buff0-0)% for (Buff0-Time) seconds.\n(If the target is a player, the damage done will be reduced by (Buff1-0)% for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579892,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504909,504249]}}],"icon":"/assets/ui/rom-spells/579892.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-40","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"passive","unlockLevel":40,"keyItemId":543060,"sourceSkillId":494546,"name":"Wood Spirit's Grasp","description":"Increases the damage of Power of the Wood Spirit. Additionally, a successful hit will increase your and your party members' [SC_SKILLTIPS_MDMG] and [SC_SKILLTIPS_DMG].\n([SC_SKILLTIPS_CD_1](Buff-Time-505171)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579893,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505171],"components":[{"id":505171,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":494546,"name":"Wood Spirit's Grasp","description":"Increases the damage of Power of the Wood Spirit. Additionally, a successful hit will increase your and your party members' [SC_SKILLTIPS_MDMG] and [SC_SKILLTIPS_DMG].\n([SC_SKILLTIPS_CD_1](Buff-Time-505171)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579893,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505171]}}],"icon":"/assets/ui/rom-spells/579893.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-45","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":45,"keyItemId":543068,"sourceSkillId":494921,"name":"Wound Patch","description":"When you suffer physical or magic attacks within (Buff0-Time) seconds, you will recover (DMG-620302) HP and your dodge rate will be continuously increased by (Buff0-623527)% for (Buff-Time-623527) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-505731)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":581106,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505685,620302,623527,505731],"components":[{"id":505685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":494948,"onMagicAttackReboundMagicId":494948,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620302,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":18,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623527,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":20},{"type":200,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505731,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":494921,"name":"Wound Patch","description":"When you suffer physical or magic attacks within (Buff0-Time) seconds, you will recover (DMG-620302) HP and your dodge rate will be continuously increased by (Buff0-623527)% for (Buff-Time-623527) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-505731)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":581106,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505685,620302,623527,505731]}}],"icon":"/assets/ui/rom-spells/581106.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-50","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543076,"sourceSkillId":494922,"name":"Phantom Blade","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. A successful hit will summon two Oak Walkers that will attack your opponent for 15 seconds. \n\n(Oak Walkers will also use Phantom Blade for attacking. Damage increases with skill level.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"health","amount":5,"percentage":true},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102324},"source":{"imageId":581107,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620311,505942,505943],"components":[{"id":620311,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505942,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102324,"summon":{"creatureId":102324,"level":0,"rangeLevel":0,"lifetimeSeconds":15,"skillLevelArg":0,"type":1,"groupId":3,"ownerPowerRate":0.6}},{"id":505943,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102324,"summon":{"creatureId":102324,"level":0,"rangeLevel":0,"lifetimeSeconds":15,"skillLevelArg":0,"type":1,"groupId":4,"ownerPowerRate":0.6}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494922,"name":"Phantom Blade","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. A successful hit will summon two Oak Walkers that will attack your opponent for 15 seconds. \n\n(Oak Walkers will also use Phantom Blade for attacking. Damage increases with skill level.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"health","amount":5,"percentage":true},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102324},"source":{"imageId":581107,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620311,505942,505943]}}],"icon":"/assets/ui/rom-spells/581107.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-60","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":60,"keyItemId":546772,"sourceSkillId":499542,"name":"Revival","description":"While in a [499544] state, each time you receive physical or magic attack you can stack a [499542] effect. Effect can be stacked a maximum of 10 times. Actively using [499542] makes you recover HP. The amount of HP you recover is dependent on [499542].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801278,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623078],"components":[{"id":623078,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499542,"name":"Revival","description":"While in a [499544] state, each time you receive physical or magic attack you can stack a [499542] effect. Effect can be stacked a maximum of 10 times. Actively using [499542] makes you recover HP. The amount of HP you recover is dependent on [499542].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801278,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623078]}}],"icon":"/assets/ui/rom-spells/801278.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-70","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"passive","unlockLevel":70,"keyItemId":546773,"sourceSkillId":499547,"name":"Group Panic","description":"Makes your [499546] cause an additional reduction of physical and magic damage. Also changes effects from solo to group.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801326,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499547,"name":"Group Panic","description":"Makes your [499546] cause an additional reduction of physical and magic damage. Also changes effects from solo to group.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801326,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801326.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-15","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543021,"sourceSkillId":494046,"name":"Hysteric Vengeance","description":"If you are hit by physical attacks in the next (Buff0-Time) seconds, your [SC_SKILLTIPS_CRI] will increase by (Buff0-620303) for (Buff-Time-620303) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504593)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579116,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504555,620303,504593],"components":[{"id":504555,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":494072,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620303,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494073,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504593,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268443649,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494046,"name":"Hysteric Vengeance","description":"If you are hit by physical attacks in the next (Buff0-Time) seconds, your [SC_SKILLTIPS_CRI] will increase by (Buff0-620303) for (Buff-Time-620303) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504593)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579116,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504555,620303,504593]}}],"icon":"/assets/ui/rom-spells/579116.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-20","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":20,"keyItemId":543029,"sourceSkillId":494047,"name":"Poison Antibodies","description":"Makes it so you cannot be affected by poison for 5 seconds after you successfully use Antidote.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579117,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":494047,"name":"Poison Antibodies","description":"Makes it so you cannot be affected by poison for 5 seconds after you successfully use Antidote.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579117,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579117.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-25","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"elite","unlockLevel":25,"keyItemId":543037,"sourceSkillId":494048,"name":"Poison Shroud","description":"Poison Shroud inflicts (Buff0-Dot) points of poison damage every 2 seconds on targets within a range of 70 for (Buff0-Time) seconds. (Consumes one poison bottle.)","target":"self","range":15,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579118,"sourceEffectType":1,"sourceTarget":16,"componentIds":[620304],"components":[{"id":620304,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":8394,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494962,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":2,"dotType":0,"dotBase":-40,"dot":{"timeSeconds":2,"type":0,"base":-40,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494048,"name":"Poison Shroud","description":"Poison Shroud inflicts (Buff0-Dot) points of poison damage every 2 seconds on targets within a range of 70 for (Buff0-Time) seconds. (Consumes one poison bottle.)","target":"self","range":15,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579118,"sourceEffectType":1,"sourceTarget":16,"componentIds":[620304]}}],"icon":"/assets/ui/rom-spells/579118.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-30","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"elite","unlockLevel":30,"keyItemId":543045,"sourceSkillId":494329,"name":"Killin' Time","description":"Increases the critical physical hit rate of your next 4 attacks by (Buff0-504872) points and critical damage by (Buff1-504872)% for (Buff-Time-504872) seconds. (This effect continues until expended or time runs out.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579894,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504872,504881],"components":[{"id":504872,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"clearFlags":8193,"abilityModifiers":[{"type":18,"value":120},{"type":19,"value":1}],"abilitySkillLevelArg":16,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494339,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504881,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494329,"name":"Killin' Time","description":"Increases the critical physical hit rate of your next 4 attacks by (Buff0-504872) points and critical damage by (Buff1-504872)% for (Buff-Time-504872) seconds. (This effect continues until expended or time runs out.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579894,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504872,504881]}}],"icon":"/assets/ui/rom-spells/579894.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-35","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":35,"keyItemId":543053,"sourceSkillId":498027,"name":"Crippling Poison","description":"Causes your Poisonous effect to additionally reduce the target's [SC_SKILLTIPS_CAST] and [SC_SKILLTIPS_DPS].","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579895,"sourceEffectType":2,"sourceTarget":6,"componentIds":[505173,504250],"components":[{"id":505173,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":170,"abilityModifiers":[{"type":170,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504250,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":170,"abilityModifiers":[{"type":170,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":498027,"name":"Crippling Poison","description":"Causes your Poisonous effect to additionally reduce the target's [SC_SKILLTIPS_CAST] and [SC_SKILLTIPS_DPS].","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579895,"sourceEffectType":2,"sourceTarget":6,"componentIds":[505173,504250]}}],"icon":"/assets/ui/rom-spells/579895.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-40","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"elite","unlockLevel":40,"keyItemId":543061,"sourceSkillId":494548,"name":"Slaughter Blessing","description":"Instantly restores (current [SC_SKILLTIPS_HP] x (DMG4)) + (DMG8) HP to you and your party members, and temporarily increases [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":579896,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505175,506387,504912],"components":[{"id":505175,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5},{"type":171,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506387,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":8.4,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504912,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":9.6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494548,"name":"Slaughter Blessing","description":"Instantly restores (current [SC_SKILLTIPS_HP] x (DMG4)) + (DMG8) HP to you and your party members, and temporarily increases [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":579896,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505175,506387,504912]}}],"icon":"/assets/ui/rom-spells/579896.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-45","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":45,"keyItemId":543069,"sourceSkillId":494923,"name":"Shadow Smash","description":"Extends your Poison Shroud effect by 4 seconds and inflicts dark damage to targets within a range of 70.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581108,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494923,"name":"Shadow Smash","description":"Extends your Poison Shroud effect by 4 seconds and inflicts dark damage to targets within a range of 70.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581108,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581108.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-50","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":50,"keyItemId":543077,"sourceSkillId":494924,"name":"Quick Light Protection","description":"Reduces the energy required for your Blind Spot attack by 10 and when you strike a target it has a chance of restoring HP to the party member with the lowest HP.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581109,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":494924,"name":"Quick Light Protection","description":"Reduces the energy required for your Blind Spot attack by 10 and when you strike a target it has a chance of restoring HP to the party member with the lowest HP.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581109,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581109.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-60","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546774,"sourceSkillId":499566,"name":"Malicious Intent Release","description":"Your [499567] will not be limited in the times it can be used, but its time limit is reduced from 15 seconds to 7 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801279,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499566,"name":"Malicious Intent Release","description":"Your [499567] will not be limited in the times it can be used, but its time limit is reduced from 15 seconds to 7 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801279,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801279.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-70","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":70,"keyItemId":546775,"sourceSkillId":499568,"name":"Erosion","description":"Causes an additional reduction of your target's armor and [SC_SKILLTIPS_MDEF] while [499569] is in effect. Causes additional damage from triggered [494923] in level with [SC_SKILLTIPS_AGI].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801327,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499568,"name":"Erosion","description":"Causes an additional reduction of your target's armor and [SC_SKILLTIPS_MDEF] while [499569] is in effect. Causes additional damage from triggered [494923] in level with [SC_SKILLTIPS_AGI].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801327,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801327.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-15","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":15,"keyItemId":545976,"sourceSkillId":498799,"name":"Dark Soul Barrier","description":"Sets up a dark spirit barrier in a designated area. This barrier will increase the [SC_SKILLTIPS_DOGEP] of all party members inside the barrier by (Buff0-621565)%. The Dark Soul Barrier lasts for 12 seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800220,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621560,621565],"components":[{"id":621560,"magicFunc":6,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621565,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":268435459,"specialActionFlags":0,"assistType":31,"abilityModifiers":[{"type":198,"value":10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498799,"name":"Dark Soul Barrier","description":"Sets up a dark spirit barrier in a designated area. This barrier will increase the [SC_SKILLTIPS_DOGEP] of all party members inside the barrier by (Buff0-621565)%. The Dark Soul Barrier lasts for 12 seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800220,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621560,621565]}}],"icon":"/assets/ui/rom-spells/800220.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-20","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":20,"keyItemId":545977,"sourceSkillId":498801,"name":"Energy Conservation","description":"Use of this skill requires an HP less than 75%.\nRestores (Buff0-Dot)% HP every second until HP reaches 75% or the effect lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800153,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621561],"components":[{"id":621561,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":79,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498802,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":5,"dotBase":3,"dot":{"timeSeconds":1,"type":5,"base":3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498801,"name":"Energy Conservation","description":"Use of this skill requires an HP less than 75%.\nRestores (Buff0-Dot)% HP every second until HP reaches 75% or the effect lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800153,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621561]}}],"icon":"/assets/ui/rom-spells/800153.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-25","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":25,"keyItemId":545978,"sourceSkillId":498803,"name":"Soul Stab","description":"Inflicts (DMG1) + (FixDMG1) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS on the target. If target is in a Weakened state then they will receive (DMG0) + (FixDMG0) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800154,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621564,501577,621563],"components":[{"id":621564,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.5,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.5,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621563,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498803,"name":"Soul Stab","description":"Inflicts (DMG1) + (FixDMG1) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS on the target. If target is in a Weakened state then they will receive (DMG0) + (FixDMG0) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800154,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621564,501577,621563]}}],"icon":"/assets/ui/rom-spells/800154.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-30","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":30,"keyItemId":545979,"sourceSkillId":498804,"name":"Begin When Ready","description":"Immediately resets the cooldown time for Fervent Attack and Evasion.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800155,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621566],"components":[{"id":621566,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498804,"name":"Begin When Ready","description":"Immediately resets the cooldown time for Fervent Attack and Evasion.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800155,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621566]}}],"icon":"/assets/ui/rom-spells/800155.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-35","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":35,"keyItemId":545980,"sourceSkillId":498805,"name":"Dark Soul Precision","description":"Soul Pain doesn't need any casting time and reduces target's [SC_SKILLTIPS_DEF].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800156,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498805,"name":"Dark Soul Precision","description":"Soul Pain doesn't need any casting time and reduces target's [SC_SKILLTIPS_DEF].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800156,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800156.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-40","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":40,"keyItemId":545981,"sourceSkillId":498807,"name":"Soul Agility","description":"Increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800157,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621568,621569],"components":[{"id":621568,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":6,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621569,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":165,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498807,"name":"Soul Agility","description":"Increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800157,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621568,621569]}}],"icon":"/assets/ui/rom-spells/800157.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-45","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":45,"keyItemId":545982,"sourceSkillId":498808,"name":"Dark Soul Smelt","description":"While in a Poisonous state, normal attack hits can cause additional [SC_SKILLTIPS_DARK].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800158,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":498808,"name":"Dark Soul Smelt","description":"While in a Poisonous state, normal attack hits can cause additional [SC_SKILLTIPS_DARK].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800158,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800158.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-50","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":545983,"sourceSkillId":498811,"name":"Ghostly Strike","description":"Inflicts (DMG0) + (FixDMG0) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS and carries a Weakened effect. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800159,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621572,501577],"components":[{"id":621572,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.5,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.5,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498811,"name":"Ghostly Strike","description":"Inflicts (DMG0) + (FixDMG0) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS and carries a Weakened effect. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800159,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621572,501577]}}],"icon":"/assets/ui/rom-spells/800159.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-60","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":60,"keyItemId":546776,"sourceSkillId":498813,"name":"Dark Soul Assail","description":"Increases [SC_SKILLTIPS_DARK]. In a state of [498814], [SC_SKILLTIPS_DARK] is additionally increased.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801618,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623424],"components":[{"id":623424,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524295,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":50,"value":50}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":499803,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":498813,"name":"Dark Soul Assail","description":"Increases [SC_SKILLTIPS_DARK]. In a state of [498814], [SC_SKILLTIPS_DARK] is additionally increased.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801618,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623424]}}],"icon":"/assets/ui/rom-spells/801618.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-70","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":70,"keyItemId":546777,"sourceSkillId":499820,"name":"Soul Curtain","description":"Decreases the cooldown time of [499819] by 60 seconds. When [499819] is being cast, it removes the effect of being Helpless and leaves a Substitute that Taunts nearby enemies for 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801619,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499820,"name":"Soul Curtain","description":"Decreases the cooldown time of [499819] by 60 seconds. When [499819] is being cast, it removes the effect of being Helpless and leaves a Substitute that Taunts nearby enemies for 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801619,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801619.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-15","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":541900,"sourceSkillId":491562,"name":"Magical Talent","description":"Temporarily increases your [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575729,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501947,506398],"components":[{"id":501947,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":50}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495400,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":506398,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":168,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491562,"name":"Magical Talent","description":"Temporarily increases your [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575729,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501947,506398]}}],"icon":"/assets/ui/rom-spells/575729.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-20","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":20,"keyItemId":541930,"sourceSkillId":491563,"name":"Magical Enlightenment","description":"Lets you regenerate (Buff0-Dot) MP every 5 seconds for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575726,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501948],"components":[{"id":501948,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":5,"dotType":1,"dotBase":10,"dot":{"timeSeconds":5,"type":1,"base":10,"skillLevelArg":10},"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":491563,"name":"Magical Enlightenment","description":"Lets you regenerate (Buff0-Dot) MP every 5 seconds for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575726,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501948]}}],"icon":"/assets/ui/rom-spells/575726.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-25","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":25,"keyItemId":541960,"sourceSkillId":491564,"name":"Elemental Explosion","description":"Your [SC_SKILLTIPS_MCRI] is increased by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575720,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501949],"components":[{"id":501949,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":491564,"name":"Elemental Explosion","description":"Your [SC_SKILLTIPS_MCRI] is increased by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575720,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501949]}}],"icon":"/assets/ui/rom-spells/575720.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-30","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":541990,"sourceSkillId":491565,"name":"Rage Mana","description":"Converts your rage into (DMG0) MP and increases your magical damage by (Buff4-0)% for (Buff4-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575569,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501951,623528],"components":[{"id":501951,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":180,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":26,"abilityModifiers":[{"type":2,"value":10}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":20,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":20,"damagePowerSkillLevelArg":100,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623528,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":10}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":491565,"name":"Rage Mana","description":"Converts your rage into (DMG0) MP and increases your magical damage by (Buff4-0)% for (Buff4-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575569,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501951,623528]}}],"icon":"/assets/ui/rom-spells/575569.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-35","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542021,"sourceSkillId":492630,"name":"Activate Mana","description":"Transforms your mana into (DMG0) rage and reduces Aggro by (Buff4-0)% for (Buff4-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":80,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577005,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502899,623531],"components":[{"id":502899,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":20,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":20,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623531,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":492630,"name":"Activate Mana","description":"Transforms your mana into (DMG0) rage and reduces Aggro by (Buff4-0)% for (Buff4-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":80,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577005,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502899,623531]}}],"icon":"/assets/ui/rom-spells/577005.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-40","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":40,"keyItemId":542051,"sourceSkillId":492925,"name":"Magic Boost","description":"Lets your Berserk simultaneously raise your magic attack and physical attack while lowering your [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577596,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503186],"components":[{"id":503186,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":64,"abilityModifiers":[{"type":135,"value":-3},{"type":134,"value":3},{"type":171,"value":2},{"type":170,"value":-2}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492925,"name":"Magic Boost","description":"Lets your Berserk simultaneously raise your magic attack and physical attack while lowering your [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577596,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503186]}}],"icon":"/assets/ui/rom-spells/577596.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-45","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":542081,"sourceSkillId":493026,"name":"Enhanced Intensification","description":"Lets your Intensification increase the [SC_SKILLTIPS_MDMG]. Also increases [SC_SKILLTIPS_MCRI_POWER] while in effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577656,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":493026,"name":"Enhanced Intensification","description":"Lets your Intensification increase the [SC_SKILLTIPS_MDMG]. Also increases [SC_SKILLTIPS_MCRI_POWER] while in effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577656,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577656.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-50","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":542111,"sourceSkillId":493262,"name":"Meditative Current","description":"Whenever you hit a target with Plasma Arrow or Flame, your Casting Speed increases additionally. Effective for (Buff-Time-503533) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503534)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577791,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503533,503534],"components":[{"id":503533,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":-10}],"abilitySkillLevelArg":4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493319,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503534,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":493262,"name":"Meditative Current","description":"Whenever you hit a target with Plasma Arrow or Flame, your Casting Speed increases additionally. Effective for (Buff-Time-503533) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503534)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577791,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503533,503534]}}],"icon":"/assets/ui/rom-spells/577791.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-60","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546780,"sourceSkillId":499588,"name":"Meditation Path","description":"When you cast [490204], [490212], [490242] or [490239], you can achieve a mobile casting skill state. Lasts for 7 seconds. (Can't be re-triggered within the next 15 seconds.)","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801280,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499588,"name":"Meditation Path","description":"When you cast [490204], [490212], [490242] or [490239], you can achieve a mobile casting skill state. Lasts for 7 seconds. (Can't be re-triggered within the next 15 seconds.)","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801280,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801280.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-70","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":70,"keyItemId":546781,"sourceSkillId":499589,"name":"Wisdom and Bravery","description":"Gives your [499590] an extra increase in [SC_SKILLTIPS_STA]. \nAfter it is used, it increases your [SC_SKILLTIPS_INT] by 50% of your [SC_SKILLTIPS_STA] plus 50% of your [SC_SKILLTIPS_STR]. Lasts (Buff-Time-623148) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801328,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623150,623148],"components":[{"id":623150,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623148,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":4,"value":1}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499589,"name":"Wisdom and Bravery","description":"Gives your [499590] an extra increase in [SC_SKILLTIPS_STA]. \nAfter it is used, it increases your [SC_SKILLTIPS_INT] by 50% of your [SC_SKILLTIPS_STA] plus 50% of your [SC_SKILLTIPS_STR]. Lasts (Buff-Time-623148) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801328,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623150,623148]}}],"icon":"/assets/ui/rom-spells/801328.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-15","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":15,"keyItemId":546015,"sourceSkillId":498823,"name":"Electric Explosion Expertise","description":"While in a Charged state, every Electric Explosion hit adds additional rage and recovers MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800168,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498823,"name":"Electric Explosion Expertise","description":"While in a Charged state, every Electric Explosion hit adds additional rage and recovers MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800168,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800168.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-20","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":546016,"sourceSkillId":498825,"name":"Brain Shock","description":"Ends the cooldown time for your Lightning and Discharge. Also increases [SC_SKILLTIPS_INT] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800169,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621621,621622],"components":[{"id":621621,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":163,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621622,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498825,"name":"Brain Shock","description":"Ends the cooldown time for your Lightning and Discharge. Also increases [SC_SKILLTIPS_INT] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800169,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621621,621622]}}],"icon":"/assets/ui/rom-spells/800169.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-25","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":25,"keyItemId":546017,"sourceSkillId":498862,"name":"Electric Current Arc","description":"Increases Plasma Arrow damage and continuously adds rage while in a Charged state.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800170,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498862,"name":"Electric Current Arc","description":"Increases Plasma Arrow damage and continuously adds rage while in a Charged state.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800170,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800170.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-30","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":30,"keyItemId":546018,"sourceSkillId":498864,"name":"Voltage Seize","description":"There is a chance to use this skill when a current inflicts continuous damage. Inflicts (DMG0) + (FixDMG0) x INT [SC_SKILLTIPS_WIND]. \n[SC_SKILLTIPS_03]","target":"hostile","range":22,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800171,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621626],"components":[{"id":621626,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":-0.4,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":35,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498864,"name":"Voltage Seize","description":"There is a chance to use this skill when a current inflicts continuous damage. Inflicts (DMG0) + (FixDMG0) x INT [SC_SKILLTIPS_WIND]. \n[SC_SKILLTIPS_03]","target":"hostile","range":22,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800171,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621626]}}],"icon":"/assets/ui/rom-spells/800171.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-35","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":35,"keyItemId":546019,"sourceSkillId":498867,"name":"Energy Passage","description":"After a Static Field finishes, this skill inflicts an extra reduction of the target's [SC_SKILLTIPS_MOVE] by (Buff0-621662)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800172,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621662],"components":[{"id":621662,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498867,"name":"Energy Passage","description":"After a Static Field finishes, this skill inflicts an extra reduction of the target's [SC_SKILLTIPS_MOVE] by (Buff0-621662)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800172,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621662]}}],"icon":"/assets/ui/rom-spells/800172.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-40","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":40,"keyItemId":546020,"sourceSkillId":498869,"name":"Electrolysis Power","description":"Largely increases damage caused by Discharge and reduces the cooldown time by 10 seconds, but also cancels Stun effect.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800173,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621631,621632],"components":[{"id":621631,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":496444,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621632,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498869,"name":"Electrolysis Power","description":"Largely increases damage caused by Discharge and reduces the cooldown time by 10 seconds, but also cancels Stun effect.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800173,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621631,621632]}}],"icon":"/assets/ui/rom-spells/800173.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-45","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":45,"keyItemId":546021,"sourceSkillId":498871,"name":"Electrostatic Charge Expertise","description":"Reduces Electrostatic Charge cooldown time by 30 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800174,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498871,"name":"Electrostatic Charge Expertise","description":"Reduces Electrostatic Charge cooldown time by 30 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800174,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800174.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-50","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":50,"keyItemId":546022,"sourceSkillId":498873,"name":"Ion Storm","description":"Consumes (Buff0-Dot) rage every second to cause (DMG-621635) [SC_SKILLTIPS_WIND] on targets nearby. Also reduces wind attribute resistance by 2% for (Buff-Time-621636) seconds and can be stacked 10 times. \n(This state ends when rage has been exhausted.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"dot","coefficient":0.25,"ticks":2,"intervalMs":2000},"source":{"imageId":800175,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621634,621635,621636],"components":[{"id":621634,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":111,"specialActionFlags":0,"assistType":-1,"clearFlags":1152,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498874,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":2,"dotBase":-5,"dot":{"timeSeconds":1,"type":2,"base":-5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621635,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":79,"specialActionFlags":0,"assistType":-1,"clearFlags":3072,"abilitySkillLevelArg":5,"dotTime":1,"dotType":6,"dotBase":2,"dot":{"timeSeconds":1,"type":6,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":-25,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-25,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621636,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":32834,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":224,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498873,"name":"Ion Storm","description":"Consumes (Buff0-Dot) rage every second to cause (DMG-621635) [SC_SKILLTIPS_WIND] on targets nearby. Also reduces wind attribute resistance by 2% for (Buff-Time-621636) seconds and can be stacked 10 times. \n(This state ends when rage has been exhausted.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"dot","coefficient":0.25,"ticks":2,"intervalMs":2000},"source":{"imageId":800175,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621634,621635,621636]}}],"icon":"/assets/ui/rom-spells/800175.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-60","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":60,"keyItemId":546797,"sourceSkillId":499811,"name":"Lightning Shield","description":"Obtain a [623438] that deals (DMG-623435) + (FixDMG-623435) x INT [SC_SKILLTIPS_WIND] to the source of any damage dealt to you and has a chance to trigger a [498864].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":801624,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623438,623435],"components":[{"id":623438,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":180,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":499810,"onMagicAttackReboundMagicId":499810,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623435,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-65,"fixedValue":-0.4,"attack":{"type":0,"calculationType":1,"damagePower":-65,"damagePowerSkillLevelArg":5,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":499811,"name":"Lightning Shield","description":"Obtain a [623438] that deals (DMG-623435) + (FixDMG-623435) x INT [SC_SKILLTIPS_WIND] to the source of any damage dealt to you and has a chance to trigger a [498864].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":801624,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623438,623435]}}],"icon":"/assets/ui/rom-spells/801624.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-70","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":70,"keyItemId":546798,"sourceSkillId":499807,"name":"Ion Barrier","description":"While in a [499809] state, reduces damage suffered by (Buff0-623444)% but increases the required rage points by 10.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801625,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623444],"components":[{"id":623444,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524359,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":-30},{"type":207,"value":-30}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":499808,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":499807,"name":"Ion Barrier","description":"While in a [499809] state, reduces damage suffered by (Buff0-623444)% but increases the required rage points by 10.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801625,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623444]}}],"icon":"/assets/ui/rom-spells/801625.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-15","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":541901,"sourceSkillId":491570,"name":"Thunderclap","description":"A magic arrow binds the target for (Buff0-Time) seconds to its current location. \n(If the target is a player, they cannot move for (Buff1-Time) seconds.)\n(The effect is removed when the target is attacked.)","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575728,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501956,507286],"components":[{"id":501956,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507286,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491570,"name":"Thunderclap","description":"A magic arrow binds the target for (Buff0-Time) seconds to its current location. \n(If the target is a player, they cannot move for (Buff1-Time) seconds.)\n(The effect is removed when the target is attacked.)","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575728,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501956,507286]}}],"icon":"/assets/ui/rom-spells/575728.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-20","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":20,"keyItemId":541931,"sourceSkillId":491573,"name":"Fire Arrow","description":"Your [SC_SKILLTIPS_MCRI] is increased by (Buff0-0) and Shot inflicts additional fire damage. This effect lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_491573]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575248,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501955],"components":[{"id":501955,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":20,"value":150}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":491573,"name":"Fire Arrow","description":"Your [SC_SKILLTIPS_MCRI] is increased by (Buff0-0) and Shot inflicts additional fire damage. This effect lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_491573]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575248,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501955]}}],"icon":"/assets/ui/rom-spells/575248.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-25","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":541961,"sourceSkillId":491343,"name":"Fire Rose","description":"Plants a rose seed inside the target that causes (Buff3-Dot) Fire damage every 2 seconds for (Buff3-Time) seconds.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575226,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501842,501814,501806],"components":[{"id":501842,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":133,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-24,"dot":{"timeSeconds":2,"type":0,"base":-24,"skillLevelArg":20},"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0},{"id":501814,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":133,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":20},"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0},{"id":501806,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":133,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":20},"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":491343,"name":"Fire Rose","description":"Plants a rose seed inside the target that causes (Buff3-Dot) Fire damage every 2 seconds for (Buff3-Time) seconds.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575226,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501842,501814,501806]}}],"icon":"/assets/ui/rom-spells/575226.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-30","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":541991,"sourceSkillId":491344,"name":"Fire Rose Explosion","description":"Instantly ignites all Fire Roses planted in target, causing (DMG0) + (FixDMG-620220) x INT [SC_SKILLTIPS_FLAME]. \n(Requires 3 seeds in the target.)","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":575227,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620220],"components":[{"id":620220,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":-0.8,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":40,"fixedValue":-0.8,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":491344,"name":"Fire Rose Explosion","description":"Instantly ignites all Fire Roses planted in target, causing (DMG0) + (FixDMG-620220) x INT [SC_SKILLTIPS_FLAME]. \n(Requires 3 seeds in the target.)","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":575227,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620220]}}],"icon":"/assets/ui/rom-spells/575227.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-35","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":542022,"sourceSkillId":492631,"name":"Flame Spirit","description":"Turns your flame energy for 40 seconds into concrete substance to support your attacks.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":101686},"source":{"imageId":577006,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502900],"components":[{"id":502900,"magicFunc":3,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":101686,"summon":{"creatureId":101686,"level":0,"rangeLevel":0,"lifetimeSeconds":40,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0.3}}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":492631,"name":"Flame Spirit","description":"Turns your flame energy for 40 seconds into concrete substance to support your attacks.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":101686},"source":{"imageId":577006,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502900]}}],"icon":"/assets/ui/rom-spells/577006.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-40","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":542052,"sourceSkillId":492926,"name":"Power of the Wind","description":"Increases [SC_SKILLTIPS_MAG_HIT] by (Buff0-0). Shot also inflicts Wind damage for (Buff0-Time) seconds.\n[SC_SKILLTIPS_491573]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577597,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503187],"components":[{"id":503187,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":195,"value":50}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":492926,"name":"Power of the Wind","description":"Increases [SC_SKILLTIPS_MAG_HIT] by (Buff0-0). Shot also inflicts Wind damage for (Buff0-Time) seconds.\n[SC_SKILLTIPS_491573]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577597,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503187]}}],"icon":"/assets/ui/rom-spells/577597.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-45","classId":"rom-mage","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":542082,"sourceSkillId":493028,"name":"Fire Rose Storm","description":"You deal extra [SC_SKILLTIPS_MDMG] when you successfully launch a Fire Rose.\n([SC_SKILLTIPS_CD_1](Buff-Time-503272)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577657,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503272],"components":[{"id":503272,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":493028,"name":"Fire Rose Storm","description":"You deal extra [SC_SKILLTIPS_MDMG] when you successfully launch a Fire Rose.\n([SC_SKILLTIPS_CD_1](Buff-Time-503272)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577657,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503272]}}],"icon":"/assets/ui/rom-spells/577657.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-50","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":542112,"sourceSkillId":493263,"name":"Magic Crossflow","description":"Raises the casting speed of master and pet by (Buff0-0)% for (Buff0-Time) seconds.\n(If the pet disappears, this effect will be cancelled.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577792,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503535],"components":[{"id":503535,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":25,"hateCost":0,"settingFlags":71,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":-2}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":493496,"onTimeSeconds":5,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493263,"name":"Magic Crossflow","description":"Raises the casting speed of master and pet by (Buff0-0)% for (Buff0-Time) seconds.\n(If the pet disappears, this effect will be cancelled.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577792,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503535]}}],"icon":"/assets/ui/rom-spells/577792.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-60","classId":"rom-mage","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546782,"sourceSkillId":491576,"name":"Strength of Ashes","description":"After your [491577] disappears, this provides you with an increase in [SC_SKILLTIPS_MDMG]. Lasts (Buff-Time-623178) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801281,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623178],"components":[{"id":623178,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":20}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":491576,"name":"Strength of Ashes","description":"After your [491577] disappears, this provides you with an increase in [SC_SKILLTIPS_MDMG]. Lasts (Buff-Time-623178) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801281,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623178]}}],"icon":"/assets/ui/rom-spells/801281.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-70","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":70,"keyItemId":546783,"sourceSkillId":499597,"name":"Wind Fire Cultivation","description":"Earn both [491573] and [623181] at the same time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801329,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623179,623181],"components":[{"id":623179,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623181,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":97,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":195,"value":10}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499597,"name":"Wind Fire Cultivation","description":"Earn both [491573] and [623181] at the same time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801329,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623179,623181]}}],"icon":"/assets/ui/rom-spells/801329.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-15","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":541902,"sourceSkillId":491578,"name":"Cursed Fangs","description":"Puts a curse on your hidden weapons. For (Buff0-Time) seconds targets hit with these cursed projectiles suffer (Buff0-Dot) Dark damage every 2 seconds. (As long as your Fang Ritual is active, additional (DMG4) + (FixDMG-620238) x INT [SC_SKILLTIPS_DARK] will be done.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":575725,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501960,620238,502036,623195],"components":[{"id":501960,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":21,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":30},"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":620238,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":5,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-20,"damagePowerSkillLevelArg":25,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502036,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":15,"abilityModifiers":[{"type":50,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":623195,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":15,"abilityModifiers":[{"type":50,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":491578,"name":"Cursed Fangs","description":"Puts a curse on your hidden weapons. For (Buff0-Time) seconds targets hit with these cursed projectiles suffer (Buff0-Dot) Dark damage every 2 seconds. (As long as your Fang Ritual is active, additional (DMG4) + (FixDMG-620238) x INT [SC_SKILLTIPS_DARK] will be done.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":575725,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501960,620238,502036,623195]}}],"icon":"/assets/ui/rom-spells/575725.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-20","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":541932,"sourceSkillId":491345,"name":"Kiss of the Vampire","description":"Inflicts (DMG0) + (FixDMG-620199) x INT [SC_SKILLTIPS_DARK] on your opponent and restores (DMG4) to your HP.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575228,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620237,501560,620199],"components":[{"id":620237,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":20,"settingFlags":0,"specialActionFlags":0,"assistType":23,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":25,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501560,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":20,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":10,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":10,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620199,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":40,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":491345,"name":"Kiss of the Vampire","description":"Inflicts (DMG0) + (FixDMG-620199) x INT [SC_SKILLTIPS_DARK] on your opponent and restores (DMG4) to your HP.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575228,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620237,501560,620199]}}],"icon":"/assets/ui/rom-spells/575228.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-25","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":25,"keyItemId":541962,"sourceSkillId":491348,"name":"Demoralize","description":"Your target cannot attack for (Buff0-Time) seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575231,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501813,503839,502719],"components":[{"id":501813,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":126,"effectFlagWords":[3,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503839,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":126,"effectFlagWords":[3,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":491348,"name":"Demoralize","description":"Your target cannot attack for (Buff0-Time) seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575231,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501813,503839,502719]}}],"icon":"/assets/ui/rom-spells/575231.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-30","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":541992,"sourceSkillId":491581,"name":"Fang Ritual","description":"Raises the damage dealt by Dark magic by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575724,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502036],"components":[{"id":502036,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":15,"abilityModifiers":[{"type":50,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":491581,"name":"Fang Ritual","description":"Raises the damage dealt by Dark magic by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575724,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502036]}}],"icon":"/assets/ui/rom-spells/575724.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-35","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542023,"sourceSkillId":492632,"name":"Distract","description":"Distracts the target, so that it loses its focus on you. You get the lowest place in the aggro table for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577007,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502901],"components":[{"id":502901,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1073741824,0],"abilityModifiers":[{"type":138,"value":-35}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":492632,"name":"Distract","description":"Distracts the target, so that it loses its focus on you. You get the lowest place in the aggro table for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577007,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502901]}}],"icon":"/assets/ui/rom-spells/577007.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-40","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":40,"keyItemId":542053,"sourceSkillId":492927,"name":"Shadow Shroud","description":"Sinister magic shrouds your target, causing your Demoralize to additionally lower the target's magic defense.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577598,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":492927,"name":"Shadow Shroud","description":"Sinister magic shrouds your target, causing your Demoralize to additionally lower the target's magic defense.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577598,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577598.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-45","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":45,"keyItemId":542083,"sourceSkillId":493030,"name":"Shadow Protection","description":"Increases your casting speed by (Buff0-0)% for (Buff0-Time) seconds. If you receive a critical physical hit while it is in effect, your movement speed is instantly increased by (Buff0-503275)% for (Buff-Time-503275) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503303)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577658,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503274,503275,503303],"components":[{"id":503274,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":204,"abilityModifiers":[{"type":51,"value":-1}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503275,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10}],"abilitySkillLevelArg":11,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493178,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503303,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":60,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":493030,"name":"Shadow Protection","description":"Increases your casting speed by (Buff0-0)% for (Buff0-Time) seconds. If you receive a critical physical hit while it is in effect, your movement speed is instantly increased by (Buff0-503275)% for (Buff-Time-503275) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503303)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577658,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503274,503275,503303]}}],"icon":"/assets/ui/rom-spells/577658.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-50","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":50,"keyItemId":542113,"sourceSkillId":493264,"name":"Gift of the Baron","description":"When you succeed in casting Kiss of the Vampire, you will additionally increase the damage of your next two magical attacks. Effective for (Buff-Time-503538) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577793,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503538],"components":[{"id":503538,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"clearFlags":4096,"abilityModifiers":[{"type":44,"value":1}],"abilitySkillLevelArg":24,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493322,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":493264,"name":"Gift of the Baron","description":"When you succeed in casting Kiss of the Vampire, you will additionally increase the damage of your next two magical attacks. Effective for (Buff-Time-503538) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577793,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503538]}}],"icon":"/assets/ui/rom-spells/577793.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-60","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546784,"sourceSkillId":499600,"name":"Night Refuge","description":"When [499601] is in effect and you receive a normal attack, this instills Fear in the attacker for (Buff-Time-623192) seconds. It also immediately casts [493320] on the attacker. \n([SC_SKILLTIPS_CD_1] (Buff-Time-503303) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623192,503303],"components":[{"id":623192,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[131075,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503303,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":60,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499600,"name":"Night Refuge","description":"When [499601] is in effect and you receive a normal attack, this instills Fear in the attacker for (Buff-Time-623192) seconds. It also immediately casts [493320] on the attacker. \n([SC_SKILLTIPS_CD_1] (Buff-Time-503303) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623192,503303]}}],"icon":"/assets/ui/rom-spells/801282.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-70","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546785,"sourceSkillId":499604,"name":"Pride of the Baron","description":"When you have the [499605] effect, the critical attack caused by your spells will reduce the cooldown time of [493320] by 3 seconds. Your [493321] will then have an additional increase to the [SC_SKILLTIPS_MCRI].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801330,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499604,"name":"Pride of the Baron","description":"When you have the [499605] effect, the critical attack caused by your spells will reduce the cooldown time of [493320] by 3 seconds. Your [493321] will then have an additional increase to the [SC_SKILLTIPS_MCRI].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801330,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801330.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-15","classId":"rom-mage","secondaryClassId":"rom-priest","group":"elite","unlockLevel":15,"keyItemId":541903,"sourceSkillId":491587,"name":"Essence of Magic","description":"Increases [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-0)) x ((Buff4-0)%) + (Buff0-0) for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576262,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501962,506232],"components":[{"id":501962,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":15,"value":10}],"abilitySkillLevelArg":60,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495283,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506232,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491587,"name":"Essence of Magic","description":"Increases [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-0)) x ((Buff4-0)%) + (Buff0-0) for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576262,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501962,506232]}}],"icon":"/assets/ui/rom-spells/576262.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-20","classId":"rom-mage","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":541933,"sourceSkillId":491588,"name":"Purify","description":"Can dispel curses from your target.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575722,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501963],"components":[{"id":501963,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":491588,"name":"Purify","description":"Can dispel curses from your target.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575722,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501963]}}],"icon":"/assets/ui/rom-spells/575722.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-25","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":25,"keyItemId":541963,"sourceSkillId":491589,"name":"Outburst","description":"Flame and Fireball now have a higher chance to deal additional damage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575730,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":491589,"name":"Outburst","description":"Flame and Fireball now have a higher chance to deal additional damage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575730,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575730.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-30","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":30,"keyItemId":541993,"sourceSkillId":491590,"name":"Rising Tide Mastery","description":"Your Rising Tide is now an instant cast with a cooldown of 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575570,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":491590,"name":"Rising Tide Mastery","description":"Your Rising Tide is now an instant cast with a cooldown of 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575570,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575570.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-35","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":542024,"sourceSkillId":492633,"name":"Shine of the Holy Aura","description":"Used with a Holy Aura, there is extra recovery of HP but all mana costs raise by 1%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577008,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":492633,"name":"Shine of the Holy Aura","description":"Used with a Holy Aura, there is extra recovery of HP but all mana costs raise by 1%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577008,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577008.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-40","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":40,"keyItemId":542054,"sourceSkillId":492928,"name":"Grand Dispel","description":"Allows your Purify to also dispel harmful effects.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577599,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":492928,"name":"Grand Dispel","description":"Allows your Purify to also dispel harmful effects.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577599,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577599.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-45","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542084,"sourceSkillId":493031,"name":"Disable","description":"A successful Flame or Plasma Arrow hit decreases the target's [SC_SKILLTIPS_MCRI_PASSIVE] for (Buff-Time-503277) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503276)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577659,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503277,503276],"components":[{"id":503277,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177474,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":183,"value":-22}],"abilitySkillLevelArg":12.5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493088,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503276,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":493031,"name":"Disable","description":"A successful Flame or Plasma Arrow hit decreases the target's [SC_SKILLTIPS_MCRI_PASSIVE] for (Buff-Time-503277) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503276)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577659,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503277,503276]}}],"icon":"/assets/ui/rom-spells/577659.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-50","classId":"rom-mage","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":542114,"sourceSkillId":493265,"name":"Magic Drain","description":"Steals the target's attack power, and lowers the target's [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. It also increases your own [SC_SKILLTIPS_02] by (Buff4-0)%. Effective for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577794,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503713,503714],"components":[{"id":503713,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-2},{"type":171,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503714,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":493265,"name":"Magic Drain","description":"Steals the target's attack power, and lowers the target's [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. It also increases your own [SC_SKILLTIPS_02] by (Buff4-0)%. Effective for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577794,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503713,503714]}}],"icon":"/assets/ui/rom-spells/577794.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-60","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":60,"keyItemId":546786,"sourceSkillId":499607,"name":"Boiling Impact","description":"Increases [490256] damage and transforms your [499608] into [SC_SKILLTIPS_FLAME]. It can also be affected by [490221].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801388,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499607,"name":"Boiling Impact","description":"Increases [490256] damage and transforms your [499608] into [SC_SKILLTIPS_FLAME]. It can also be affected by [490221].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801388,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801388.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-70","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546787,"sourceSkillId":499609,"name":"Intelligence Seize","description":"Makes your [499610] cause an extra reduction of the target's [SC_SKILLTIPS_INT] and increases your [SC_SKILLTIPS_INT].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801331,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499609,"name":"Intelligence Seize","description":"Makes your [499610] cause an extra reduction of the target's [SC_SKILLTIPS_INT] and increases your [SC_SKILLTIPS_INT].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801331,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801331.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-15","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":15,"keyItemId":541904,"sourceSkillId":491594,"name":"Holy Light Strike","description":"Inflicts (DMG0) + (FixDMG-620224) x INT [SC_SKILLTIPS_LIGHT] on the target.","target":"hostile","range":15,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":575731,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620224,501972,503845],"components":[{"id":620224,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.4,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":40,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501972,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503845,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":491594,"name":"Holy Light Strike","description":"Inflicts (DMG0) + (FixDMG-620224) x INT [SC_SKILLTIPS_LIGHT] on the target.","target":"hostile","range":15,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":575731,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620224,501972,503845]}}],"icon":"/assets/ui/rom-spells/575731.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-20","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":20,"keyItemId":541934,"sourceSkillId":491347,"name":"Stars of Light","description":"The opponent is showered with exploding hexagrams of Light. For 5 seconds each second one flare explodes, dealing (DMG0) + (FixDMG-620223) x INT [SC_SKILLTIPS_LIGHT].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":2000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":575230,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620223],"components":[{"id":620223,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-25,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-25,"damagePowerSkillLevelArg":40,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":491347,"name":"Stars of Light","description":"The opponent is showered with exploding hexagrams of Light. For 5 seconds each second one flare explodes, dealing (DMG0) + (FixDMG-620223) x INT [SC_SKILLTIPS_LIGHT].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":2000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":575230,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620223]}}],"icon":"/assets/ui/rom-spells/575230.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-25","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":25,"keyItemId":541964,"sourceSkillId":491597,"name":"Enhanced Holy Light Strike","description":"Holy Light Strike now has a 30% chance to Stun the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575700,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":491597,"name":"Enhanced Holy Light Strike","description":"Holy Light Strike now has a 30% chance to Stun the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575700,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575700.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-30","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541994,"sourceSkillId":491599,"name":"Messenger of Light","description":"When activated, all damage caused by your Light based spells is increased by (Buff0-0)%. This lasts (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575727,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502034],"components":[{"id":502034,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":49,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491599,"name":"Messenger of Light","description":"When activated, all damage caused by your Light based spells is increased by (Buff0-0)%. This lasts (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575727,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502034]}}],"icon":"/assets/ui/rom-spells/575727.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-35","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":35,"keyItemId":542025,"sourceSkillId":492634,"name":"Light Charge","description":"The power of Light enters your enemy's body with a violent shock, inflicting (DMG0) + (FixDMG-620225) x INT [SC_SKILLTIPS_LIGHT] and Slowing him down by (Buff4-0)% for (Buff4-Time) seconds.\n(This skill slows the target down by a maximum of (Max-Buff0-502881)%.)\n(Players get slowed down by (Buff5-0)%.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":577009,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620225,502881,503851],"components":[{"id":620225,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":30,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":3,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502881,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10},{"type":169,"value":-10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503851,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10},{"type":169,"value":-10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492634,"name":"Light Charge","description":"The power of Light enters your enemy's body with a violent shock, inflicting (DMG0) + (FixDMG-620225) x INT [SC_SKILLTIPS_LIGHT] and Slowing him down by (Buff4-0)% for (Buff4-Time) seconds.\n(This skill slows the target down by a maximum of (Max-Buff0-502881)%.)\n(Players get slowed down by (Buff5-0)%.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":577009,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620225,502881,503851]}}],"icon":"/assets/ui/rom-spells/577009.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-40","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":40,"keyItemId":542055,"sourceSkillId":492929,"name":"Concentrated Attention","description":"Causes your Messenger of Light to increase your [SC_SKILLTIPS_MAG_HIT].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577600,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":492929,"name":"Concentrated Attention","description":"Causes your Messenger of Light to increase your [SC_SKILLTIPS_MAG_HIT].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577600,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577600.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-45","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":45,"keyItemId":542085,"sourceSkillId":493034,"name":"Light of Day","description":"When you successfully strike your opponent with Holy Light Strike or Light Charge, it instantly increases your [SC_SKILLTIPS_LIGHT] for (Buff-Time-620182) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503278)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577660,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620182,503278],"components":[{"id":620182,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":49,"value":8}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493037,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503278,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493034,"name":"Light of Day","description":"When you successfully strike your opponent with Holy Light Strike or Light Charge, it instantly increases your [SC_SKILLTIPS_LIGHT] for (Buff-Time-620182) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503278)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577660,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620182,503278]}}],"icon":"/assets/ui/rom-spells/577660.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-50","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":50,"keyItemId":542115,"sourceSkillId":493266,"name":"Energy Recovery","description":"Causes your Energy Influx to boost your [SC_SKILLTIPS_MCRI_POWER] by an additional (Buff0-503746)%. While this is in effect, each critical strike your Holy Light Strike lands will also recover (current [SC_SKILLTIPS_MP] x (DMG-506530)) + (DMG-503571) MP.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577795,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503746,506530,503571],"components":[{"id":503746,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524451,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":21,"value":2}],"abilitySkillLevelArg":8,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497727,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506530,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1048576,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":1,"fixedValue":0,"attack":{"type":1,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503571,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":15,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":15,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493266,"name":"Energy Recovery","description":"Causes your Energy Influx to boost your [SC_SKILLTIPS_MCRI_POWER] by an additional (Buff0-503746)%. While this is in effect, each critical strike your Holy Light Strike lands will also recover (current [SC_SKILLTIPS_MP] x (DMG-506530)) + (DMG-503571) MP.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577795,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503746,506530,503571]}}],"icon":"/assets/ui/rom-spells/577795.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-60","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546788,"sourceSkillId":499612,"name":"Brilliance Award","description":"Reduces your [499613] chant time by half. Also increases target's [SC_SKILLTIPS_LIGHT] by 3%. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801284,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499612,"name":"Brilliance Award","description":"Reduces your [499613] chant time by half. Also increases target's [SC_SKILLTIPS_LIGHT] by 3%. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801284,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801284.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-70","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":70,"keyItemId":546789,"sourceSkillId":499614,"name":"Saint's Resilience","description":"Removes Helpless, Dizzy, Root, Slow and Fear states. (Target must be in a Root, Slow or Dizzy state for removal effect to work.) \nThis skill can be used under any state that hinders casting. Also reduces your received damage by (Buff0-0)% and lasts for (Buff0-Time) seconds. After the [499614] effect wears off, it causes an extra increase in your [SC_SKILLTIPS_MOVE]. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801332,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623214],"components":[{"id":623214,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":60},{"type":143,"value":60}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":499615,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":499614,"name":"Saint's Resilience","description":"Removes Helpless, Dizzy, Root, Slow and Fear states. (Target must be in a Root, Slow or Dizzy state for removal effect to work.) \nThis skill can be used under any state that hinders casting. Also reduces your received damage by (Buff0-0)% and lasts for (Buff0-Time) seconds. After the [499614] effect wears off, it causes an extra increase in your [SC_SKILLTIPS_MOVE]. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801332,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623214]}}],"icon":"/assets/ui/rom-spells/801332.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-15","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":15,"keyItemId":543022,"sourceSkillId":494049,"name":"Earth Surge","description":"Causes massive damage to target, but the chance of hitting the target is pretty low. Inflicts (DMG0) + (FixDMG-620236) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1.4},"source":{"imageId":579119,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620236],"components":[{"id":620236,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-140,"fixedValue":-0.6,"attack":{"type":0,"calculationType":1,"damagePower":-140,"damagePowerSkillLevelArg":30,"fixedValue":-0.6,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494049,"name":"Earth Surge","description":"Causes massive damage to target, but the chance of hitting the target is pretty low. Inflicts (DMG0) + (FixDMG-620236) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1.4},"source":{"imageId":579119,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620236]}}],"icon":"/assets/ui/rom-spells/579119.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-20","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":20,"keyItemId":543030,"sourceSkillId":494050,"name":"Absence","description":"Causes target to become absent minded, reducing [SC_SKILLTIPS_MAG_HITP] by (Buff0-0)% for (Buff0-Time) seconds.\n(When the target is a player, lowers [SC_SKILLTIPS_MAG_HITP] by (Buff1-0)% for (Buff1-Time) seconds. )\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579120,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504559,504245],"components":[{"id":504559,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":199,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504245,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":199,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494050,"name":"Absence","description":"Causes target to become absent minded, reducing [SC_SKILLTIPS_MAG_HITP] by (Buff0-0)% for (Buff0-Time) seconds.\n(When the target is a player, lowers [SC_SKILLTIPS_MAG_HITP] by (Buff1-0)% for (Buff1-Time) seconds. )\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579120,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504559,504245]}}],"icon":"/assets/ui/rom-spells/579120.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-25","classId":"rom-mage","secondaryClassId":"rom-warden","group":"passive","unlockLevel":25,"keyItemId":543038,"sourceSkillId":494051,"name":"Flame Follower","description":"The flame follower understands the flow of flame energy, reducing your Fireball cooldown by 1 second and increasing your Fireball critical rate.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579121,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494051,"name":"Flame Follower","description":"The flame follower understands the flow of flame energy, reducing your Fireball cooldown by 1 second and increasing your Fireball critical rate.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579121,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579121.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-30","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":30,"keyItemId":543046,"sourceSkillId":494330,"name":"Earth Groaning Wind Blade","description":"Combines the power of earth and wind. Slices through the air, causing the earth to resonate, inflicting (DMG4) + (FixDMG-620234) x INT [SC_SKILLTIPS_WIND] and (DMG0) + (FixDMG-620233) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":579897,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620234,620233],"components":[{"id":620234,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620233,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494330,"name":"Earth Groaning Wind Blade","description":"Combines the power of earth and wind. Slices through the air, causing the earth to resonate, inflicting (DMG4) + (FixDMG-620234) x INT [SC_SKILLTIPS_WIND] and (DMG0) + (FixDMG-620233) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":579897,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620234,620233]}}],"icon":"/assets/ui/rom-spells/579897.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-35","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":35,"keyItemId":543054,"sourceSkillId":494562,"name":"Earth Scepter","description":"Your done magical Earth damage is increased by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579898,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504913],"components":[{"id":504913,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":45,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494562,"name":"Earth Scepter","description":"Your done magical Earth damage is increased by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579898,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504913]}}],"icon":"/assets/ui/rom-spells/579898.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-40","classId":"rom-mage","secondaryClassId":"rom-warden","group":"passive","unlockLevel":40,"keyItemId":543062,"sourceSkillId":494563,"name":"Feedback","description":"A successful hit of your Earth Groaning Wind Blade has a chance of restoring MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579899,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":494563,"name":"Feedback","description":"A successful hit of your Earth Groaning Wind Blade has a chance of restoring MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579899,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579899.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-45","classId":"rom-mage","secondaryClassId":"rom-warden","group":"passive","unlockLevel":45,"keyItemId":543070,"sourceSkillId":850318,"name":"Elves' Favor","description":"When you use Elven Amulet, any attack damage received while the effect lasts may cause your next spell casting time to be 1 second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581110,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":850318,"name":"Elves' Favor","description":"When you use Elven Amulet, any attack damage received while the effect lasts may cause your next spell casting time to be 1 second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581110,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581110.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-50","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543078,"sourceSkillId":494926,"name":"Earth Marking","description":"Earth Markings branded on your body will increase your chance to inflict critical damage with magic attacks by (Buff0-0) for (Buff0-Time) seconds. When using earth spells this chance will be additionally increased by another (Buff0-505904) points. This effect can be stacked up to 10 times.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":200,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581111,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505690,505904],"components":[{"id":505690,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505904,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":40}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494926,"name":"Earth Marking","description":"Earth Markings branded on your body will increase your chance to inflict critical damage with magic attacks by (Buff0-0) for (Buff0-Time) seconds. When using earth spells this chance will be additionally increased by another (Buff0-505904) points. This effect can be stacked up to 10 times.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":200,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581111,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505690,505904]}}],"icon":"/assets/ui/rom-spells/581111.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-60","classId":"rom-mage","secondaryClassId":"rom-warden","group":"passive","unlockLevel":60,"keyItemId":546790,"sourceSkillId":499617,"name":"Follower's Ground","description":"While [494562] is in effect, this provides an extra increase in your [SC_SKILLTIPS_INT] and [SC_SKILLTIPS_STA]. Also your [494050] will cause an additional increase in the [SC_SKILLTIPS_EARTH] received by the target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801285,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499617,"name":"Follower's Ground","description":"While [494562] is in effect, this provides an extra increase in your [SC_SKILLTIPS_INT] and [SC_SKILLTIPS_STA]. Also your [494050] will cause an additional increase in the [SC_SKILLTIPS_EARTH] received by the target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801285,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801285.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-70","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":70,"keyItemId":546791,"sourceSkillId":499620,"name":"Earth Core Barrier","description":"Reduces your received damage by (Buff0-0)%. Also all spells are transformed to instant spells. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801333,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623219],"components":[{"id":623219,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,524288],"abilityModifiers":[{"type":142,"value":60},{"type":143,"value":60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499620,"name":"Earth Core Barrier","description":"Reduces your received damage by (Buff0-0)%. Also all spells are transformed to instant spells. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801333,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623219]}}],"icon":"/assets/ui/rom-spells/801333.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-15","classId":"rom-mage","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543023,"sourceSkillId":494052,"name":"Perception","description":"Temporarily increases [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-1)% + (Buff0-0). Also increases [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-1)) x (Buff4-0)% + (Buff0-1) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579122,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504561,506234],"components":[{"id":504561,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":30},{"type":15,"value":20}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495284,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506234,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":1},{"type":168,"value":1}],"abilitySkillLevelArg":7,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494052,"name":"Perception","description":"Temporarily increases [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-1)% + (Buff0-0). Also increases [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-1)) x (Buff4-0)% + (Buff0-1) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579122,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504561,506234]}}],"icon":"/assets/ui/rom-spells/579122.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-20","classId":"rom-mage","secondaryClassId":"rom-druid","group":"elite","unlockLevel":20,"keyItemId":543031,"sourceSkillId":494053,"name":"Magic Target","description":"Temporarily increases your magic accuracy by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579123,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504562],"components":[{"id":504562,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":195,"value":10}],"abilitySkillLevelArg":10.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":494053,"name":"Magic Target","description":"Temporarily increases your magic accuracy by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579123,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504562]}}],"icon":"/assets/ui/rom-spells/579123.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-25","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":25,"keyItemId":543039,"sourceSkillId":494054,"name":"Control Flame","description":"When your Eruption effect is triggered, [SC_SKILLTIPS_02] additionally increases by (Buff0-504563)% .\n([SC_SKILLTIPS_CD_1](Buff-Time-504869)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579124,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504563,504869],"components":[{"id":504563,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":8}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494078,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504869,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494054,"name":"Control Flame","description":"When your Eruption effect is triggered, [SC_SKILLTIPS_02] additionally increases by (Buff0-504563)% .\n([SC_SKILLTIPS_CD_1](Buff-Time-504869)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579124,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504563,504869]}}],"icon":"/assets/ui/rom-spells/579124.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-30","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":30,"keyItemId":543047,"sourceSkillId":494331,"name":"Green Guardian","description":"After Mother Earth's Protection effect ends, additionally restores (Buff-Dot-620188)% + (Buff-Dot-504874) HP every 2 seconds for (Buff-Time-504874) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579900,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620188,504874],"components":[{"id":620188,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":8297,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":5,"dotBase":2,"dot":{"timeSeconds":2,"type":5,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504874,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":8299,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":30,"dot":{"timeSeconds":2,"type":0,"base":30,"skillLevelArg":30},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494331,"name":"Green Guardian","description":"After Mother Earth's Protection effect ends, additionally restores (Buff-Dot-620188)% + (Buff-Dot-504874) HP every 2 seconds for (Buff-Time-504874) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579900,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620188,504874]}}],"icon":"/assets/ui/rom-spells/579900.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-35","classId":"rom-mage","secondaryClassId":"rom-druid","group":"elite","unlockLevel":35,"keyItemId":543055,"sourceSkillId":494564,"name":"Magma Blade","description":"Forms the power of earth and fire into a blade dealing (DMG0) + (FixDMG-620227) x INT [SC_SKILLTIPS_FLAME] and (DMG4) + (FixDMG-620228) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":579901,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620227,620228],"components":[{"id":620227,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.15,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.15,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620228,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":-0.15,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":30,"fixedValue":-0.15,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":494564,"name":"Magma Blade","description":"Forms the power of earth and fire into a blade dealing (DMG0) + (FixDMG-620227) x INT [SC_SKILLTIPS_FLAME] and (DMG4) + (FixDMG-620228) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":579901,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620227,620228]}}],"icon":"/assets/ui/rom-spells/579901.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-40","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":40,"keyItemId":543063,"sourceSkillId":494565,"name":"Boiling Rock","description":"The critical hit rate for your [494564|Magma Blade's] Fire damage is increased and its Earth damage has a chance of restoring MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579902,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494565,"name":"Boiling Rock","description":"The critical hit rate for your [494564|Magma Blade's] Fire damage is increased and its Earth damage has a chance of restoring MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579902,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579902.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-45","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":45,"keyItemId":543071,"sourceSkillId":494927,"name":"Earth Attack","description":"Causes the damage range of Earth Pulse to become fan-shaped and reduces cooldown by 5 seconds. When it hits, it will increase earth damage inflicted on the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581112,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494927,"name":"Earth Attack","description":"Causes the damage range of Earth Pulse to become fan-shaped and reduces cooldown by 5 seconds. When it hits, it will increase earth damage inflicted on the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581112,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581112.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-50","classId":"rom-mage","secondaryClassId":"rom-druid","group":"elite","unlockLevel":50,"keyItemId":543079,"sourceSkillId":494928,"name":"Elven Mystic","description":"Using ancient Elven magic lets you concentrate magical energy inside your body for (Buff0-Time) seconds. While in effect casting offensive spells will give you the chance to get Energetically Charged. When this effect stacks 5 times, further casting of offensive spells will give you the chance of receiving Mystic Energy. Mystic Energy can be released to inflict (DMG-620231) + (FixDMG-620231) x INT [SC_SKILLTIPS_WIND] on your target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":3.5},"source":{"imageId":581155,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505914,505913,620231],"components":[{"id":505914,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505913,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"clearFlags":4096,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495070,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620231,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-700,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-700,"damagePowerSkillLevelArg":5,"fixedValue":-0.2,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":494928,"name":"Elven Mystic","description":"Using ancient Elven magic lets you concentrate magical energy inside your body for (Buff0-Time) seconds. While in effect casting offensive spells will give you the chance to get Energetically Charged. When this effect stacks 5 times, further casting of offensive spells will give you the chance of receiving Mystic Energy. Mystic Energy can be released to inflict (DMG-620231) + (FixDMG-620231) x INT [SC_SKILLTIPS_WIND] on your target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":3.5},"source":{"imageId":581155,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505914,505913,620231]}}],"icon":"/assets/ui/rom-spells/581155.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-60","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546792,"sourceSkillId":499621,"name":"Infiltration Spirit","description":"After a target is hit by your [499622], it causes an additional reduction of the target's [SC_SKILLTIPS_MDEF].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801286,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499621,"name":"Infiltration Spirit","description":"After a target is hit by your [499622], it causes an additional reduction of the target's [SC_SKILLTIPS_MDEF].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801286,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801286.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-70","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":70,"keyItemId":546793,"sourceSkillId":499623,"name":"Pulse Link","description":"You will receive [499624] as well when you use [499624] on a target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801334,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499623,"name":"Pulse Link","description":"You will receive [499624] as well when you use [499624] on a target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801334,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801334.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-15","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":15,"keyItemId":545992,"sourceSkillId":498744,"name":"Static Resonance","description":"Immediately resets the cooldown time for Electrostatic Charge.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800136,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621500],"components":[{"id":621500,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498744,"name":"Static Resonance","description":"Immediately resets the cooldown time for Electrostatic Charge.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800136,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621500]}}],"icon":"/assets/ui/rom-spells/800136.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-20","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":20,"keyItemId":545993,"sourceSkillId":498745,"name":"Industry Fire","description":"Increases damage dealt by Soul Pain and transforms it into fire damage. Also inflicts extra fire damage when used.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800137,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498745,"name":"Industry Fire","description":"Increases damage dealt by Soul Pain and transforms it into fire damage. Also inflicts extra fire damage when used.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800137,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800137.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-25","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":25,"keyItemId":545994,"sourceSkillId":498748,"name":"Lightning Display","description":"Increases the effective time of [621505] caused by the Plasma Arrow to (Buff-Time-621505) seconds and increases your [SC_SKILLTIPS_WIND].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800138,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621505],"components":[{"id":621505,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":18,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":96,"abilityModifiers":[{"type":20,"value":20},{"type":48,"value":1}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498748,"name":"Lightning Display","description":"Increases the effective time of [621505] caused by the Plasma Arrow to (Buff-Time-621505) seconds and increases your [SC_SKILLTIPS_WIND].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800138,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621505]}}],"icon":"/assets/ui/rom-spells/800138.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-30","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":30,"keyItemId":545995,"sourceSkillId":498750,"name":"Breath Erase","description":"Aggro is reduced by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800139,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621506],"components":[{"id":621506,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":138,"value":-10}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498750,"name":"Breath Erase","description":"Aggro is reduced by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800139,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621506]}}],"icon":"/assets/ui/rom-spells/800139.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-35","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":35,"keyItemId":545996,"sourceSkillId":498751,"name":"Elements of Pride","description":"You will receive [621508] effect when Flame is used, increasing the [SC_SKILLTIPS_WIND]. You will receive [621507] effect when Electric Explosion is used, increasing the [SC_SKILLTIPS_FLAME]. These effects can be stacked individually up to 2 times. The effects last (Buff-Time-621507) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800140,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621508,621507],"components":[{"id":621508,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":13,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":48,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621507,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":13,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":47,"value":1}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498751,"name":"Elements of Pride","description":"You will receive [621508] effect when Flame is used, increasing the [SC_SKILLTIPS_WIND]. You will receive [621507] effect when Electric Explosion is used, increasing the [SC_SKILLTIPS_FLAME]. These effects can be stacked individually up to 2 times. The effects last (Buff-Time-621507) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800140,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621508,621507]}}],"icon":"/assets/ui/rom-spells/800140.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-40","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":40,"keyItemId":545997,"sourceSkillId":498757,"name":"Soul Stepping","description":"For (Buff0-Time) seconds, allows you to move while casting any spell. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800141,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623434,621509],"components":[{"id":623434,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilityModifiers":[{"type":24,"value":20},{"type":51,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621509,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498757,"name":"Soul Stepping","description":"For (Buff0-Time) seconds, allows you to move while casting any spell. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800141,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623434,621509]}}],"icon":"/assets/ui/rom-spells/800141.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-45","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":45,"keyItemId":545998,"sourceSkillId":498758,"name":"Deep Inspiration","description":"Immediately resets the cooldown time for Intensification and Energy Well.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800142,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621510],"components":[{"id":621510,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":498758,"name":"Deep Inspiration","description":"Immediately resets the cooldown time for Intensification and Energy Well.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800142,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621510]}}],"icon":"/assets/ui/rom-spells/800142.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-50","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":545999,"sourceSkillId":498759,"name":"Fire Lightning Burst","description":"Inflicts (DMG0) + (FixDMG-621511) x INT [SC_SKILLTIPS_FLAME] and (DMG4) + (FixDMG-621512) x INT [SC_SKILLTIPS_WIND] on target. If the target doesn't die during this attack, then the skill's cooldown time is immediately reset. \n([SC_SKILLTIPS_CD_1](Buff-Time-621514)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":7000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":800143,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621511,621512,621514],"components":[{"id":621511,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621512,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621514,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498759,"name":"Fire Lightning Burst","description":"Inflicts (DMG0) + (FixDMG-621511) x INT [SC_SKILLTIPS_FLAME] and (DMG4) + (FixDMG-621512) x INT [SC_SKILLTIPS_WIND] on target. If the target doesn't die during this attack, then the skill's cooldown time is immediately reset. \n([SC_SKILLTIPS_CD_1](Buff-Time-621514)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":7000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":800143,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621511,621512,621514]}}],"icon":"/assets/ui/rom-spells/800143.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-60","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":60,"keyItemId":546794,"sourceSkillId":499813,"name":"Soul Speed","description":"Causes [498757] to additionally increase [SC_SKILLTIPS_MOVE] by (Buff0-623434)% and [SC_SKILLTIPS_CAST] by (Buff0-623434)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801622,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623434],"components":[{"id":623434,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilityModifiers":[{"type":24,"value":20},{"type":51,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":499813,"name":"Soul Speed","description":"Causes [498757] to additionally increase [SC_SKILLTIPS_MOVE] by (Buff0-623434)% and [SC_SKILLTIPS_CAST] by (Buff0-623434)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801622,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623434]}}],"icon":"/assets/ui/rom-spells/801622.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-70","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":70,"keyItemId":546796,"sourceSkillId":499814,"name":"Elemental Extraction","description":"When critically hit by [499812] or [491170], the target's [SC_SKILLTIPS_DEF] will be reduced by (Buff0-623436)% and [SC_SKILLTIPS_MDEF] by (Buff1-623436)% for (Buff-Time-623436) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801623,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623436],"components":[{"id":623436,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":-30},{"type":170,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499814,"name":"Elemental Extraction","description":"When critically hit by [499812] or [491170], the target's [SC_SKILLTIPS_DEF] will be reduced by (Buff0-623436)% and [SC_SKILLTIPS_MDEF] by (Buff1-623436)% for (Buff-Time-623436) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801623,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623436]}}],"icon":"/assets/ui/rom-spells/801623.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-15","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":541905,"sourceSkillId":491600,"name":"Battle Monk Stance","description":"When the stance is activated, [SC_SKILLTIPS_01] will be increased by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff0-506388)% + (Buff0-0), and [SC_SKILLTIPS_DEF] will be increased by (Buff0-507324)%, but healing ability will be reduced by (Buff0-506386)%. The stance is effective for(Buff0-Time) seconds. (This skill increases defense by a maximum of (Max-Buff0-507324)% and reduces healing ability by a maximum of(Max-Buff0-506386)%).","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575718,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501977,507325,506388,507324,506386],"components":[{"id":501977,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":12,"value":30}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495280,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507325,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506388,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":2}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507324,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":10}],"abilitySkillLevelArg":9.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506386,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":-3}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491600,"name":"Battle Monk Stance","description":"When the stance is activated, [SC_SKILLTIPS_01] will be increased by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff0-506388)% + (Buff0-0), and [SC_SKILLTIPS_DEF] will be increased by (Buff0-507324)%, but healing ability will be reduced by (Buff0-506386)%. The stance is effective for(Buff0-Time) seconds. (This skill increases defense by a maximum of (Max-Buff0-507324)% and reduces healing ability by a maximum of(Max-Buff0-506386)%).","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575718,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501977,507325,506388,507324,506386]}}],"icon":"/assets/ui/rom-spells/575718.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-20","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":20,"keyItemId":541935,"sourceSkillId":491362,"name":"Explosion of Fighting Spirit","description":"Mana is converted into fighting spirit to attack the target and inflict (DMG0) main hand weapon DPS. \n(Requires the Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575233,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501789],"components":[{"id":501789,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":491362,"name":"Explosion of Fighting Spirit","description":"Mana is converted into fighting spirit to attack the target and inflict (DMG0) main hand weapon DPS. \n(Requires the Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575233,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501789]}}],"icon":"/assets/ui/rom-spells/575233.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-25","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":25,"keyItemId":541965,"sourceSkillId":491363,"name":"Fighting Spirit Combination","description":"Releases two successive bursts of fighting spirit, that cause (DMG0) main hand weapon DPS. \n(Requires Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575234,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501790],"components":[{"id":501790,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":491363,"name":"Fighting Spirit Combination","description":"Releases two successive bursts of fighting spirit, that cause (DMG0) main hand weapon DPS. \n(Requires Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575234,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501790]}}],"icon":"/assets/ui/rom-spells/575234.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-30","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":541995,"sourceSkillId":491364,"name":"Ascending Dragon Strike","description":"Transforms rage into a dragon-like form inflicting (DMG0) main hand weapon DPS. \n(Requires Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575235,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501791],"components":[{"id":501791,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.8,"damagePowerSkillLevelArg":4,"fixedValue":0,"fixedType":1,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":491364,"name":"Ascending Dragon Strike","description":"Transforms rage into a dragon-like form inflicting (DMG0) main hand weapon DPS. \n(Requires Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575235,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501791]}}],"icon":"/assets/ui/rom-spells/575235.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-35","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542026,"sourceSkillId":492635,"name":"Power Build-Up","description":"Converts Mana into fighting spirit, which accumulates in you. Increases for (Buff0-Time) seconds your 1-H Weapon Damage by (Buff0-1)%, 2-H Staff Damage by (Buff0-3)%, and your maximum HP by (Buff0-0)%.\n(Requires the Battle Monk Stance.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577010,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502904],"components":[{"id":502904,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1},{"type":61,"value":3},{"type":62,"value":3},{"type":64,"value":2}],"abilitySkillLevelArg":28,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":492635,"name":"Power Build-Up","description":"Converts Mana into fighting spirit, which accumulates in you. Increases for (Buff0-Time) seconds your 1-H Weapon Damage by (Buff0-1)%, 2-H Staff Damage by (Buff0-3)%, and your maximum HP by (Buff0-0)%.\n(Requires the Battle Monk Stance.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577010,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502904]}}],"icon":"/assets/ui/rom-spells/577010.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-40","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":542056,"sourceSkillId":492930,"name":"Vindictive Strike","description":"Inflicts (DMG0) DPS on the target, and Stuns it for (Buff4-Time) seconds.","target":"hostile","range":7,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":3},"source":{"imageId":577601,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503193,503194,503855,502719],"components":[{"id":503193,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-300,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-300,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503194,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777331,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503855,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777331,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492930,"name":"Vindictive Strike","description":"Inflicts (DMG0) DPS on the target, and Stuns it for (Buff4-Time) seconds.","target":"hostile","range":7,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":3},"source":{"imageId":577601,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503193,503194,503855,502719]}}],"icon":"/assets/ui/rom-spells/577601.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-45","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":45,"keyItemId":542086,"sourceSkillId":493038,"name":"Condensed Rage","description":"Instantly lets you enter Condensed Rage state for (Buff0-Time) seconds. When attacked in this state you recover (Buff-Dot-503301) HP.\n(Requires [491600])\n(After the effect has ended it cannot be triggered again for (Buff-Time-506323) seconds.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577661,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503280,503301,506323],"components":[{"id":503280,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":107,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":493056,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503301,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":137,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495293,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":0,"dotBase":50,"dot":{"timeSeconds":1,"type":0,"base":50,"skillLevelArg":20},"attackType":0,"damagePower":50,"fixedValue":0,"summonCreatureId":0},{"id":506323,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":65,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":493038,"name":"Condensed Rage","description":"Instantly lets you enter Condensed Rage state for (Buff0-Time) seconds. When attacked in this state you recover (Buff-Dot-503301) HP.\n(Requires [491600])\n(After the effect has ended it cannot be triggered again for (Buff-Time-506323) seconds.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577661,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503280,503301,506323]}}],"icon":"/assets/ui/rom-spells/577661.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-50","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":50,"keyItemId":542116,"sourceSkillId":493267,"name":"Fire Fairy","description":"Summons a fire fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102104},"source":{"imageId":577786,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503164],"components":[{"id":503164,"magicFunc":3,"magicType":2,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"summonCreatureId":102104,"summon":{"creatureId":102104,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":493267,"name":"Fire Fairy","description":"Summons a fire fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102104},"source":{"imageId":577786,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503164]}}],"icon":"/assets/ui/rom-spells/577786.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-60","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546799,"sourceSkillId":499984,"name":"Light Healer Fighting Spirit","description":"When [622997] hits a target, it can recover the caster's HP.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801287,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622997],"components":[{"id":622997,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499984,"name":"Light Healer Fighting Spirit","description":"When [622997] hits a target, it can recover the caster's HP.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801287,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622997]}}],"icon":"/assets/ui/rom-spells/801287.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-70","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546800,"sourceSkillId":499982,"name":"Violent Kick","description":"When [493277] is in effect, [501791] carries a Stun effect and when this effect wears off, a Slow effect is invoked.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801335,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501791],"components":[{"id":501791,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.8,"damagePowerSkillLevelArg":4,"fixedValue":0,"fixedType":1,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499982,"name":"Violent Kick","description":"When [493277] is in effect, [501791] carries a Stun effect and when this effect wears off, a Slow effect is invoked.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801335,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501791]}}],"icon":"/assets/ui/rom-spells/801335.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-15","classId":"rom-priest","secondaryClassId":"rom-champion","group":"passive","unlockLevel":15,"keyItemId":546031,"sourceSkillId":498610,"name":"Infused Light Chain","description":"Increases damage caused by Chain of Light and doesn't require cooldown time. Hits can carry an extra addition of rage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800176,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498610,"name":"Infused Light Chain","description":"Increases damage caused by Chain of Light and doesn't require cooldown time. Hits can carry an extra addition of rage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800176,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800176.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-20","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":546032,"sourceSkillId":498612,"name":"Heart Rune Energy","description":"Restores (DMG1) HP to friendly targets. Also increases caster's [SC_SKILLTIPS_MND] by (Buff4-0)% for (Buff4-Time) seconds.","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":800177,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621152,621546,621547],"components":[{"id":621152,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0.4,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":20,"fixedValue":0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":621546,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":35,"fixedValue":0.2,"attack":{"type":0,"calculationType":5,"damagePower":35,"damagePowerSkillLevelArg":20,"fixedValue":0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":621547,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":7,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":164,"value":2}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498612,"name":"Heart Rune Energy","description":"Restores (DMG1) HP to friendly targets. Also increases caster's [SC_SKILLTIPS_MND] by (Buff4-0)% for (Buff4-Time) seconds.","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":800177,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621152,621546,621547]}}],"icon":"/assets/ui/rom-spells/800177.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-25","classId":"rom-priest","secondaryClassId":"rom-champion","group":"passive","unlockLevel":25,"keyItemId":546033,"sourceSkillId":498613,"name":"Protection Rune Seal","description":"Increases Regeneration's healing effect and carries an 8% chance to immediately reset the cooldown time of Heart Rune Energy every time Regeneration is invoked.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800178,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498613,"name":"Protection Rune Seal","description":"Increases Regeneration's healing effect and carries an 8% chance to immediately reset the cooldown time of Heart Rune Energy every time Regeneration is invoked.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800178,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800178.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-30","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":30,"keyItemId":546034,"sourceSkillId":498615,"name":"Healing Diamond Light","description":"Converts (Buff0-Dot)% MP to Diamond Light every second while in effect. Also recovers (DMG-621551) + (FixDMG-621551) x INT HP for all party members in contact in a range of 120. \n(This state ends when MP has been exhausted.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":29,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.35},"source":{"imageId":800179,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621550,621551],"components":[{"id":621550,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":111,"specialActionFlags":0,"assistType":-1,"clearFlags":2080,"abilityModifiers":[{"type":0,"value":8}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":498616,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":6,"dotBase":-7,"dot":{"timeSeconds":1,"type":6,"base":-7,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621551,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":35,"fixedValue":0.1,"attack":{"type":0,"calculationType":5,"damagePower":35,"damagePowerSkillLevelArg":12,"fixedValue":0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498615,"name":"Healing Diamond Light","description":"Converts (Buff0-Dot)% MP to Diamond Light every second while in effect. Also recovers (DMG-621551) + (FixDMG-621551) x INT HP for all party members in contact in a range of 120. \n(This state ends when MP has been exhausted.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":29,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.35},"source":{"imageId":800179,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621550,621551]}}],"icon":"/assets/ui/rom-spells/800179.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-35","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":35,"keyItemId":546035,"sourceSkillId":498617,"name":"Diamond Light Activation","description":"Immediately recovers (DMG4) MP and increases amount of healing by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800180,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621151,621150],"components":[{"id":621151,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"clearFlags":2048,"abilityModifiers":[{"type":149,"value":4}],"abilitySkillLevelArg":15,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621150,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":33,"fixedValue":0,"attack":{"type":1,"calculationType":8,"damagePower":33,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498617,"name":"Diamond Light Activation","description":"Immediately recovers (DMG4) MP and increases amount of healing by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800180,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621151,621150]}}],"icon":"/assets/ui/rom-spells/800180.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-40","classId":"rom-priest","secondaryClassId":"rom-champion","group":"passive","unlockLevel":40,"keyItemId":546036,"sourceSkillId":498618,"name":"Quick Heal","description":"Increases the amount of HP restored by Heart Rune Energy when current target's HP falls below 40%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800181,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498618,"name":"Quick Heal","description":"Increases the amount of HP restored by Heart Rune Energy when current target's HP falls below 40%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800181,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800181.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-45","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":45,"keyItemId":546037,"sourceSkillId":498619,"name":"Rune Footstep","description":"Increases [SC_SKILLTIPS_MOVE] by (Buff0-0)% and [SC_SKILLTIPS_HEAL] by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800182,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621552],"components":[{"id":621552,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10},{"type":149,"value":5}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498619,"name":"Rune Footstep","description":"Increases [SC_SKILLTIPS_MOVE] by (Buff0-0)% and [SC_SKILLTIPS_HEAL] by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800182,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621552]}}],"icon":"/assets/ui/rom-spells/800182.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-50","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":50,"keyItemId":546038,"sourceSkillId":498620,"name":"Beacon of Regeneration","description":"After a beacon has been created on a friendly party member, it will restore (DMG-621227) points of this member's HP every time you invoke a healing effect. \n(Beacon of Regeneration lasts for (Buff0-Time) seconds.)","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":29,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800183,"sourceEffectType":0,"sourceTarget":1,"componentIds":[620489,620490,621227],"components":[{"id":620489,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":0,"value":10},{"type":0,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620490,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":524481,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":0,"value":10},{"type":0,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621227,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":35,"dot":{"timeSeconds":1,"type":0,"base":35,"skillLevelArg":30},"attackType":0,"damagePower":35,"fixedValue":0.2,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498620,"name":"Beacon of Regeneration","description":"After a beacon has been created on a friendly party member, it will restore (DMG-621227) points of this member's HP every time you invoke a healing effect. \n(Beacon of Regeneration lasts for (Buff0-Time) seconds.)","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":29,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800183,"sourceEffectType":0,"sourceTarget":1,"componentIds":[620489,620490,621227]}}],"icon":"/assets/ui/rom-spells/800183.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-60","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":60,"keyItemId":546811,"sourceSkillId":498625,"name":"Tower of Vitality","description":"Creates a tower that increases the attributes of friendly targets within range by (Buff0-622051)% for 20 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":6,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801628,"sourceEffectType":0,"sourceTarget":0,"componentIds":[622047,622051],"components":[{"id":622047,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622051,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":166,"value":6}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":498625,"name":"Tower of Vitality","description":"Creates a tower that increases the attributes of friendly targets within range by (Buff0-622051)% for 20 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":6,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801628,"sourceEffectType":0,"sourceTarget":0,"componentIds":[622047,622051]}}],"icon":"/assets/ui/rom-spells/801628.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-70","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":70,"keyItemId":546812,"sourceSkillId":498626,"name":"Light Connection","description":"Creates a shield on a target party member that reduces damage taken by (Buff1-623068)% and increases the target's and caster's [SC_SKILLTIPS_MOVE] by (Buff0-623068)%.\n(Cannot be cast on yourself.)","target":"friendly","range":21.700000000000003,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801629,"sourceEffectType":0,"sourceTarget":1,"componentIds":[622994,623068],"components":[{"id":622994,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":268435456,"specialActionFlags":8,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623068,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":5},{"type":206,"value":-5},{"type":207,"value":-5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":498626,"name":"Light Connection","description":"Creates a shield on a target party member that reduces damage taken by (Buff1-623068)% and increases the target's and caster's [SC_SKILLTIPS_MOVE] by (Buff0-623068)%.\n(Cannot be cast on yourself.)","target":"friendly","range":21.700000000000003,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801629,"sourceEffectType":0,"sourceTarget":1,"componentIds":[622994,623068]}}],"icon":"/assets/ui/rom-spells/801629.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-15","classId":"rom-priest","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":541906,"sourceSkillId":491323,"name":"Embrace of the Water Spirit","description":"Beseeches the Water Spirits for their blessing, and raises your and your party members' [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501778,506321],"components":[{"id":501778,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":15,"value":20}],"abilitySkillLevelArg":40,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495292,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506321,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491323,"name":"Embrace of the Water Spirit","description":"Beseeches the Water Spirits for their blessing, and raises your and your party members' [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501778,506321]}}],"icon":"/assets/ui/rom-spells/575261.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-20","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":541936,"sourceSkillId":492396,"name":"Throat Stab","description":"Increase the range of Throat Attack","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575264,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":492396,"name":"Throat Stab","description":"Increase the range of Throat Attack","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575264,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575264.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-25","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":25,"keyItemId":541966,"sourceSkillId":492357,"name":"Enhanced Wave Armor","description":"Your Wave Armor now also increases defense.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575714,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":492357,"name":"Enhanced Wave Armor","description":"Your Wave Armor now also increases defense.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575714,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575714.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-30","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":30,"keyItemId":541996,"sourceSkillId":492398,"name":"Tide Control","description":"Rising Tide now additionaly causes ranged weapon damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575265,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":492398,"name":"Tide Control","description":"Rising Tide now additionaly causes ranged weapon damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575265,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575265.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-35","classId":"rom-priest","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":542027,"sourceSkillId":492636,"name":"Curing Shot","description":"Shoots an arrow filled with the power of Light on 5 friendly targets within reach, healing them for (DMG0) HP and additionally restores (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":12000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":577011,"sourceEffectType":0,"sourceTarget":16,"componentIds":[502905,502914],"components":[{"id":502905,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":20,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":20,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502914,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":10,"dot":{"timeSeconds":2,"type":0,"base":10,"skillLevelArg":15},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":492636,"name":"Curing Shot","description":"Shoots an arrow filled with the power of Light on 5 friendly targets within reach, healing them for (DMG0) HP and additionally restores (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":12000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":577011,"sourceEffectType":0,"sourceTarget":16,"componentIds":[502905,502914]}}],"icon":"/assets/ui/rom-spells/577011.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-40","classId":"rom-priest","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":542057,"sourceSkillId":490070,"name":"Ice Blade","description":"Turns magic into a knife blade to attack the target, causing (DMG0) [SC_SKILLTIPS_WATER].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":577602,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620410],"components":[{"id":620410,"magicFunc":0,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-25,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-25,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":490070,"name":"Ice Blade","description":"Turns magic into a knife blade to attack the target, causing (DMG0) [SC_SKILLTIPS_WATER].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":577602,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620410]}}],"icon":"/assets/ui/rom-spells/577602.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-45","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":542087,"sourceSkillId":493039,"name":"Saint's Blessing","description":"When you cast a Heal on a friendly target whose HP is lower than 30%, the healing effect will be additionally enhanced by (Buff0-503283) + (Buff0-620406)%.","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577662,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503283,620406],"components":[{"id":503283,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":81920,"abilityModifiers":[{"type":150,"value":30}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"summonCreatureId":0},{"id":620406,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":81920,"abilityModifiers":[{"type":149,"value":1}],"abilitySkillLevelArg":19,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":493039,"name":"Saint's Blessing","description":"When you cast a Heal on a friendly target whose HP is lower than 30%, the healing effect will be additionally enhanced by (Buff0-503283) + (Buff0-620406)%.","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577662,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503283,620406]}}],"icon":"/assets/ui/rom-spells/577662.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-50","classId":"rom-priest","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":542117,"sourceSkillId":493268,"name":"Water Fairy","description":"Summons a water fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102105},"source":{"imageId":577787,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503456],"components":[{"id":503456,"magicFunc":3,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102105,"summon":{"creatureId":102105,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493268,"name":"Water Fairy","description":"Summons a water fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102105},"source":{"imageId":577787,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503456]}}],"icon":"/assets/ui/rom-spells/577787.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-60","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546801,"sourceSkillId":499980,"name":"Area of Light Chain","description":"When [499979] hits, it recovers the HP of all party members within an area of 60.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801288,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499980,"name":"Area of Light Chain","description":"When [499979] hits, it recovers the HP of all party members within an area of 60.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801288,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801288.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-70","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546802,"sourceSkillId":499978,"name":"Waterstop Curse","description":"When [493278] is in effect, casting [499977] has a chance to reset the cooldown time of [492636].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801336,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499978,"name":"Waterstop Curse","description":"When [493278] is in effect, casting [499977] has a chance to reset the cooldown time of [492636].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801336,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801336.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-15","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":541907,"sourceSkillId":492403,"name":"Snake Curse","description":"Your curse inflicts (Buff0-Dot) points of Dark damage every 2 seconds for (Buff0-Time) seconds on your target.","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575708,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502663],"components":[{"id":502663,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":26},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":492403,"name":"Snake Curse","description":"Your curse inflicts (Buff0-Dot) points of Dark damage every 2 seconds for (Buff0-Time) seconds on your target.","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575708,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502663]}}],"icon":"/assets/ui/rom-spells/575708.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-20","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":541937,"sourceSkillId":492402,"name":"Infectious Wound","description":"Infects target's wounds, causing (DMG0) points of [SC_SKILLTIPS_DARK] and lowers the effectiveness of heals received by the target by (Buff4-0)%. Lasts (Buff4-Time) seconds.\n(This skill lowers the effectiveness of heals received by the target by a maximum of (Max-Buff0-502006)%.)\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575552,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620412,502006,504251],"components":[{"id":620412,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8256,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":25,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502006,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504251,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":492402,"name":"Infectious Wound","description":"Infects target's wounds, causing (DMG0) points of [SC_SKILLTIPS_DARK] and lowers the effectiveness of heals received by the target by (Buff4-0)%. Lasts (Buff4-Time) seconds.\n(This skill lowers the effectiveness of heals received by the target by a maximum of (Max-Buff0-502006)%.)\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575552,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620412,502006,504251]}}],"icon":"/assets/ui/rom-spells/575552.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-25","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":541967,"sourceSkillId":492400,"name":"Quick Spellcasting","description":"Uses your Nimble Hands for greatly increased spell casting speed.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575551,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":492400,"name":"Quick Spellcasting","description":"Uses your Nimble Hands for greatly increased spell casting speed.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575551,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575551.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-30","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":541997,"sourceSkillId":492360,"name":"Purge","description":"Removes all beneficial effects on target.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575249,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502549],"components":[{"id":502549,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":492360,"name":"Purge","description":"Removes all beneficial effects on target.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575249,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502549]}}],"icon":"/assets/ui/rom-spells/575249.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-35","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542028,"sourceSkillId":492637,"name":"Lure of the Snake Woman","description":"Lures the target into a poisoned dreamland for (Buff-Time-502906) seconds. Inflicts (Buff0-Dot) Dark damage every 2 seconds for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":45000,"costs":[{"resource":"energy","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577012,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502882,502906,503865],"components":[{"id":502882,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-10,"dot":{"timeSeconds":2,"type":0,"base":-10,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502906,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":43,"effectFlagWords":[33554547,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":492646,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503865,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":43,"effectFlagWords":[33554547,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":492646,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":492637,"name":"Lure of the Snake Woman","description":"Lures the target into a poisoned dreamland for (Buff-Time-502906) seconds. Inflicts (Buff0-Dot) Dark damage every 2 seconds for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":45000,"costs":[{"resource":"energy","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577012,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502882,502906,503865]}}],"icon":"/assets/ui/rom-spells/577012.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-40","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":542058,"sourceSkillId":492932,"name":"Shadow Fury","description":"Increases the whole party's [SC_SKILLTIPS_MCRI] by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577603,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503196],"components":[{"id":503196,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":492932,"name":"Shadow Fury","description":"Increases the whole party's [SC_SKILLTIPS_MCRI] by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577603,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503196]}}],"icon":"/assets/ui/rom-spells/577603.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-45","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":542088,"sourceSkillId":493040,"name":"Snake Spirit","description":"Replenishes your mana when the effect of your Snake Curse wears off. (This effect can only be used on one target at one time.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577663,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":493040,"name":"Snake Spirit","description":"Replenishes your mana when the effect of your Snake Curse wears off. (This effect can only be used on one target at one time.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577663,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577663.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-50","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":542118,"sourceSkillId":493269,"name":"Shadow Fairy","description":"Summons a shadow fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102106},"source":{"imageId":577788,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503458],"components":[{"id":503458,"magicFunc":3,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102106,"summon":{"creatureId":102106,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":493269,"name":"Shadow Fairy","description":"Summons a shadow fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102106},"source":{"imageId":577788,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503458]}}],"icon":"/assets/ui/rom-spells/577788.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-60","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546803,"sourceSkillId":499961,"name":"Toxic Feedback","description":"Makes your [499975] have a chance to make the next [499976] an instant spell.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801289,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499961,"name":"Toxic Feedback","description":"Makes your [499975] have a chance to make the next [499976] an instant spell.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801289,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801289.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-70","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546804,"sourceSkillId":499974,"name":"Black Source Resonance","description":"When [493279] is in effect, [499973] can cause additional [SC_SKILLTIPS_DARK]. Lasts for (Buff-Time-623027) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801337,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623027],"components":[{"id":623027,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":1,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":1,"type":0,"base":-16,"skillLevelArg":30},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499974,"name":"Black Source Resonance","description":"When [493279] is in effect, [499973] can cause additional [SC_SKILLTIPS_DARK]. Lasts for (Buff-Time-623027) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801337,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623027]}}],"icon":"/assets/ui/rom-spells/801337.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-15","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541908,"sourceSkillId":491586,"name":"Freeze","description":"Frost roots your target for (Buff0-Time) seconds. (For players this effect lasts for (Buff1-Time) seconds. Effect is removed when target receives damage.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575250,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501961,503844],"components":[{"id":501961,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":10,"hateCost":50,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[83,0],"clearFlags":2,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503844,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":5,"hateCost":50,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[83,0],"clearFlags":2,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491586,"name":"Freeze","description":"Frost roots your target for (Buff0-Time) seconds. (For players this effect lasts for (Buff1-Time) seconds. Effect is removed when target receives damage.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575250,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501961,503844]}}],"icon":"/assets/ui/rom-spells/575250.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-20","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":541938,"sourceSkillId":491646,"name":"Remove Curse","description":"Removes curse from target.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575252,"sourceEffectType":0,"sourceTarget":4,"componentIds":[502063],"components":[{"id":502063,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":491646,"name":"Remove Curse","description":"Removes curse from target.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575252,"sourceEffectType":0,"sourceTarget":4,"componentIds":[502063]}}],"icon":"/assets/ui/rom-spells/575252.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-25","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":541968,"sourceSkillId":491644,"name":"Angel's Blessing","description":"The Angel's Blessing grants your party restoration of additional (Buff0-Dot) MP every 5 seconds. Lasts (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575715,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502026],"components":[{"id":502026,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":5,"dotType":1,"dotBase":10,"dot":{"timeSeconds":5,"type":1,"base":10,"skillLevelArg":8},"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491644,"name":"Angel's Blessing","description":"The Angel's Blessing grants your party restoration of additional (Buff0-Dot) MP every 5 seconds. Lasts (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575715,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502026]}}],"icon":"/assets/ui/rom-spells/575715.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-30","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":541998,"sourceSkillId":491365,"name":"Angel's Carol","description":"Angels appear among the group and all party members regenerate (DMG-502064) MP every 2 seconds. Lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575236,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501792,502064],"components":[{"id":501792,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435527,"specialActionFlags":0,"assistType":24,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":491647,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":60,"fixedValue":0,"summonCreatureId":0},{"id":502064,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":30,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":30,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491365,"name":"Angel's Carol","description":"Angels appear among the group and all party members regenerate (DMG-502064) MP every 2 seconds. Lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575236,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501792,502064]}}],"icon":"/assets/ui/rom-spells/575236.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-35","classId":"rom-priest","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":542029,"sourceSkillId":492638,"name":"Lightning Rod","description":"If Bone Chill is on the target, striking it with Lightning will also cause an Electric Shock, which raises suffered Water and Wind damage for (Buff-Time-502907) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577014,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502907],"components":[{"id":502907,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":28,"value":-50},{"type":30,"value":-50}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":492638,"name":"Lightning Rod","description":"If Bone Chill is on the target, striking it with Lightning will also cause an Electric Shock, which raises suffered Water and Wind damage for (Buff-Time-502907) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577014,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502907]}}],"icon":"/assets/ui/rom-spells/577014.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-40","classId":"rom-priest","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":542059,"sourceSkillId":492933,"name":"Enlightenment","description":"When you use Heal, you temporarily increase your Wisdom.\n(This skill increases your Wisdom by a maximum of (Max-Buff0-503197)%.)\n([SC_SKILLTIPS_CD_1](Buff-Time-506532)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577604,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503197,506532],"components":[{"id":503197,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":29,"abilityModifiers":[{"type":164,"value":1}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495295,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506532,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":492933,"name":"Enlightenment","description":"When you use Heal, you temporarily increase your Wisdom.\n(This skill increases your Wisdom by a maximum of (Max-Buff0-503197)%.)\n([SC_SKILLTIPS_CD_1](Buff-Time-506532)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577604,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503197,506532]}}],"icon":"/assets/ui/rom-spells/577604.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-45","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":542089,"sourceSkillId":493043,"name":"Icewind Blade","description":"Water and wind energies combine to form a sharpened blade that inflicts (DMG4) Wind damage and (DMG0) Water damage to the target.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":577664,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620413,620414],"components":[{"id":620413,"magicFunc":0,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620414,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":493043,"name":"Icewind Blade","description":"Water and wind energies combine to form a sharpened blade that inflicts (DMG4) Wind damage and (DMG0) Water damage to the target.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":577664,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620413,620414]}}],"icon":"/assets/ui/rom-spells/577664.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-50","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":542119,"sourceSkillId":493270,"name":"Wind Fairy","description":"Summons a wind fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102107},"source":{"imageId":577789,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503460],"components":[{"id":503460,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102107,"summon":{"creatureId":102107,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":493270,"name":"Wind Fairy","description":"Summons a wind fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102107},"source":{"imageId":577789,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503460]}}],"icon":"/assets/ui/rom-spells/577789.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-60","classId":"rom-priest","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546805,"sourceSkillId":499972,"name":"Element Defense","description":"Casting [499971] will earn a blessing that reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by 3%. Can be stacked a maximum of 3 times.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801290,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499972,"name":"Element Defense","description":"Casting [499971] will earn a blessing that reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by 3%. Can be stacked a maximum of 3 times.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801290,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801290.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-70","classId":"rom-priest","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546806,"sourceSkillId":499958,"name":"Spinning Wind","description":"While [499970] is in effect, the caster's [SC_SKILLTIPS_CAST] will increase by (Buff0-623018)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801338,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623018],"components":[{"id":623018,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"clearFlags":32,"abilityModifiers":[{"type":51,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499958,"name":"Spinning Wind","description":"While [499970] is in effect, the caster's [SC_SKILLTIPS_CAST] will increase by (Buff0-623018)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801338,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623018]}}],"icon":"/assets/ui/rom-spells/801338.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-15","classId":"rom-priest","secondaryClassId":"rom-knight","group":"passive","unlockLevel":15,"keyItemId":541909,"sourceSkillId":492355,"name":"Enhanced Grace of Life","description":"Your Grace of Life also increases the maximum MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575707,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":492355,"name":"Enhanced Grace of Life","description":"Your Grace of Life also increases the maximum MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575707,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575707.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-20","classId":"rom-priest","secondaryClassId":"rom-knight","group":"passive","unlockLevel":20,"keyItemId":541939,"sourceSkillId":492361,"name":"Life Link","description":"Your Urgent Heal now also heals you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575255,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":492361,"name":"Life Link","description":"Your Urgent Heal now also heals you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575255,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575255.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-25","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":25,"keyItemId":541969,"sourceSkillId":491648,"name":"Last Prayer","description":"Your next spell's casting time is reduced to 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575717,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502030],"components":[{"id":502030,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1601536,"abilityModifiers":[{"type":51,"value":-1000}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":1,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":491648,"name":"Last Prayer","description":"Your next spell's casting time is reduced to 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575717,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502030]}}],"icon":"/assets/ui/rom-spells/575717.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-30","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541999,"sourceSkillId":491366,"name":"Divine Incarnation","description":"By transforming into a Divine Incarnation the effectiveness of your heals is increased by (Buff0-0)% and the MP cost is reduced by (Buff0-4)%, but [SC_SKILLTIPS_02] also decreases by (Buff0-3)%. Effect lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575237,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501793],"components":[{"id":501793,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":15},{"type":171,"value":-50},{"type":33,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491366,"name":"Divine Incarnation","description":"By transforming into a Divine Incarnation the effectiveness of your heals is increased by (Buff0-0)% and the MP cost is reduced by (Buff0-4)%, but [SC_SKILLTIPS_02] also decreases by (Buff0-3)%. Effect lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575237,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501793]}}],"icon":"/assets/ui/rom-spells/575237.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-35","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":35,"keyItemId":542030,"sourceSkillId":492639,"name":"Calm Heart","description":"Cast on a friendly target making it resist Fear for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577016,"sourceEffectType":0,"sourceTarget":4,"componentIds":[502908],"components":[{"id":502908,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":17,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492639,"name":"Calm Heart","description":"Cast on a friendly target making it resist Fear for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577016,"sourceEffectType":0,"sourceTarget":4,"componentIds":[502908]}}],"icon":"/assets/ui/rom-spells/577016.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-40","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":40,"keyItemId":542060,"sourceSkillId":492934,"name":"Sacrificial Cure","description":"Sacrifice your own life energy to restore a party member's HP by (DMG0).\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":70,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":577605,"sourceEffectType":0,"sourceTarget":1,"componentIds":[503199],"components":[{"id":503199,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":30,"damagePowerSkillLevelArg":4.6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":492934,"name":"Sacrificial Cure","description":"Sacrifice your own life energy to restore a party member's HP by (DMG0).\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":70,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":577605,"sourceEffectType":0,"sourceTarget":1,"componentIds":[503199]}}],"icon":"/assets/ui/rom-spells/577605.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-45","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":45,"keyItemId":542090,"sourceSkillId":493044,"name":"Holy Power","description":"Temporarily increases [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff0-1)% + (Buff0-0) for (Buff0-Time) seconds. This effect disappears if you use Heal three times.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577665,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503287,503445],"components":[{"id":503287,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"clearFlags":16384,"abilityModifiers":[{"type":5,"value":60},{"type":164,"value":1}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493090,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503445,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493044,"name":"Holy Power","description":"Temporarily increases [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff0-1)% + (Buff0-0) for (Buff0-Time) seconds. This effect disappears if you use Heal three times.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577665,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503287,503445]}}],"icon":"/assets/ui/rom-spells/577665.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-50","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":50,"keyItemId":542120,"sourceSkillId":493271,"name":"Light Fairy","description":"Summons a light fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102108},"source":{"imageId":577790,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503506],"components":[{"id":503506,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102108,"summon":{"creatureId":102108,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493271,"name":"Light Fairy","description":"Summons a light fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102108},"source":{"imageId":577790,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503506]}}],"icon":"/assets/ui/rom-spells/577790.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-60","classId":"rom-priest","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546807,"sourceSkillId":499968,"name":"Splendor Ripple","description":"When [499967] is cast, it will recover extra HP for the target.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801291,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499968,"name":"Splendor Ripple","description":"When [499967] is cast, it will recover extra HP for the target.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801291,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801291.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-70","classId":"rom-priest","secondaryClassId":"rom-knight","group":"passive","unlockLevel":70,"keyItemId":546808,"sourceSkillId":499957,"name":"Light Guidance","description":"(While [499966] is in effect, the caster's [SC_SKILLTIPS_HEAL] will increase by (Buff0-623015)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801339,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623015],"components":[{"id":623015,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":499957,"name":"Light Guidance","description":"(While [499966] is in effect, the caster's [SC_SKILLTIPS_HEAL] will increase by (Buff0-623015)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801339,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623015]}}],"icon":"/assets/ui/rom-spells/801339.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-15","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":15,"keyItemId":546023,"sourceSkillId":498766,"name":"Psychic Passage","description":"When Psychic Arrows hit, this skill restores (DMG-621518) HP to the target's current target.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800144,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621518],"components":[{"id":621518,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":50,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498766,"name":"Psychic Passage","description":"When Psychic Arrows hit, this skill restores (DMG-621518) HP to the target's current target.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800144,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621518]}}],"icon":"/assets/ui/rom-spells/800144.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-20","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":20,"keyItemId":546024,"sourceSkillId":498769,"name":"Touch of Revival","description":"Restores (DMG0) HP to all party members in a fan-shaped range of 120.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":800145,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621519],"components":[{"id":621519,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498769,"name":"Touch of Revival","description":"Restores (DMG0) HP to all party members in a fan-shaped range of 120.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":800145,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621519]}}],"icon":"/assets/ui/rom-spells/800145.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-25","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":25,"keyItemId":546025,"sourceSkillId":498770,"name":"Prayer of Tribulation","description":"Continuously heals a friendly target 4 times. Each time restores (DMG0) HP. When target's HP reaches over 40%, the skill increases the target's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by 2% for (Buff-Time-621522) seconds. When the target's HP falls below 40%, this skill can be stacked 2 times at once, up to 8 times.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":577662,"sourceEffectType":0,"sourceTarget":7,"componentIds":[621520,621521,621522],"components":[{"id":621520,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621521,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621522,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":2},{"type":170,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498770,"name":"Prayer of Tribulation","description":"Continuously heals a friendly target 4 times. Each time restores (DMG0) HP. When target's HP reaches over 40%, the skill increases the target's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by 2% for (Buff-Time-621522) seconds. When the target's HP falls below 40%, this skill can be stacked 2 times at once, up to 8 times.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":577662,"sourceEffectType":0,"sourceTarget":7,"componentIds":[621520,621521,621522]}}],"icon":"/assets/ui/rom-spells/577662.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-30","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":30,"keyItemId":546026,"sourceSkillId":498771,"name":"Soul Cleansing Ceremony","description":"Cleanse can also remove cursed states.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800147,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498771,"name":"Soul Cleansing Ceremony","description":"Cleanse can also remove cursed states.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800147,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800147.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-35","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":35,"keyItemId":546027,"sourceSkillId":498773,"name":"Spirit Jump","description":"Blessed by the holy spirit, you are able to pull a friendly target close to you.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800148,"sourceEffectType":0,"sourceTarget":1,"componentIds":[621524],"components":[{"id":621524,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":-2147483648,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498773,"name":"Spirit Jump","description":"Blessed by the holy spirit, you are able to pull a friendly target close to you.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800148,"sourceEffectType":0,"sourceTarget":1,"componentIds":[621524]}}],"icon":"/assets/ui/rom-spells/800148.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-40","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":40,"keyItemId":546028,"sourceSkillId":498774,"name":"Spirit Spring","description":"Blessed Spring Water can increase the healing you receive.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800149,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498774,"name":"Spirit Spring","description":"Blessed Spring Water can increase the healing you receive.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800149,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800149.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-45","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":45,"keyItemId":546029,"sourceSkillId":495296,"name":"Holy Salvation Candle","description":"Once this is used, your next Holy Aura can be cast on friendly targets. However, the effect time is reduced by 2 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800150,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621556,621557],"components":[{"id":621556,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1072,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621557,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":495296,"name":"Holy Salvation Candle","description":"Once this is used, your next Holy Aura can be cast on friendly targets. However, the effect time is reduced by 2 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800150,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621556,621557]}}],"icon":"/assets/ui/rom-spells/800150.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-50","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":546030,"sourceSkillId":498798,"name":"Spirit Embodiment","description":"Summons the Spirit Embodiment. For the duration of its existence, the embodiment will recover (DMG-621099) HP for the party member with the lowest HP every time a spell is cast. It also reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621149)% for (Buff-Time-621149) seconds.\nThe Spirit Embodiment remains for 30 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.9},"source":{"imageId":800151,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621097,621098,621099,621149],"components":[{"id":621097,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621098,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"clearFlags":48,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621099,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":90,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":90,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":621149,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":-1879048125,"specialActionFlags":0,"assistType":20,"clearFlags":48,"abilityModifiers":[{"type":206,"value":-10},{"type":207,"value":-10},{"type":209,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498798,"name":"Spirit Embodiment","description":"Summons the Spirit Embodiment. For the duration of its existence, the embodiment will recover (DMG-621099) HP for the party member with the lowest HP every time a spell is cast. It also reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621149)% for (Buff-Time-621149) seconds.\nThe Spirit Embodiment remains for 30 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.9},"source":{"imageId":800151,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621097,621098,621099,621149]}}],"icon":"/assets/ui/rom-spells/800151.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-60","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":60,"keyItemId":546809,"sourceSkillId":498628,"name":"Spatial Jump","description":"Blessed by the holy spirit, you are able to pull friendly targets in a range of 180 close to you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801626,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623175],"components":[{"id":623175,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":498628,"name":"Spatial Jump","description":"Blessed by the holy spirit, you are able to pull friendly targets in a range of 180 close to you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801626,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623175]}}],"icon":"/assets/ui/rom-spells/801626.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-70","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":70,"keyItemId":546810,"sourceSkillId":499829,"name":"Life Surge","description":"Continuous casting for 15 seconds. Increases all attributes of friendly targets in range by (Buff4-0)% and recovers (DMG0) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801627,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623468,623200],"components":[{"id":623468,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":4,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":4,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623200,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":166,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499829,"name":"Life Surge","description":"Continuous casting for 15 seconds. Increases all attributes of friendly targets in range by (Buff4-0)% and recovers (DMG0) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801627,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623468,623200]}}],"icon":"/assets/ui/rom-spells/801627.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-15","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":15,"keyItemId":541910,"sourceSkillId":491609,"name":"Whirlwind Shield Mastery","description":"Increases the main hand weapon damage dealt by Whirlwind Shield.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575555,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491609,"name":"Whirlwind Shield Mastery","description":"Increases the main hand weapon damage dealt by Whirlwind Shield.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575555,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575555.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-20","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":541940,"sourceSkillId":490065,"name":"Weapon Master","description":"Allows you to equip all swords, axes, and hammers and increases their damage by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575229,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500221],"components":[{"id":500221,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":56,"value":4},{"type":92,"value":1},{"type":88,"value":1}],"abilitySkillLevelArg":17,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":490065,"name":"Weapon Master","description":"Allows you to equip all swords, axes, and hammers and increases their damage by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575229,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500221]}}],"icon":"/assets/ui/rom-spells/575229.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-25","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":541970,"sourceSkillId":491639,"name":"Deadly Whirlwind","description":"The rage cost for Whirlwind is reduced by 10 points, cooldown is reduced by 20 seconds. For 10 seconds the target suffers Deadly Wounds and the effectiveness of healings is reduced by 30%.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575549,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":491639,"name":"Deadly Whirlwind","description":"The rage cost for Whirlwind is reduced by 10 points, cooldown is reduced by 20 seconds. For 10 seconds the target suffers Deadly Wounds and the effectiveness of healings is reduced by 30%.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575549,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575549.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-30","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":542001,"sourceSkillId":490064,"name":"Quick Reflexes","description":"Gives you panther-like reflexes. Raises your [SC_SKILLTIPS_PARRY] by (Buff0-0) and your critical hit rate by (Buff0-1) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575209,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500220],"components":[{"id":500220,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":210},{"type":18,"value":150},{"type":20,"value":150}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":490064,"name":"Quick Reflexes","description":"Gives you panther-like reflexes. Raises your [SC_SKILLTIPS_PARRY] by (Buff0-0) and your critical hit rate by (Buff0-1) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575209,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500220]}}],"icon":"/assets/ui/rom-spells/575209.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-35","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542031,"sourceSkillId":490088,"name":"Fearless","description":"Increases your courage. During the effect time, you are immune against Fear. Also increases [SC_SKILLTIPS_STR] and [SC_SKILLTIPS_STA] for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577017,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502113],"components":[{"id":502113,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":17,"abilityModifiers":[{"type":161,"value":3},{"type":162,"value":3}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":490088,"name":"Fearless","description":"Increases your courage. During the effect time, you are immune against Fear. Also increases [SC_SKILLTIPS_STR] and [SC_SKILLTIPS_STA] for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577017,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502113]}}],"icon":"/assets/ui/rom-spells/577017.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-40","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":542061,"sourceSkillId":492935,"name":"Master of Parry","description":"Increases your [SC_SKILLTIPS_PARRY] by (Buff0-0). (Disappears after two successful blocks)","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577606,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503192],"components":[{"id":503192,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":103,"specialActionFlags":0,"assistType":33,"abilityModifiers":[{"type":22,"value":5000}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":493094,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492935,"name":"Master of Parry","description":"Increases your [SC_SKILLTIPS_PARRY] by (Buff0-0). (Disappears after two successful blocks)","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577606,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503192]}}],"icon":"/assets/ui/rom-spells/577606.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-45","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":542091,"sourceSkillId":490086,"name":"Survival Instinct","description":"When attacked while under [490085] and [490084] states, there is a chance that [502114] will be activated and the cooldown time of [492935] will be reduced by 1 second.\n[502114]: Temporarily increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_AGI] for (Buff-Time-502114) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577666,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502114],"components":[{"id":502114,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":2},{"type":165,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":490086,"name":"Survival Instinct","description":"When attacked while under [490085] and [490084] states, there is a chance that [502114] will be activated and the cooldown time of [492935] will be reduced by 1 second.\n[502114]: Temporarily increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_AGI] for (Buff-Time-502114) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577666,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502114]}}],"icon":"/assets/ui/rom-spells/577666.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-50","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":50,"keyItemId":542121,"sourceSkillId":490018,"name":"Authoritative Deterrence","description":"Forces a target to face and attack you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622319)%. Increases all damage on the target by (Buff4-0)% for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577796,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503557,502112,622319],"components":[{"id":503557,"magicFunc":7,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502112,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":5},{"type":207,"value":5}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622319,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":1}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":490018,"name":"Authoritative Deterrence","description":"Forces a target to face and attack you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622319)%. Increases all damage on the target by (Buff4-0)% for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577796,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503557,502112,622319]}}],"icon":"/assets/ui/rom-spells/577796.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-60","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":60,"keyItemId":546813,"sourceSkillId":499930,"name":"United Efforts","description":"Rushes to party members and provides a shield for them and you. Reduces [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-0)%. Lasts for (Buff0-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801292,"sourceEffectType":0,"sourceTarget":1,"componentIds":[623154],"components":[{"id":623154,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":30},{"type":142,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499930,"name":"United Efforts","description":"Rushes to party members and provides a shield for them and you. Reduces [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-0)%. Lasts for (Buff0-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801292,"sourceEffectType":0,"sourceTarget":1,"componentIds":[623154]}}],"icon":"/assets/ui/rom-spells/801292.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-70","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546814,"sourceSkillId":491608,"name":"Divine Punishment","description":"Increases damage dealt by [490151] by (Buff0-500284)%. When [490151] hits the target, it will increase the Light damage on the target by (Buff0-502052)% for (Buff-Time-502052) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801340,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500284,502052],"components":[{"id":500284,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":1},{"type":205,"value":1}],"abilitySkillLevelArg":50,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502052,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":190,"abilityModifiers":[{"type":225,"value":1}],"abilitySkillLevelArg":50,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":491608,"name":"Divine Punishment","description":"Increases damage dealt by [490151] by (Buff0-500284)%. When [490151] hits the target, it will increase the Light damage on the target by (Buff0-502052)% for (Buff-Time-502052) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801340,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500284,502052]}}],"icon":"/assets/ui/rom-spells/801340.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-15","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":541911,"sourceSkillId":491616,"name":"Arrow of Vengeance","description":"Fires an arrow full of aggro that taunts your target. You become the one with the most aggro. Also increases your aggro by (Buff0-622326)%.\n(Requires ranged weapon.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575253,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502061,622326],"components":[{"id":502061,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":200,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"summonCreatureId":0},{"id":622326,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491616,"name":"Arrow of Vengeance","description":"Fires an arrow full of aggro that taunts your target. You become the one with the most aggro. Also increases your aggro by (Buff0-622326)%.\n(Requires ranged weapon.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575253,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502061,622326]}}],"icon":"/assets/ui/rom-spells/575253.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-20","classId":"rom-knight","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":541941,"sourceSkillId":491610,"name":"Enhanced Holy Strike","description":"Increases the main weapon damage of your Holy Strike.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575550,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":491610,"name":"Enhanced Holy Strike","description":"Increases the main weapon damage of your Holy Strike.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575550,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575550.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-25","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":541971,"sourceSkillId":491613,"name":"Holy Chains","description":"Roots your target with your holy powers for (Buff0-Time) seconds. (Can only be used on undead and demons)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575548,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502058],"components":[{"id":502058,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":0,"effectFlagWords":[67,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":491613,"name":"Holy Chains","description":"Roots your target with your holy powers for (Buff0-Time) seconds. (Can only be used on undead and demons)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575548,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502058]}}],"icon":"/assets/ui/rom-spells/575548.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-30","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":542002,"sourceSkillId":491354,"name":"Heavenly Arrow","description":"As you pray for the power of the holy Light, an arrow of Light shoots down from the sky and taunts up the enemies within a range of 100. You become the one with the most aggro. Also increases your aggro by (Buff0-622320)%.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575207,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501795,622320],"components":[{"id":501795,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":200,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"summonCreatureId":0},{"id":622320,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":491354,"name":"Heavenly Arrow","description":"As you pray for the power of the holy Light, an arrow of Light shoots down from the sky and taunts up the enemies within a range of 100. You become the one with the most aggro. Also increases your aggro by (Buff0-622320)%.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575207,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501795,622320]}}],"icon":"/assets/ui/rom-spells/575207.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-35","classId":"rom-knight","secondaryClassId":"rom-scout","group":"passive","unlockLevel":35,"keyItemId":542032,"sourceSkillId":490066,"name":"Weaken Weapon Strength","description":"When you use your Heavenly Arrow to taunt a target, the physical damage of the target will be lowered.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577018,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":490066,"name":"Weaken Weapon Strength","description":"When you use your Heavenly Arrow to taunt a target, the physical damage of the target will be lowered.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577018,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577018.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-40","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":542062,"sourceSkillId":492939,"name":"Sacred Resistance","description":"Causes (DMG0) ranged weapon DPS to your target and increases your [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff4-0)) x (Buff8-0)% + (Buff4-0) for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503454)[SC_SKILLTIPS_CD_2])","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577610,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503206,503207,506236,503454],"components":[{"id":503206,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":-1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503207,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342701795,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":6,"value":20}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493246,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506236,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268959841,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":165,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503454,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":492939,"name":"Sacred Resistance","description":"Causes (DMG0) ranged weapon DPS to your target and increases your [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff4-0)) x (Buff8-0)% + (Buff4-0) for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503454)[SC_SKILLTIPS_CD_2])","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577610,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503206,503207,506236,503454]}}],"icon":"/assets/ui/rom-spells/577610.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-45","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":45,"keyItemId":542092,"sourceSkillId":493046,"name":"Sacred Protection","description":"Focuses holy energy onto your shield, temporarily increasing your chance to shield block by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577667,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503290],"components":[{"id":503290,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":33,"abilityModifiers":[{"type":172,"value":100}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":493046,"name":"Sacred Protection","description":"Focuses holy energy onto your shield, temporarily increasing your chance to shield block by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577667,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503290]}}],"icon":"/assets/ui/rom-spells/577667.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-50","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":542122,"sourceSkillId":493273,"name":"Disregard Danger","description":"Shares (Buff0-0)% damage of one attack on a party member. Also increases [SC_SKILLTIPS_PARRY] by (Buff4-0) for (Buff4-Time) seconds.\n(Cannot be cast on yourself.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577797,"sourceEffectType":1,"sourceTarget":1,"componentIds":[502056,506305],"components":[{"id":502056,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":40}],"abilitySkillLevelArg":2,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":491614,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506305,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493273,"name":"Disregard Danger","description":"Shares (Buff0-0)% damage of one attack on a party member. Also increases [SC_SKILLTIPS_PARRY] by (Buff4-0) for (Buff4-Time) seconds.\n(Cannot be cast on yourself.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577797,"sourceEffectType":1,"sourceTarget":1,"componentIds":[502056,506305]}}],"icon":"/assets/ui/rom-spells/577797.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-60","classId":"rom-knight","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546815,"sourceSkillId":499926,"name":"Evil Shackles","description":"[499925] is not limited to any target type, but when target is not an Undead or Demon target, effect time is reduced by half.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801293,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499926,"name":"Evil Shackles","description":"[499925] is not limited to any target type, but when target is not an Undead or Demon target, effect time is reduced by half.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801293,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801293.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-70","classId":"rom-knight","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546816,"sourceSkillId":499923,"name":"Blood Punishment","description":"When [499924] is activated it increases your received healing by (Buff0-623167)%. Also increases damage inflicted by [499923] by (Buff0-623168)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801341,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623167,623168],"components":[{"id":623167,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":101,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":144,"value":50}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":499910,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623168,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":100},{"type":205,"value":100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499923,"name":"Blood Punishment","description":"When [499924] is activated it increases your received healing by (Buff0-623167)%. Also increases damage inflicted by [499923] by (Buff0-623168)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801341,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623167,623168]}}],"icon":"/assets/ui/rom-spells/801341.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-15","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":15,"keyItemId":541912,"sourceSkillId":491621,"name":"God's Sword","description":"Your Holy Strike's critical hit rate is increased by 40%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575232,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":491621,"name":"God's Sword","description":"Your Holy Strike's critical hit rate is increased by 40%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575232,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575232.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-20","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":541942,"sourceSkillId":490019,"name":"Smash","description":"Direct attack on your enemy causing (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-504896) [SC_SKILLTIPS_DMG|Physical Light Damage]. (Can only be used after you inflict a critical hit.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":7,"percentage":true}],"passive":false,"effect":{"kind":"dot","coefficient":0.9,"ticks":5,"intervalMs":2000},"source":{"imageId":575702,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504896],"components":[{"id":504896,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":106,"specialActionFlags":0,"assistType":39,"abilityModifiers":[{"type":138,"value":20}],"abilitySkillLevelArg":5,"dotTime":10,"dotType":0,"dotBase":20,"dot":{"timeSeconds":10,"type":0,"base":20,"skillLevelArg":5},"attackType":0,"damagePower":-90,"fixedValue":-0.2,"attack":{"type":0,"calculationType":9,"damagePower":-90,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":8,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":490019,"name":"Smash","description":"Direct attack on your enemy causing (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-504896) [SC_SKILLTIPS_DMG|Physical Light Damage]. (Can only be used after you inflict a critical hit.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":7,"percentage":true}],"passive":false,"effect":{"kind":"dot","coefficient":0.9,"ticks":5,"intervalMs":2000},"source":{"imageId":575702,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504896]}}],"icon":"/assets/ui/rom-spells/575702.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-25","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":541972,"sourceSkillId":491618,"name":"Blind Stab Mastery","description":"Extends the Blind effect of your Blind Stab to (Buff-Time-501990) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575721,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501990],"components":[{"id":501990,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"effectFlagWords":[32,0],"abilityModifiers":[{"type":197,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":491618,"name":"Blind Stab Mastery","description":"Extends the Blind effect of your Blind Stab to (Buff-Time-501990) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575721,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501990]}}],"icon":"/assets/ui/rom-spells/575721.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-30","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":542003,"sourceSkillId":491355,"name":"Crazy Blades","description":"For (Buff0-Time) seconds your [SC_SKILLTIPS_CRI] is increased by (Buff0-0).","target":"self","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575208,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501796],"components":[{"id":501796,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":491355,"name":"Crazy Blades","description":"For (Buff0-Time) seconds your [SC_SKILLTIPS_CRI] is increased by (Buff0-0).","target":"self","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575208,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501796]}}],"icon":"/assets/ui/rom-spells/575208.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-35","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542033,"sourceSkillId":490020,"name":"Dance of Two Blades","description":"The whirling weapons inflict two times (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second to multiple targets inside a range of 50.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577019,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502048],"components":[{"id":502048,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":3,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":490020,"name":"Dance of Two Blades","description":"The whirling weapons inflict two times (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second to multiple targets inside a range of 50.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577019,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502048]}}],"icon":"/assets/ui/rom-spells/577019.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-40","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":542063,"sourceSkillId":495402,"name":"Leopard Instinct","description":"Your reaction time will become like that of a leopard for (Buff0-Time) seconds, increasing your dodge rate by (Buff0-0)%. There is also a chance of absorbing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG]. \n(This effect will cease after absorbing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] 3 times.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":577608,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620144,620141],"components":[{"id":620144,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":524481,"specialActionFlags":0,"assistType":31,"abilityModifiers":[{"type":198,"value":50}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497926,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620141,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":483,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497924,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":1,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":495402,"name":"Leopard Instinct","description":"Your reaction time will become like that of a leopard for (Buff0-Time) seconds, increasing your dodge rate by (Buff0-0)%. There is also a chance of absorbing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG]. \n(This effect will cease after absorbing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] 3 times.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":577608,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620144,620141]}}],"icon":"/assets/ui/rom-spells/577608.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-45","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":542093,"sourceSkillId":493047,"name":"Panther's Blessing","description":"When attacked while under the protection of Shield of Valor or Shield of Discipline, there is a chance that your dodge rate increases temporarily. Lasts (Buff-Time-503282) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577668,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503282],"components":[{"id":503282,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":2}],"abilitySkillLevelArg":8,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":493183,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":493047,"name":"Panther's Blessing","description":"When attacked while under the protection of Shield of Valor or Shield of Discipline, there is a chance that your dodge rate increases temporarily. Lasts (Buff-Time-503282) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577668,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503282]}}],"icon":"/assets/ui/rom-spells/577668.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-50","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":50,"keyItemId":542123,"sourceSkillId":499934,"name":"God's Vengeance","description":"When your [499909] hits the target, there is a 50% chance that the Holy Seal won't be consumed, but it will still cause the damage that the Holy Seal deals.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577798,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":499934,"name":"God's Vengeance","description":"When your [499909] hits the target, there is a 50% chance that the Holy Seal won't be consumed, but it will still cause the damage that the Holy Seal deals.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577798,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577798.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-60","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546817,"sourceSkillId":490028,"name":"Approach","description":"Makes [490029] increase the Light damage on the target by (Buff0-501941)% and reduce the damage received by (Buff0-501942)% for (Buff-Time-501941) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801294,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501941,501942],"components":[{"id":501941,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":225,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":501942,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":-20},{"type":207,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":490028,"name":"Approach","description":"Makes [490029] increase the Light damage on the target by (Buff0-501941)% and reduce the damage received by (Buff0-501942)% for (Buff-Time-501941) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801294,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501941,501942]}}],"icon":"/assets/ui/rom-spells/801294.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-70","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546818,"sourceSkillId":490021,"name":"Revenge Instinct","description":"[490022] doesn't require consumption anymore. Increases the damage dealt by [490022] and gives the target 1 Holy Seal. There is a 50% chance of giving the target another layer of Holy Seal.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801342,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":490021,"name":"Revenge Instinct","description":"[490022] doesn't require consumption anymore. Increases the damage dealt by [490022] and gives the target 1 Holy Seal. There is a 50% chance of giving the target another layer of Holy Seal.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801342,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801342.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-15","classId":"rom-knight","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541913,"sourceSkillId":491606,"name":"Holy Light Domain","description":"The power of the holy light in you inflicts (DMG-502050) + [SC_SKILLTIPS_STA] x (FixDMG-502050) [SC_SKILLTIPS_LIGHT] every 2 seconds to surrounding targets within range. Also adds a [502051] and lasts for (Buff-Time-502049) seconds.\n[502051]: Reduces damage by (Buff0-502051)%. The effect lasts (Buff-Time-502051) seconds.\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":575553,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502049,502050,502051],"components":[{"id":502049,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":5,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":497471,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502050,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":10,"hateCost":20,"settingFlags":0,"specialActionFlags":0,"assistType":38,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-20,"damagePowerSkillLevelArg":25,"fixedValue":-0.2,"fixedType":8,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502051,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":1,"abilityModifiers":[{"type":173,"value":-1},{"type":44,"value":-1}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491606,"name":"Holy Light Domain","description":"The power of the holy light in you inflicts (DMG-502050) + [SC_SKILLTIPS_STA] x (FixDMG-502050) [SC_SKILLTIPS_LIGHT] every 2 seconds to surrounding targets within range. Also adds a [502051] and lasts for (Buff-Time-502049) seconds.\n[502051]: Reduces damage by (Buff0-502051)%. The effect lasts (Buff-Time-502051) seconds.\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":575553,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502049,502050,502051]}}],"icon":"/assets/ui/rom-spells/575553.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-20","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":20,"keyItemId":541943,"sourceSkillId":491630,"name":"Lightning Shield","description":"Your Whirlwind Shield now deals extra wind damage and slows the target for 5 seconds.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575723,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":491630,"name":"Lightning Shield","description":"Your Whirlwind Shield now deals extra wind damage and slows the target for 5 seconds.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575723,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575723.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-25","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":25,"keyItemId":541973,"sourceSkillId":491625,"name":"Divine Intensification","description":"Doubles the effect time of Intensification and increases the Light damage dealt by you.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577020,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491625,"name":"Divine Intensification","description":"Doubles the effect time of Intensification and increases the Light damage dealt by you.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577020,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577020.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-30","classId":"rom-knight","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":542004,"sourceSkillId":491350,"name":"Mana Shield","description":"Instantly restores (DMG4) MP and increases maximum MP by (Buff0-0)%. Each point of damage absorbed by the Mana Shield costs 1 MP. This shield lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":30000},"source":{"imageId":575746,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501797,506311],"components":[{"id":501797,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilityModifiers":[{"type":168,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":0,"effect":0,"point":0,"skillLevelArg":0}},{"id":506311,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":100,"fixedValue":0,"attack":{"type":1,"calculationType":8,"damagePower":100,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491350,"name":"Mana Shield","description":"Instantly restores (DMG4) MP and increases maximum MP by (Buff0-0)%. Each point of damage absorbed by the Mana Shield costs 1 MP. This shield lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":30000},"source":{"imageId":575746,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501797,506311]}}],"icon":"/assets/ui/rom-spells/575746.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-35","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":542034,"sourceSkillId":490076,"name":"Confession Judgment","description":"Makes [490077] deal extra [SC_SKILLTIPS_LIGHT] and adds 4 stacks of Holy Seal effect. The cooldown time of [490151] will also be immediately reset.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":803164,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":490076,"name":"Confession Judgment","description":"Makes [490077] deal extra [SC_SKILLTIPS_LIGHT] and adds 4 stacks of Holy Seal effect. The cooldown time of [490151] will also be immediately reset.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":803164,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/803164.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-40","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":542064,"sourceSkillId":490035,"name":"Hall of Order","description":"Increases damage dealt by [491628] and the effect time of [500292] by 6 seconds. The caster's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] will be increased as well.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577609,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500292],"components":[{"id":500292,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":1,"abilityModifiers":[{"type":173,"value":-1},{"type":44,"value":-1}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":490035,"name":"Hall of Order","description":"Increases damage dealt by [491628] and the effect time of [500292] by 6 seconds. The caster's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] will be increased as well.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577609,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500292]}}],"icon":"/assets/ui/rom-spells/577609.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-45","classId":"rom-knight","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":542094,"sourceSkillId":490034,"name":"Light Energy Weapon","description":"The weapon obtains the power of light, giving your normal attack additional (Buff0-0) Light damage.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570957,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502105],"components":[{"id":502105,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":188,"value":100}],"abilitySkillLevelArg":15,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":490034,"name":"Light Energy Weapon","description":"The weapon obtains the power of light, giving your normal attack additional (Buff0-0) Light damage.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570957,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502105]}}],"icon":"/assets/ui/rom-spells/570957.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-50","classId":"rom-knight","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":542124,"sourceSkillId":490078,"name":"War Prayer","description":"Deals (DMG0) + [SC_SKILLTIPS_STA] x (FixDMG-502102) Light damage on the target and adds one layer of Holy Seal every 3 seconds for (Buff4-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":577799,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502102,502103],"components":[{"id":502102,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":30,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-65,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-65,"damagePowerSkillLevelArg":25,"fixedValue":-0.2,"fixedType":8,"fixedDamageSkillLevelArg":20,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502103,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":70,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":490079,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":490078,"name":"War Prayer","description":"Deals (DMG0) + [SC_SKILLTIPS_STA] x (FixDMG-502102) Light damage on the target and adds one layer of Holy Seal every 3 seconds for (Buff4-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":577799,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502102,502103]}}],"icon":"/assets/ui/rom-spells/577799.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-60","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546819,"sourceSkillId":499917,"name":"Magic Healing","description":"While your [499626] is in effect, an extra 1% of HP is recovered every second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801295,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499917,"name":"Magic Healing","description":"While your [499626] is in effect, an extra 1% of HP is recovered every second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801295,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801295.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-70","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546820,"sourceSkillId":490031,"name":"Confessor","description":"Reduces the cooldown time of [490032] by 4 seconds, and the cooldown time of [490033] by 10 seconds. When both skills hit the target, the caster's [SC_SKILLTIPS_MOVE] will be increased by (Buff0-502101)% for (Buff-Time-502101) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801343,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502101],"components":[{"id":502101,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":33}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-2.7,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":490031,"name":"Confessor","description":"Reduces the cooldown time of [490032] by 4 seconds, and the cooldown time of [490033] by 10 seconds. When both skills hit the target, the caster's [SC_SKILLTIPS_MOVE] will be increased by (Buff0-502101)% for (Buff-Time-502101) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801343,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502101]}}],"icon":"/assets/ui/rom-spells/801343.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-15","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":15,"keyItemId":541914,"sourceSkillId":491635,"name":"Holy Light's Fury","description":"Reduces the cooldown time of [490149] by 3 seconds, also increases the damage dealt.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575554,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491635,"name":"Holy Light's Fury","description":"Reduces the cooldown time of [490149] by 3 seconds, also increases the damage dealt.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575554,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575554.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-20","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":541944,"sourceSkillId":490194,"name":"Holy Smite","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] each second. If the target has the Holy Seal effect, it will all be consumed to heal the caster and a nearby party member, restoring an amount of HP between (DMG-500206) and (DMG-500209) maximum HP, according to the amount of the Holy Seal.\n|cff99FF37 Each Holy Seal restores (DMG-500206) maximum HP.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575547,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500108,500206,500209],"components":[{"id":500108,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500206,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":2,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":2,"damagePowerSkillLevelArg":3,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500209,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":8,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":8,"damagePowerSkillLevelArg":3,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":490194,"name":"Holy Smite","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] each second. If the target has the Holy Seal effect, it will all be consumed to heal the caster and a nearby party member, restoring an amount of HP between (DMG-500206) and (DMG-500209) maximum HP, according to the amount of the Holy Seal.\n|cff99FF37 Each Holy Seal restores (DMG-500206) maximum HP.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575547,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500108,500206,500209]}}],"icon":"/assets/ui/rom-spells/575547.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-25","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":25,"keyItemId":541974,"sourceSkillId":491640,"name":"Holy Protection","description":"Reduces inflicted aggro by (Buff0-0)% and increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-1)% for (Buff0-Time) seconds. If you cast it on yourself, it will increase the inflicted aggro by (Buff1-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575251,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500673,500674],"components":[{"id":500673,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":98,"abilityModifiers":[{"type":138,"value":-2},{"type":135,"value":2},{"type":170,"value":2}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":50,"summonCreatureId":0},{"id":500674,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":98,"abilityModifiers":[{"type":138,"value":2},{"type":170,"value":2},{"type":135,"value":2}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":491640,"name":"Holy Protection","description":"Reduces inflicted aggro by (Buff0-0)% and increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-1)% for (Buff0-Time) seconds. If you cast it on yourself, it will increase the inflicted aggro by (Buff1-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575251,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500673,500674]}}],"icon":"/assets/ui/rom-spells/575251.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-30","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":542005,"sourceSkillId":491351,"name":"Free Will","description":"Target is immune against Root and Slow effects for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575210,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501798],"components":[{"id":501798,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":491351,"name":"Free Will","description":"Target is immune against Root and Slow effects for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575210,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501798]}}],"icon":"/assets/ui/rom-spells/575210.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-35","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":542035,"sourceSkillId":490080,"name":"Truth Oracle","description":"Reduces the cooldown time of [490081] by 30 seconds. When you use [490081], there is a chance of not consuming Holy Seal, but it will still cause the damage that the Holy Seal deals.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577021,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":490080,"name":"Truth Oracle","description":"Reduces the cooldown time of [490081] by 30 seconds. When you use [490081], there is a chance of not consuming Holy Seal, but it will still cause the damage that the Holy Seal deals.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577021,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577021.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-40","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":40,"keyItemId":542065,"sourceSkillId":490030,"name":"Concentration Practice","description":"Increases [SC_SKILLTIPS_HITP] and [SC_SKILLTIPS_MAG_HITP] by (Buff0-0)%, as well as [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] by (Buff4-0).\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577607,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503201,501944],"components":[{"id":503201,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":2},{"type":199,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501944,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":30,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":30},{"type":18,"value":30}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":490030,"name":"Concentration Practice","description":"Increases [SC_SKILLTIPS_HITP] and [SC_SKILLTIPS_MAG_HITP] by (Buff0-0)%, as well as [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] by (Buff4-0).\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577607,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503201,501944]}}],"icon":"/assets/ui/rom-spells/577607.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-45","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542095,"sourceSkillId":490036,"name":"Great Inspiration","description":"Let your [490037] increase your maximum HP and enable the party members in a range of 60 to block one attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577670,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":490036,"name":"Great Inspiration","description":"Let your [490037] increase your maximum HP and enable the party members in a range of 60 to block one attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577670,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577670.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-50","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":542125,"sourceSkillId":491632,"name":"Holy Illumination","description":"Boosts the healing capacity of party members within a radius of 60 by (Buff0-0)%, [SC_SKILLTIPS_DMG] by (Buff0-1)% and [SC_SKILLTIPS_MDMG] by (Buff0-2)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":50,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577800,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502106],"components":[{"id":502106,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":174,"abilityModifiers":[{"type":144,"value":4},{"type":173,"value":2},{"type":192,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":491632,"name":"Holy Illumination","description":"Boosts the healing capacity of party members within a radius of 60 by (Buff0-0)%, [SC_SKILLTIPS_DMG] by (Buff0-1)% and [SC_SKILLTIPS_MDMG] by (Buff0-2)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":50,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577800,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502106]}}],"icon":"/assets/ui/rom-spells/577800.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-60","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":60,"keyItemId":546821,"sourceSkillId":499913,"name":"Angel Salvation","description":"Uses the holy light to resurrect a player. \n(Can be used in battle.)","target":"friendly","range":15,"castTimeMs":4000,"cooldownMs":180000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":801296,"sourceEffectType":0,"sourceTarget":15,"componentIds":[623182],"components":[{"id":623182,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499913,"name":"Angel Salvation","description":"Uses the holy light to resurrect a player. \n(Can be used in battle.)","target":"friendly","range":15,"castTimeMs":4000,"cooldownMs":180000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":801296,"sourceEffectType":0,"sourceTarget":15,"componentIds":[623182]}}],"icon":"/assets/ui/rom-spells/801296.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-70","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546822,"sourceSkillId":499914,"name":"Divine Protection","description":"When [499912] is cast, the party members can receive an extra (Buff0-623183)% damage reduction and a (Buff-Dot-623361) HP recovery every second.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801344,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623183,623361],"components":[{"id":623183,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":2},{"type":143,"value":2}],"abilitySkillLevelArg":24,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-152.95,"fixedValue":0,"summonCreatureId":0},{"id":623361,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":1,"dotType":0,"dotBase":20,"dot":{"timeSeconds":1,"type":0,"base":20,"skillLevelArg":14},"attackType":0,"damagePower":-152.95,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499914,"name":"Divine Protection","description":"When [499912] is cast, the party members can receive an extra (Buff0-623183)% damage reduction and a (Buff-Dot-623361) HP recovery every second.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801344,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623183,623361]}}],"icon":"/assets/ui/rom-spells/801344.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-15","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":543080,"sourceSkillId":494001,"name":"Double Chop","description":"Inflicts (DMG0) main hand weapon DPS twice.\n(Each skill level adds to aggro)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579061,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504510],"components":[{"id":504510,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":5.5,"fixedValue":-0.1,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":494001,"name":"Double Chop","description":"Inflicts (DMG0) main hand weapon DPS twice.\n(Each skill level adds to aggro)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579061,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504510]}}],"icon":"/assets/ui/rom-spells/579061.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-20","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":20,"keyItemId":543090,"sourceSkillId":494002,"name":"Beast Chop","description":"Inflicts (DMG0) main hand weapon DPS and a [620690] for (Buff4-Time) seconds.\n(Each skill level adds to aggro)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579062,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504511,620690],"components":[{"id":504511,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":-0.1,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0},{"id":620690,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":181,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":494002,"name":"Beast Chop","description":"Inflicts (DMG0) main hand weapon DPS and a [620690] for (Buff4-Time) seconds.\n(Each skill level adds to aggro)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579062,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504511,620690]}}],"icon":"/assets/ui/rom-spells/579062.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-25","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":25,"keyItemId":543100,"sourceSkillId":494003,"name":"Ire","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622321)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579063,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504512,622321],"components":[{"id":504512,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622321,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":494003,"name":"Ire","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622321)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579063,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504512,622321]}}],"icon":"/assets/ui/rom-spells/579063.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-30","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":543110,"sourceSkillId":498220,"name":"Immortal Power","description":"Immortal power flows from the deepest recesses of your being. You can withstand [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] three times over the course of (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":35,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":579847,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620707,620751],"components":[{"id":620707,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":483,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498231,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":1,"skillLevelArg":0}},{"id":620751,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498230,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":498220,"name":"Immortal Power","description":"Immortal power flows from the deepest recesses of your being. You can withstand [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] three times over the course of (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":35,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":579847,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620707,620751]}}],"icon":"/assets/ui/rom-spells/579847.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-35","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":543120,"sourceSkillId":493607,"name":"Pulse Mastery","description":"You can only cast it on targets with a [620690]. Causes (DMG0) main weapon DPS to the target and for (Buff8-Time) seconds aggro created by attacks in increased by (Buff8-0)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578291,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620691,620690,620727,620692],"components":[{"id":620691,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0},{"id":620690,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":181,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620727,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":181,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620692,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":493607,"name":"Pulse Mastery","description":"You can only cast it on targets with a [620690]. Causes (DMG0) main weapon DPS to the target and for (Buff8-Time) seconds aggro created by attacks in increased by (Buff8-0)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578291,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620691,620690,620727,620692]}}],"icon":"/assets/ui/rom-spells/578291.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-40","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":40,"keyItemId":543130,"sourceSkillId":494354,"name":"Resilience of Life","description":"Allows you to equip plate armor, and also reduces the damage received from monsters by 5%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579849,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620693],"components":[{"id":620693,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":207,"value":-5},{"type":99,"value":1}],"abilitySkillLevelArg":10.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":494354,"name":"Resilience of Life","description":"Allows you to equip plate armor, and also reduces the damage received from monsters by 5%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579849,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620693]}}],"icon":"/assets/ui/rom-spells/579849.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-45","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":543140,"sourceSkillId":494610,"name":"Will Attack","description":"When your [493391] hits the target, it will reduce the damage dealt by target by (Buff0-620694)% for (Buff-Time-620694) seconds.","target":"self","range":7.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581114,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620694],"components":[{"id":620694,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":494610,"name":"Will Attack","description":"When your [493391] hits the target, it will reduce the damage dealt by target by (Buff0-620694)% for (Buff-Time-620694) seconds.","target":"self","range":7.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581114,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620694]}}],"icon":"/assets/ui/rom-spells/581114.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-50","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":50,"keyItemId":543150,"sourceSkillId":494611,"name":"Coat of Arms","description":"When you cast [494611] on a friendly party member, it increases your and the friendly member's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":35,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581115,"sourceEffectType":0,"sourceTarget":4,"componentIds":[620695,621116],"components":[{"id":620695,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":192,"abilityModifiers":[{"type":170,"value":30},{"type":135,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621116,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":192,"abilityModifiers":[{"type":170,"value":30},{"type":135,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":494611,"name":"Coat of Arms","description":"When you cast [494611] on a friendly party member, it increases your and the friendly member's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":35,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581115,"sourceEffectType":0,"sourceTarget":4,"componentIds":[620695,621116]}}],"icon":"/assets/ui/rom-spells/581115.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-60","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546823,"sourceSkillId":499902,"name":"Elf Blessing","description":"When [499903] is used, it causes an increase of the caster's [SC_SKILLTIPS_DEF] and recovers HP every second.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801297,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499902,"name":"Elf Blessing","description":"When [499903] is used, it causes an increase of the caster's [SC_SKILLTIPS_DEF] and recovers HP every second.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801297,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801297.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-70","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":70,"keyItemId":546824,"sourceSkillId":499900,"name":"Feral Leader","description":"Increases your inflicted damage by (Buff0-623248)% for (Buff-Time-623248) seconds and reduces your damage received by (Buff3-623248)%. Also reduces aggro for your party members.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801345,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623248,623250],"components":[{"id":623248,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":50},{"type":192,"value":50},{"type":207,"value":-30},{"type":206,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623250,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499900,"name":"Feral Leader","description":"Increases your inflicted damage by (Buff0-623248)% for (Buff-Time-623248) seconds and reduces your damage received by (Buff3-623248)%. Also reduces aggro for your party members.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801345,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623248,623250]}}],"icon":"/assets/ui/rom-spells/801345.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-15","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":543081,"sourceSkillId":494004,"name":"Anti-Magic Arrow","description":"Inflicts (DMG0) ranged weapon DPS and has a chance of restoring (DMG4) of your mana. (Requires ranged weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579064,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504513,504565],"components":[{"id":504513,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504565,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":25,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":25,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":494004,"name":"Anti-Magic Arrow","description":"Inflicts (DMG0) ranged weapon DPS and has a chance of restoring (DMG4) of your mana. (Requires ranged weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579064,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504513,504565]}}],"icon":"/assets/ui/rom-spells/579064.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-20","classId":"rom-warden","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":543091,"sourceSkillId":494005,"name":"Beast Tamer","description":"Increase your pet's [SC_SKILLTIPS_CRI] by (Buff0-504514) points and [SC_SKILLTIPS_DOGE] by (Buff0-506421) points.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579068,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504514,506421],"components":[{"id":504514,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506421,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":17,"value":35}],"abilitySkillLevelArg":12.5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":494005,"name":"Beast Tamer","description":"Increase your pet's [SC_SKILLTIPS_CRI] by (Buff0-504514) points and [SC_SKILLTIPS_DOGE] by (Buff0-506421) points.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579068,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504514,506421]}}],"icon":"/assets/ui/rom-spells/579068.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-25","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":543101,"sourceSkillId":494006,"name":"Untamable","description":"Inflicts (DMG0) main hand weapon DPS on the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"focus","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579066,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620697],"components":[{"id":620697,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":494006,"name":"Untamable","description":"Inflicts (DMG0) main hand weapon DPS on the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"focus","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579066,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620697]}}],"icon":"/assets/ui/rom-spells/579066.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-30","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":543111,"sourceSkillId":494212,"name":"Summon Chiron the Centaur","description":"Summons the centaur Chiron to help you in battle.","target":"self","range":5,"castTimeMs":8000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102803},"source":{"imageId":579850,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504605,500499],"components":[{"id":504605,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102803,"summon":{"creatureId":102803,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}},{"id":500499,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":494212,"name":"Summon Chiron the Centaur","description":"Summons the centaur Chiron to help you in battle.","target":"self","range":5,"castTimeMs":8000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102803},"source":{"imageId":579850,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504605,500499]}}],"icon":"/assets/ui/rom-spells/579850.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-35","classId":"rom-warden","secondaryClassId":"rom-scout","group":"passive","unlockLevel":35,"keyItemId":543121,"sourceSkillId":494356,"name":"Secret Agreement","description":"Permanently increases your melee weapon damage by (Buff0-0)% and all damage caused by Chiron the Centaur by (Buff0-505184)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579852,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504919,505184],"components":[{"id":504919,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":56,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505184,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":494356,"name":"Secret Agreement","description":"Permanently increases your melee weapon damage by (Buff0-0)% and all damage caused by Chiron the Centaur by (Buff0-505184)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579852,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504919,505184]}}],"icon":"/assets/ui/rom-spells/579852.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-40","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":543131,"sourceSkillId":494357,"name":"Morale Boost","description":"Temporarily increases your and your party members' [SC_SKILLTIPS_DMG] by (Buff0-1) + (Buff4-1)% and [SC_SKILLTIPS_MDMG] by (Buff0-0) + (Buff4-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579853,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505150,620696],"components":[{"id":505150,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":203,"abilityModifiers":[{"type":191,"value":20},{"type":25,"value":30}],"abilitySkillLevelArg":7,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493562,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620696,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435521,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":2},{"type":173,"value":2}],"abilitySkillLevelArg":7,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":494357,"name":"Morale Boost","description":"Temporarily increases your and your party members' [SC_SKILLTIPS_DMG] by (Buff0-1) + (Buff4-1)% and [SC_SKILLTIPS_MDMG] by (Buff0-0) + (Buff4-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579853,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505150,620696]}}],"icon":"/assets/ui/rom-spells/579853.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-45","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":45,"keyItemId":543141,"sourceSkillId":494612,"name":"Valiant Shot","description":"Inflicts (DMG0) physical damage and increases the [SC_SKILLTIPS_01] of pet and master by (Buff0-505745)% for (Buff-Time-505745) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-505746)[SC_SKILLTIPS_CD_2])\n[SC_SKILL_COLLECT_01]","target":"hostile","range":25,"castTimeMs":2000,"cooldownMs":6000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":581116,"sourceEffectType":0,"sourceTarget":6,"componentIds":[505695,505760,505745,505746],"components":[{"id":505695,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-45,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-45,"damagePowerSkillLevelArg":22,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505760,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505745,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":8}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494959,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505746,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":25,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":494612,"name":"Valiant Shot","description":"Inflicts (DMG0) physical damage and increases the [SC_SKILLTIPS_01] of pet and master by (Buff0-505745)% for (Buff-Time-505745) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-505746)[SC_SKILLTIPS_CD_2])\n[SC_SKILL_COLLECT_01]","target":"hostile","range":25,"castTimeMs":2000,"cooldownMs":6000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":581116,"sourceEffectType":0,"sourceTarget":6,"componentIds":[505695,505760,505745,505746]}}],"icon":"/assets/ui/rom-spells/581116.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-50","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":543151,"sourceSkillId":494613,"name":"Sacrifice","description":"Sacrifices your pet to restore you (DMG0) HP and (DMG4) MP. However, your pet will be exhausted and unable to move for (Buff-Time-503639) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.5},"source":{"imageId":581117,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505696,505747,505748,503639],"components":[{"id":505696,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":50,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505747,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":50,"fixedValue":0,"attack":{"type":1,"calculationType":8,"damagePower":50,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505748,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503639,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4195,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":494613,"name":"Sacrifice","description":"Sacrifices your pet to restore you (DMG0) HP and (DMG4) MP. However, your pet will be exhausted and unable to move for (Buff-Time-503639) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.5},"source":{"imageId":581117,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505696,505747,505748,503639]}}],"icon":"/assets/ui/rom-spells/581117.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-60","classId":"rom-warden","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546825,"sourceSkillId":499898,"name":"Forest Surround","description":"Increases [102803|Chiron the Centaur's] [SC_SKILLTIPS_CAST] by (Buff0-623251)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801298,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623251],"components":[{"id":623251,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499898,"name":"Forest Surround","description":"Increases [102803|Chiron the Centaur's] [SC_SKILLTIPS_CAST] by (Buff0-623251)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801298,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623251]}}],"icon":"/assets/ui/rom-spells/801298.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-70","classId":"rom-warden","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546826,"sourceSkillId":499899,"name":"Wind-piercing Arrow","description":"When the [498206] of [102803] hits, it will increase the caster's [SC_SKILLTIPS_DPS] by (Buff0-623252)%. Can be stacked a maximum of 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801346,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623252],"components":[{"id":623252,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-5}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499899,"name":"Wind-piercing Arrow","description":"When the [498206] of [102803] hits, it will increase the caster's [SC_SKILLTIPS_DPS] by (Buff0-623252)%. Can be stacked a maximum of 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801346,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623252]}}],"icon":"/assets/ui/rom-spells/801346.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-15","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":543082,"sourceSkillId":494007,"name":"Achilles' Heel Strike","description":"Attacks the target's Achilles' heel. Inflicts (DMG0) main hand weapon DPS, and it has a chance of increasing both your pet's and your [SC_SKILLTIPS_CRI] by (Buff0-504569) points for (Buff-Time-504569) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504715)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":2000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578396,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623259,623254,504516,504570,504569,504715],"components":[{"id":623259,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":-0.1,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623254,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504516,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504570,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504569,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494334,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504715,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":25,"hateCost":0,"settingFlags":268443649,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":494007,"name":"Achilles' Heel Strike","description":"Attacks the target's Achilles' heel. Inflicts (DMG0) main hand weapon DPS, and it has a chance of increasing both your pet's and your [SC_SKILLTIPS_CRI] by (Buff0-504569) points for (Buff-Time-504569) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504715)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":2000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578396,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623259,623254,504516,504570,504569,504715]}}],"icon":"/assets/ui/rom-spells/578396.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-20","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":20,"keyItemId":543092,"sourceSkillId":494202,"name":"Thorn Upgrade","description":"Increases damage done by thorny vines and has a chance of restoring your mana when the effect ends.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578413,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":494202,"name":"Thorn Upgrade","description":"Increases damage done by thorny vines and has a chance of restoring your mana when the effect ends.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578413,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/578413.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-25","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":25,"keyItemId":543102,"sourceSkillId":494009,"name":"Gravel Attack","description":"Inflicts (DMG0) main hand weapon DPS on target. It also additionally deals (Buff4-Dot) earth damage every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579074,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623256,623254,504518,504571],"components":[{"id":623256,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5.5,"fixedValue":-0.1,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623254,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504518,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504571,"magicFunc":1,"magicType":0,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":494009,"name":"Gravel Attack","description":"Inflicts (DMG0) main hand weapon DPS on target. It also additionally deals (Buff4-Dot) earth damage every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579074,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623256,623254,504518,504571]}}],"icon":"/assets/ui/rom-spells/579074.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-30","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":30,"keyItemId":543112,"sourceSkillId":494213,"name":"Soul of the Spirit Tree","description":"Increases the damage inflicted by Power of the Wood Spirit. When the target's HP reaches 30%, the critical hit chance of the Wood Spirit increases by 15%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579854,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":494213,"name":"Soul of the Spirit Tree","description":"Increases the damage inflicted by Power of the Wood Spirit. When the target's HP reaches 30%, the critical hit chance of the Wood Spirit increases by 15%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579854,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579854.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-35","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":35,"keyItemId":543122,"sourceSkillId":494358,"name":"Store Power","description":"Slightly increases the damage of your Charged Chop, and also increases its critical hit rate by 10%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579855,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":494358,"name":"Store Power","description":"Slightly increases the damage of your Charged Chop, and also increases its critical hit rate by 10%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579855,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579855.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-40","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":40,"keyItemId":543132,"sourceSkillId":494359,"name":"Critical Feeling","description":"If your Oak Walkers' skill successfully hits its target, there is a chance of your next 2 attacks within (Buff-Time-505185) seconds being critical hits.\n([SC_SKILLTIPS_CD_1]30[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579856,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505185],"components":[{"id":505185,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":494359,"name":"Critical Feeling","description":"If your Oak Walkers' skill successfully hits its target, there is a chance of your next 2 attacks within (Buff-Time-505185) seconds being critical hits.\n([SC_SKILLTIPS_CD_1]30[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579856,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505185]}}],"icon":"/assets/ui/rom-spells/579856.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-45","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":45,"keyItemId":543142,"sourceSkillId":494614,"name":"Walker Spirit","description":"Awakens the spirit of the Oak Walker within you, temporarily increasing your movement speed by (Buff0-0)% and dodge rate by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581118,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505697],"components":[{"id":505697,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":50},{"type":198,"value":50}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":494614,"name":"Walker Spirit","description":"Awakens the spirit of the Oak Walker within you, temporarily increasing your movement speed by (Buff0-0)% and dodge rate by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581118,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505697]}}],"icon":"/assets/ui/rom-spells/581118.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-50","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":543152,"sourceSkillId":494615,"name":"Together","description":"Immediately inflicts (DMG0) main hand weapon DPS to your target and simultaneously increases the damage dealt by you and your pet by (Buff0-505939)% for (Buff-Time-505939) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581119,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505698,505940,505939],"components":[{"id":505698,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-3,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505940,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505939,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":205,"value":10},{"type":204,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1000,"fixedValue":3,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":494615,"name":"Together","description":"Immediately inflicts (DMG0) main hand weapon DPS to your target and simultaneously increases the damage dealt by you and your pet by (Buff0-505939)% for (Buff-Time-505939) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581119,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505698,505940,505939]}}],"icon":"/assets/ui/rom-spells/581119.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-60","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546827,"sourceSkillId":499896,"name":"Force Fountain","description":"While your [499897] is in effect, it causes an additional increase in [SC_SKILLTIPS_STR].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801299,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499896,"name":"Force Fountain","description":"While your [499897] is in effect, it causes an additional increase in [SC_SKILLTIPS_STR].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801299,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801299.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-70","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":70,"keyItemId":546828,"sourceSkillId":499894,"name":"Enemy Sigil","description":"Inflicts [499894] on target and makes your [494581], [494342], [494007] and [494009] cause additional [SC_SKILLTIPS_STR] damage.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801347,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623254],"components":[{"id":623254,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499894,"name":"Enemy Sigil","description":"Inflicts [499894] on target and makes your [494581], [494342], [494007] and [494009] cause additional [SC_SKILLTIPS_STR] damage.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801347,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623254]}}],"icon":"/assets/ui/rom-spells/801347.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-15","classId":"rom-warden","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":543083,"sourceSkillId":494010,"name":"Wind Chop","description":"Inflicts (DMG0) main hand weapon DPS. Each successful hit has an additional chance of inflicting (DMG4) wind damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579070,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504519,504601],"components":[{"id":504519,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504601,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-20,"damagePowerSkillLevelArg":50,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":494010,"name":"Wind Chop","description":"Inflicts (DMG0) main hand weapon DPS. Each successful hit has an additional chance of inflicting (DMG4) wind damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579070,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504519,504601]}}],"icon":"/assets/ui/rom-spells/579070.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-20","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":20,"keyItemId":543093,"sourceSkillId":494207,"name":"Tough Oak","description":"Increases your pet's [SC_SKILLTIPS_DEF] by (Buff0-504600)% and reduces [SC_SKILLTIPS_CDTIME] from [493382] and [493385] by 1 second.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578412,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504600],"components":[{"id":504600,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":494207,"name":"Tough Oak","description":"Increases your pet's [SC_SKILLTIPS_DEF] by (Buff0-504600)% and reduces [SC_SKILLTIPS_CDTIME] from [493382] and [493385] by 1 second.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578412,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504600]}}],"icon":"/assets/ui/rom-spells/578412.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-25","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":25,"keyItemId":543103,"sourceSkillId":494011,"name":"Oak Blessing","description":"During the effect time of [491668], increases your [SC_SKILLTIPS_01] by (Buff0-620679)% and restores your HP by (Buff-Dot-620679)% every 3 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579065,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620679],"components":[{"id":620679,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":363,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5}],"abilitySkillLevelArg":0,"dotTime":3,"dotType":5,"dotBase":1,"dot":{"timeSeconds":3,"type":5,"base":1,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":2,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":494011,"name":"Oak Blessing","description":"During the effect time of [491668], increases your [SC_SKILLTIPS_01] by (Buff0-620679)% and restores your HP by (Buff-Dot-620679)% every 3 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579065,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620679]}}],"icon":"/assets/ui/rom-spells/579065.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-30","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":30,"keyItemId":543113,"sourceSkillId":498205,"name":"Nature's Revenge","description":"Enhances the skills of your pet [102325]. Increases the resisted damage of [498201] by (Buff-Shield-620702)% and the effect of [498202] by (Buff0-620703)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579857,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620702,620703],"components":[{"id":620702,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435811,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":15,"skillLevelArg":0}},{"id":620703,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-8},{"type":51,"value":-8}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":498205,"name":"Nature's Revenge","description":"Enhances the skills of your pet [102325]. Increases the resisted damage of [498201] by (Buff-Shield-620702)% and the effect of [498202] by (Buff0-620703)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579857,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620702,620703]}}],"icon":"/assets/ui/rom-spells/579857.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-35","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":543123,"sourceSkillId":498227,"name":"Spiritual Feedback","description":"Enhances the power of your pet \"Oak Walker\". When your skill delivers a critical hit, the attack power of the Oak Walker's Sepal Stab will be greatly enhanced.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579858,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":498227,"name":"Spiritual Feedback","description":"Enhances the power of your pet \"Oak Walker\". When your skill delivers a critical hit, the attack power of the Oak Walker's Sepal Stab will be greatly enhanced.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579858,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579858.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-40","classId":"rom-warden","secondaryClassId":"rom-mage","group":"elite","unlockLevel":40,"keyItemId":543133,"sourceSkillId":498219,"name":"Crystal Protection","description":"Orders your Nature Crystal to protect team members by wrapping them in its shards. Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of multiple friendly targets by (Buff0-505154)% within a radius of 100. The effect lasts for (Buff-Time-505154) seconds.","target":"self","range":40,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":588116,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505154],"components":[{"id":505154,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":143,"value":20},{"type":142,"value":20}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":498219,"name":"Crystal Protection","description":"Orders your Nature Crystal to protect team members by wrapping them in its shards. Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of multiple friendly targets by (Buff0-505154)% within a radius of 100. The effect lasts for (Buff-Time-505154) seconds.","target":"self","range":40,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":588116,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505154]}}],"icon":"/assets/ui/rom-spells/588116.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-45","classId":"rom-warden","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":543143,"sourceSkillId":494616,"name":"Narrow Escape","description":"Your pet is under the effect of [505705] and will be reborn immediately after death.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581120,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505897,505705],"components":[{"id":505897,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505705,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":494616,"name":"Narrow Escape","description":"Your pet is under the effect of [505705] and will be reborn immediately after death.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581120,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505897,505705]}}],"icon":"/assets/ui/rom-spells/581120.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-50","classId":"rom-warden","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":543153,"sourceSkillId":498214,"name":"Pet Enhance","description":"Temporarily enhances your pet, increasing its [SC_SKILLTIPS_01] and [SC_SKILLTIPS_DMG] by (Buff0-620713)% for (Buff-Time-620713) seconds.","target":"self","range":25,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581121,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620714,620713],"components":[{"id":620714,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620713,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":30},{"type":173,"value":30}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":498214,"name":"Pet Enhance","description":"Temporarily enhances your pet, increasing its [SC_SKILLTIPS_01] and [SC_SKILLTIPS_DMG] by (Buff0-620713)% for (Buff-Time-620713) seconds.","target":"self","range":25,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581121,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620714,620713]}}],"icon":"/assets/ui/rom-spells/581121.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-60","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546829,"sourceSkillId":499893,"name":"Resonation of Wind","description":"When your [494010] hits a target and triggers [SC_SKILLTIPS_WIND], this will reduce your [493347] cooldown time by 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801300,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499893,"name":"Resonation of Wind","description":"When your [494010] hits a target and triggers [SC_SKILLTIPS_WIND], this will reduce your [493347] cooldown time by 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801300,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801300.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-70","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546830,"sourceSkillId":499891,"name":"Wild Offensive","description":"Makes your [499892] increase the pet's [SC_SKILLTIPS_DPS] and reduces the cooldown time of [499892].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801348,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499891,"name":"Wild Offensive","description":"Makes your [499892] increase the pet's [SC_SKILLTIPS_DPS] and reduces the cooldown time of [499892].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801348,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801348.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-15","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543084,"sourceSkillId":494013,"name":"Dispel Curse","description":"Cleanses a Curse from one friendly target.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579073,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504522],"components":[{"id":504522,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494013,"name":"Dispel Curse","description":"Cleanses a Curse from one friendly target.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579073,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504522]}}],"icon":"/assets/ui/rom-spells/579073.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-20","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":20,"keyItemId":543094,"sourceSkillId":493389,"name":"Magic Control","description":"Restricts target's magic energy. Decreases target's [SC_SKILLTIPS_02] and [SC_SKILLTIPS_01] by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578271,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503624],"components":[{"id":503624,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":172,"abilityModifiers":[{"type":171,"value":-2},{"type":173,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":493389,"name":"Magic Control","description":"Restricts target's magic energy. Decreases target's [SC_SKILLTIPS_02] and [SC_SKILLTIPS_01] by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578271,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503624]}}],"icon":"/assets/ui/rom-spells/578271.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-25","classId":"rom-warden","secondaryClassId":"rom-druid","group":"passive","unlockLevel":25,"keyItemId":543104,"sourceSkillId":494208,"name":"Quick Reflexes","description":"Increases [SC_SKILLTIPS_CRI_PASSIVE] of yours and your pet's by (Buff0-0) and [SC_SKILLTIPS_DOGEP] by (Buff4-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578411,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504711,506422],"components":[{"id":504711,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":182,"value":200}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506422,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":2}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494208,"name":"Quick Reflexes","description":"Increases [SC_SKILLTIPS_CRI_PASSIVE] of yours and your pet's by (Buff0-0) and [SC_SKILLTIPS_DOGEP] by (Buff4-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578411,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504711,506422]}}],"icon":"/assets/ui/rom-spells/578411.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-30","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":30,"keyItemId":543114,"sourceSkillId":494215,"name":"Earth Spirit Essence","description":"Cloaks your weapon in the power of earth. Normal attacks inflict (Buff0-0) earth damage, and (Buff0-1)% [SC_SKILLTIPS_DMG] is resisted for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579860,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504847],"components":[{"id":504847,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":184,"value":100},{"type":143,"value":2}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494215,"name":"Earth Spirit Essence","description":"Cloaks your weapon in the power of earth. Normal attacks inflict (Buff0-0) earth damage, and (Buff0-1)% [SC_SKILLTIPS_DMG] is resisted for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579860,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504847]}}],"icon":"/assets/ui/rom-spells/579860.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-35","classId":"rom-warden","secondaryClassId":"rom-druid","group":"passive","unlockLevel":35,"keyItemId":543124,"sourceSkillId":494362,"name":"Natural Spring","description":"When your [493395] hits the target, you can heal party members within a range of 75. The skill can't be triggered again within (Buff-Time-505205) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579861,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505205],"components":[{"id":505205,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":494362,"name":"Natural Spring","description":"When your [493395] hits the target, you can heal party members within a range of 75. The skill can't be triggered again within (Buff-Time-505205) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579861,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505205]}}],"icon":"/assets/ui/rom-spells/579861.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-40","classId":"rom-warden","secondaryClassId":"rom-druid","group":"passive","unlockLevel":40,"keyItemId":543134,"sourceSkillId":494363,"name":"Connection","description":"Your Elven Prayer can bestow an additional spell onto you and your pet, increasing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] for (Buff-Time-505155) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579878,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505155],"components":[{"id":505155,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":10},{"type":173,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494363,"name":"Connection","description":"Your Elven Prayer can bestow an additional spell onto you and your pet, increasing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] for (Buff-Time-505155) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579878,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505155]}}],"icon":"/assets/ui/rom-spells/579878.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-45","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":45,"keyItemId":543144,"sourceSkillId":494618,"name":"Blade of Protection","description":"An attack with the Power to Protect. Inflicts (DMG0) main hand weapon DPS. Upon hitting a target it may increase the [SC_SKILLTIPS_DEF] of party members within a radius of 70 by (Buff0-505752)% for (Buff-Time-505752) seconds.\n(Increases the [SC_SKILLTIPS_DEF] by a maximum of (Max-Buff0-505752)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581122,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505701,505751,623270,505752],"components":[{"id":505701,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0},{"id":505751,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":524293,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":494960,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623270,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":524288,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505752,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494618,"name":"Blade of Protection","description":"An attack with the Power to Protect. Inflicts (DMG0) main hand weapon DPS. Upon hitting a target it may increase the [SC_SKILLTIPS_DEF] of party members within a radius of 70 by (Buff0-505752)% for (Buff-Time-505752) seconds.\n(Increases the [SC_SKILLTIPS_DEF] by a maximum of (Max-Buff0-505752)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581122,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505701,505751,623270,505752]}}],"icon":"/assets/ui/rom-spells/581122.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-50","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":50,"keyItemId":543154,"sourceSkillId":491669,"name":"Thorn Sigil","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff4-0)% for 15 seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801358,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504512,503949],"components":[{"id":504512,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503949,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":491669,"name":"Thorn Sigil","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff4-0)% for 15 seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801358,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504512,503949]}}],"icon":"/assets/ui/rom-spells/801358.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-60","classId":"rom-warden","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546831,"sourceSkillId":499888,"name":"Briar Control","description":"Your [499889] increases your [SC_SKILLTIPS_HEAL] and [SC_SKILLTIPS_HEAL_PASSIVE]. Every time you use [499886], you earn a shield that is 5% of Maximum HP.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801301,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499888,"name":"Briar Control","description":"Your [499889] increases your [SC_SKILLTIPS_HEAL] and [SC_SKILLTIPS_HEAL_PASSIVE]. Every time you use [499886], you earn a shield that is 5% of Maximum HP.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801301,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801301.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-70","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":70,"keyItemId":546832,"sourceSkillId":499885,"name":"Beast Awakening","description":"Increases Maximum HP (Buff0-0)% and lasts for (Buff0-Time) seconds. When [494618] hits, reduces [499885] cooldown time for the target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801349,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623269],"components":[{"id":623269,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499885,"name":"Beast Awakening","description":"Increases Maximum HP (Buff0-0)% and lasts for (Buff0-Time) seconds. When [494618] hits, reduces [499885] cooldown time for the target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801349,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623269]}}],"icon":"/assets/ui/rom-spells/801349.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-15","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":543085,"sourceSkillId":494016,"name":"Natural Attack","description":"Gathers the power of nature to launch an attack. Inflicts ((DMG0) main hand weapon DPS + (FixDMG-504525) x Wisdom) damage. When you are hit, you receive 1 point of Nature's Power.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579076,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504525,504575,623080],"components":[{"id":504525,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504575,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623080,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":3},{"type":164,"value":3}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":494016,"name":"Natural Attack","description":"Gathers the power of nature to launch an attack. Inflicts ((DMG0) main hand weapon DPS + (FixDMG-504525) x Wisdom) damage. When you are hit, you receive 1 point of Nature's Power.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579076,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504525,504575,623080]}}],"icon":"/assets/ui/rom-spells/579076.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-20","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":20,"keyItemId":543095,"sourceSkillId":494017,"name":"Glory Wand","description":"Increases your attack speed by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds. Also, during physical attacks, a protective shield will appear that absorbs (Buff-Shield-504725) damage for (Buff-Time-504725) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504727)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":8000},"source":{"imageId":579077,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504526,504725,504727],"components":[{"id":504526,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-1},{"type":144,"value":1}],"abilitySkillLevelArg":19,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":493605,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504725,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1342177763,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494015,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":2,"effect":0,"point":200,"skillLevelArg":19}},{"id":504727,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":494017,"name":"Glory Wand","description":"Increases your attack speed by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds. Also, during physical attacks, a protective shield will appear that absorbs (Buff-Shield-504725) damage for (Buff-Time-504725) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504727)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":8000},"source":{"imageId":579077,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504526,504725,504727]}}],"icon":"/assets/ui/rom-spells/579077.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-25","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":25,"keyItemId":543105,"sourceSkillId":494018,"name":"Cross of Thorns Attack","description":"Launches a rapid Double Attack on the target. Inflicts twice (DMG1) main hand weapon DPS plus (FixDMG1) times wisdom damage on the target, and restores 1 point of Nature's Power to you when you hit the target.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance the power and Inflicts (2 x (DMG0) main hand weapon DPS + (FixDMG0) x Wisdom) damage on the target. There is also a chance of restoring 1 point of Nature's Power if you hit the target.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579078,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620461,503827,620460,504527,504576],"components":[{"id":620461,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620460,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504527,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504576,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":494018,"name":"Cross of Thorns Attack","description":"Launches a rapid Double Attack on the target. Inflicts twice (DMG1) main hand weapon DPS plus (FixDMG1) times wisdom damage on the target, and restores 1 point of Nature's Power to you when you hit the target.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance the power and Inflicts (2 x (DMG0) main hand weapon DPS + (FixDMG0) x Wisdom) damage on the target. There is also a chance of restoring 1 point of Nature's Power if you hit the target.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579078,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620461,503827,620460,504527,504576]}}],"icon":"/assets/ui/rom-spells/579078.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-30","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":543115,"sourceSkillId":494216,"name":"Heart Piercing","description":"Concentrates the power of nature in your body to launch a severe attack on your target. Inflicts (DMG1) main hand weapon DPS on target. Each successful hit will produce (DMG4) points of rage.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) main hand weapon DPS on target. Each successful hit will produce (DMG4) points of rage.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579862,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504860,503827,620462,504882,623080],"components":[{"id":504860,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620462,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504882,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":15,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":15,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623080,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":3},{"type":164,"value":3}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":494216,"name":"Heart Piercing","description":"Concentrates the power of nature in your body to launch a severe attack on your target. Inflicts (DMG1) main hand weapon DPS on target. Each successful hit will produce (DMG4) points of rage.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) main hand weapon DPS on target. Each successful hit will produce (DMG4) points of rage.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579862,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504860,503827,620462,504882,623080]}}],"icon":"/assets/ui/rom-spells/579862.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-35","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":543125,"sourceSkillId":494364,"name":"Awakening of the Wild","description":"Increases your and your party members' [SC_SKILLTIPS_01] by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) as well as [SC_SKILLTIPS_DMG] by (Buff0-1), both for (Buff0-Time) seconds.\n(This effect cannot co-exist with similar effects.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579863,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505157,506538],"components":[{"id":505157,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":42,"abilityModifiers":[{"type":12,"value":40},{"type":25,"value":25}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":5,"onBuffTimeoutMagicId":495576,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506538,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":524321,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":9,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":5,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":494364,"name":"Awakening of the Wild","description":"Increases your and your party members' [SC_SKILLTIPS_01] by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) as well as [SC_SKILLTIPS_DMG] by (Buff0-1), both for (Buff0-Time) seconds.\n(This effect cannot co-exist with similar effects.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579863,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505157,506538]}}],"icon":"/assets/ui/rom-spells/579863.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-40","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":543135,"sourceSkillId":494365,"name":"Healing Wind","description":"Restores (DMG1) HP to you and your party members in a range of 100.\nWhen you have Nature's Power, 1 point of it will automatically be consumed to increase abilities as well as heal (DMG0) of your HP as well as the HP of party members within a range of 100.","target":"self","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.65},"source":{"imageId":579864,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505158,503827,620463,620441],"components":[{"id":505158,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":65,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":65,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620463,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":50,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":494365,"name":"Healing Wind","description":"Restores (DMG1) HP to you and your party members in a range of 100.\nWhen you have Nature's Power, 1 point of it will automatically be consumed to increase abilities as well as heal (DMG0) of your HP as well as the HP of party members within a range of 100.","target":"self","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.65},"source":{"imageId":579864,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505158,503827,620463,620441]}}],"icon":"/assets/ui/rom-spells/579864.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-45","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":543145,"sourceSkillId":494929,"name":"Slash Fury","description":"Increases the attack range of your Slash, and upon hitting a target with Slash, it has a chance of increasing your healing and rage generation.\n([SC_SKILLTIPS_CD_1](Buff-Time-505733)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581124,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505733],"components":[{"id":505733,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268959809,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":494929,"name":"Slash Fury","description":"Increases the attack range of your Slash, and upon hitting a target with Slash, it has a chance of increasing your healing and rage generation.\n([SC_SKILLTIPS_CD_1](Buff-Time-505733)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581124,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505733]}}],"icon":"/assets/ui/rom-spells/581124.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-50","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":50,"keyItemId":543155,"sourceSkillId":494930,"name":"Nourish","description":"It causes Nature's Power to be stored in a friendly target for (Buff0-Time) seconds. When the target's HP drops below 40%, it will immediately restore (DMG-505736) HP and restore 2 points of Nature's Power to you. (Healing effect requires a (Buff-Time-505899) seconds cooldown.)","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":581125,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505704,505898,505736,505899],"components":[{"id":505704,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":120,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505898,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":130,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"clearFlags":2,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495062,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505736,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":15,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":15,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505899,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":494930,"name":"Nourish","description":"It causes Nature's Power to be stored in a friendly target for (Buff0-Time) seconds. When the target's HP drops below 40%, it will immediately restore (DMG-505736) HP and restore 2 points of Nature's Power to you. (Healing effect requires a (Buff-Time-505899) seconds cooldown.)","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":581125,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505704,505898,505736,505899]}}],"icon":"/assets/ui/rom-spells/581125.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-60","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546833,"sourceSkillId":499955,"name":"Briar Technique","description":"When your [494016], [499956] or [494216] hits a target, you can earn the Briar Technique effect. This provides an extra increase of [SC_SKILLTIPS_01] by (Buff0-623080)% and of [SC_SKILLTIPS_MND] by (Buff1-623080)%. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801302,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623080],"components":[{"id":623080,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":3},{"type":164,"value":3}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499955,"name":"Briar Technique","description":"When your [494016], [499956] or [494216] hits a target, you can earn the Briar Technique effect. This provides an extra increase of [SC_SKILLTIPS_01] by (Buff0-623080)% and of [SC_SKILLTIPS_MND] by (Buff1-623080)%. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801302,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623080]}}],"icon":"/assets/ui/rom-spells/801302.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-70","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546834,"sourceSkillId":499953,"name":"Heart of the Wild","description":"Allows you to equip Leather Armor and Chainmail and increases [SC_SKILLTIPS_POWER] by (Buff0-2)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801350,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623081],"components":[{"id":623081,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":100,"value":1},{"type":101,"value":1},{"type":56,"value":5}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499953,"name":"Heart of the Wild","description":"Allows you to equip Leather Armor and Chainmail and increases [SC_SKILLTIPS_POWER] by (Buff0-2)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801350,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623081]}}],"icon":"/assets/ui/rom-spells/801350.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-15","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":543086,"sourceSkillId":494019,"name":"Camellia Flower","description":"Causes target to recover (Buff3-Dot) HP per second for (Buff0-Time) seconds. Can be stacked up to 3 times.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579079,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504578,504577,504528],"components":[{"id":504578,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":268443755,"specialActionFlags":0,"assistType":136,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":35,"dot":{"timeSeconds":1,"type":0,"base":35,"skillLevelArg":16},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504577,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":268443755,"specialActionFlags":0,"assistType":136,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":25,"dot":{"timeSeconds":1,"type":0,"base":25,"skillLevelArg":16},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504528,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":268443755,"specialActionFlags":0,"assistType":136,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":15,"dot":{"timeSeconds":1,"type":0,"base":15,"skillLevelArg":16},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":494019,"name":"Camellia Flower","description":"Causes target to recover (Buff3-Dot) HP per second for (Buff0-Time) seconds. Can be stacked up to 3 times.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579079,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504578,504577,504528]}}],"icon":"/assets/ui/rom-spells/579079.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-20","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":543096,"sourceSkillId":494020,"name":"Life Guide","description":"Causes you to recover HP every 2 seconds when you use Recover.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579080,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":494020,"name":"Life Guide","description":"Causes you to recover HP every 2 seconds when you use Recover.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579080,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579080.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-25","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":543106,"sourceSkillId":494021,"name":"Healing Arrows","description":"Restores (Buff1-Dot) HP every 2 seconds to 5 friendly targets in range. Lasts for (Buff0-Time) seconds. \nIf you possess Nature's Power, it automatically will consume 1 point of Nature's Power to enhance abilities and restore (Buff0-Dot) HP. \n(Requires ranged weapon.)","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":5000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579081,"sourceEffectType":0,"sourceTarget":16,"componentIds":[504529,503827,620446,620441],"components":[{"id":504529,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620446,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":16,"dot":{"timeSeconds":2,"type":0,"base":16,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":494021,"name":"Healing Arrows","description":"Restores (Buff1-Dot) HP every 2 seconds to 5 friendly targets in range. Lasts for (Buff0-Time) seconds. \nIf you possess Nature's Power, it automatically will consume 1 point of Nature's Power to enhance abilities and restore (Buff0-Dot) HP. \n(Requires ranged weapon.)","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":5000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579081,"sourceEffectType":0,"sourceTarget":16,"componentIds":[504529,503827,620446,620441]}}],"icon":"/assets/ui/rom-spells/579081.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-30","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":543116,"sourceSkillId":494217,"name":"Group Exorcism","description":"Requires 1 point of Nature's Power. Removes harmful effects from multiple friendly targets within a range of 50.","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579865,"sourceEffectType":0,"sourceTarget":16,"componentIds":[504861,504109],"components":[{"id":504861,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504109,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":494217,"name":"Group Exorcism","description":"Requires 1 point of Nature's Power. Removes harmful effects from multiple friendly targets within a range of 50.","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579865,"sourceEffectType":0,"sourceTarget":16,"componentIds":[504861,504109]}}],"icon":"/assets/ui/rom-spells/579865.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-35","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":543126,"sourceSkillId":494366,"name":"Warm Spring","description":"Party members within a range of 100 recover (DMG-505201) MP every 2 seconds for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579866,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505159,505201],"components":[{"id":505159,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435527,"specialActionFlags":0,"assistType":24,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":494621,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505201,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":67108865,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":30,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":30,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":494366,"name":"Warm Spring","description":"Party members within a range of 100 recover (DMG-505201) MP every 2 seconds for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579866,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505159,505201]}}],"icon":"/assets/ui/rom-spells/579866.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-40","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":543136,"sourceSkillId":494367,"name":"Mother Earth's Blessing","description":"Increases your healing power by (Buff0-505160) for (Buff-Time-505160) seconds. This effect ends after you have used healings spells for 3 times. (This spell will reward you 2 points of Nature's Power.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579867,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505160,505181,505199],"components":[{"id":505160,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"clearFlags":16384,"abilityModifiers":[{"type":150,"value":25}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494351,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505181,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505199,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":494367,"name":"Mother Earth's Blessing","description":"Increases your healing power by (Buff0-505160) for (Buff-Time-505160) seconds. This effect ends after you have used healings spells for 3 times. (This spell will reward you 2 points of Nature's Power.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579867,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505160,505181,505199]}}],"icon":"/assets/ui/rom-spells/579867.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-45","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":543146,"sourceSkillId":494931,"name":"Brilliance of Nature","description":"Increases your maximum amount of Nature's Power up to 15.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581126,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":494931,"name":"Brilliance of Nature","description":"Increases your maximum amount of Nature's Power up to 15.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581126,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581126.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-50","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":50,"keyItemId":543156,"sourceSkillId":494932,"name":"Spring Flower Eulogy","description":"When casting [499935], if the target's HP is lower than 50%, the effect will automatically be stacked 3 times. There is also a chance of restoring 1 Nature's Power to you. When [499935] ends, it will restore additional HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581127,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":494932,"name":"Spring Flower Eulogy","description":"When casting [499935], if the target's HP is lower than 50%, the effect will automatically be stacked 3 times. There is also a chance of restoring 1 Nature's Power to you. When [499935] ends, it will restore additional HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581127,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581127.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-60","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546835,"sourceSkillId":499952,"name":"Spring Carol","description":"Reduces your [499951] cooldown time to 30 seconds and gives your [499954] an area effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801303,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499952,"name":"Spring Carol","description":"Reduces your [499951] cooldown time to 30 seconds and gives your [499954] an area effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801303,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801303.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-70","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546836,"sourceSkillId":499949,"name":"Spirit Shackles","description":"Allows your [499950] to be used on players, but it won't make them become friendly. In fact it makes the target player unable to move, attack or cast spells. [SC_SKILLTIPS_HEAL_PASSIVE] is also reduced by (Buff0-623093)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801351,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623093],"components":[{"id":623093,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[65619,0],"abilityModifiers":[{"type":144,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499949,"name":"Spirit Shackles","description":"Allows your [499950] to be used on players, but it won't make them become friendly. In fact it makes the target player unable to move, attack or cast spells. [SC_SKILLTIPS_HEAL_PASSIVE] is also reduced by (Buff0-623093)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801351,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623093]}}],"icon":"/assets/ui/rom-spells/801351.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-15","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":543087,"sourceSkillId":494022,"name":"Poisonous Widow Embrace","description":"Summons the sinister plant, Poisonous Widow, to seize and attack your target. Inflicts (DMG1) [SC_SKILLTIPS_DARK] and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_DARK] on your targets. Also, 1 point of Nature's Power will be restored.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":579082,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620438,503827,620215,504717],"components":[{"id":620438,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-65,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-65,"damagePowerSkillLevelArg":32,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620215,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":32,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504717,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":494022,"name":"Poisonous Widow Embrace","description":"Summons the sinister plant, Poisonous Widow, to seize and attack your target. Inflicts (DMG1) [SC_SKILLTIPS_DARK] and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_DARK] on your targets. Also, 1 point of Nature's Power will be restored.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":579082,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620438,503827,620215,504717]}}],"icon":"/assets/ui/rom-spells/579082.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-20","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":543097,"sourceSkillId":494023,"name":"Speed Catalysis","description":"Temporarily raises the physical attack and casting speed of party members within a range of 150 by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579083,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504532],"components":[{"id":504532,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":9,"abilityModifiers":[{"type":23,"value":-20},{"type":51,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":494023,"name":"Speed Catalysis","description":"Temporarily raises the physical attack and casting speed of party members within a range of 150 by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579083,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504532]}}],"icon":"/assets/ui/rom-spells/579083.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-25","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":25,"keyItemId":543107,"sourceSkillId":494024,"name":"Corrosive Poison","description":"Corrodes your target, inflicting (Buff0-Dot) points of dark damage every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579084,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504533],"components":[{"id":504533,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":26},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":494024,"name":"Corrosive Poison","description":"Corrodes your target, inflicting (Buff0-Dot) points of dark damage every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579084,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504533]}}],"icon":"/assets/ui/rom-spells/579084.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-30","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":543117,"sourceSkillId":494321,"name":"Necrotic Wound","description":"Reduces healing received by target by (Buff2-0)% for (Buff0-Time) seconds.\n(If the target is a player, the amount he is healed is decreased by (Buff3-0)% for (Buff1-Time) seconds.)\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and reduce healing received by target by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579868,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504862,503827,504252,620448,620447,623094],"components":[{"id":504862,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":48,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504252,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":48,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620448,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620447,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623094,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":494321,"name":"Necrotic Wound","description":"Reduces healing received by target by (Buff2-0)% for (Buff0-Time) seconds.\n(If the target is a player, the amount he is healed is decreased by (Buff3-0)% for (Buff1-Time) seconds.)\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and reduce healing received by target by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579868,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504862,503827,504252,620448,620447,623094]}}],"icon":"/assets/ui/rom-spells/579868.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-35","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":543127,"sourceSkillId":494368,"name":"Shadow Contract","description":"Increases your maximum MP by (Buff0-0) and your [SC_SKILLTIPS_DARK] by (Buff4-1)%, but reduces healing power by (Buff4-0)% for (Buff0-Time) seconds.\n(Your [SC_SKILLTIPS_DARK] can be increased up to a maximum of (Max-Buff1-506309)% and healing power can be decreased up to (Max-Buff0-506309)%.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579869,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505161,506309],"components":[{"id":505161,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":70}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495286,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506309,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":-5},{"type":50,"value":5}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":494368,"name":"Shadow Contract","description":"Increases your maximum MP by (Buff0-0) and your [SC_SKILLTIPS_DARK] by (Buff4-1)%, but reduces healing power by (Buff4-0)% for (Buff0-Time) seconds.\n(Your [SC_SKILLTIPS_DARK] can be increased up to a maximum of (Max-Buff1-506309)% and healing power can be decreased up to (Max-Buff0-506309)%.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579869,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505161,506309]}}],"icon":"/assets/ui/rom-spells/579869.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-40","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":543137,"sourceSkillId":494369,"name":"Magic Turmoil","description":"Increases your magical critical hit rate by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579870,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505162],"components":[{"id":505162,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":177,"abilityModifiers":[{"type":20,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":494369,"name":"Magic Turmoil","description":"Increases your magical critical hit rate by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579870,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505162]}}],"icon":"/assets/ui/rom-spells/579870.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-45","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":543147,"sourceSkillId":494933,"name":"Curtain of Darkness","description":"Covers you in the power of darkness, permanently reducing magical damage received by (Buff0-0)% and making it so your [494969] and [494941] no longer require Nature's Power to recover their original abilities.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581128,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505707],"components":[{"id":505707,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":494933,"name":"Curtain of Darkness","description":"Covers you in the power of darkness, permanently reducing magical damage received by (Buff0-0)% and making it so your [494969] and [494941] no longer require Nature's Power to recover their original abilities.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581128,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505707]}}],"icon":"/assets/ui/rom-spells/581128.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-50","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":543157,"sourceSkillId":494934,"name":"Dark Moon","description":"Increases the [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] of a friendly target by (Buff0-0) for (Buff0-Time) seconds. Also, when their attacks go critical, you may gain the Power of the Dark Moon status which increases your magic power by (Buff0-505912)% and healing power by (Buff1-505912)% for (Buff-Time-505912) seconds.\n(This skill cannot be used on yourself.)","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581129,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505911,504871,505912],"components":[{"id":505911,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":145},{"type":20,"value":145}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":490068,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504871,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505912,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":140,"abilityModifiers":[{"type":171,"value":5},{"type":149,"value":5}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495103,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":494934,"name":"Dark Moon","description":"Increases the [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] of a friendly target by (Buff0-0) for (Buff0-Time) seconds. Also, when their attacks go critical, you may gain the Power of the Dark Moon status which increases your magic power by (Buff0-505912)% and healing power by (Buff1-505912)% for (Buff-Time-505912) seconds.\n(This skill cannot be used on yourself.)","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581129,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505911,504871,505912]}}],"icon":"/assets/ui/rom-spells/581129.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-60","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546837,"sourceSkillId":499946,"name":"Wasteland","description":"Enables [499948] to inflict extra [SC_SKILLTIPS_DARK]. While the falling rocks are in effect, the target's critical hit rate resistance is reduced.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801304,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499946,"name":"Wasteland","description":"Enables [499948] to inflict extra [SC_SKILLTIPS_DARK]. While the falling rocks are in effect, the target's critical hit rate resistance is reduced.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801304,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801304.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-70","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546838,"sourceSkillId":499944,"name":"Knee Ulcer","description":"Casts a [494321] and roots the target for (Buff-Time-623094) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801352,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623094],"components":[{"id":623094,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499944,"name":"Knee Ulcer","description":"Casts a [494321] and roots the target for (Buff-Time-623094) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801352,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623094]}}],"icon":"/assets/ui/rom-spells/801352.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-15","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":543088,"sourceSkillId":494025,"name":"Earth Chain","description":"Inflicts (DMG1) [SC_SKILLTIPS_EARTH] to 3 targets within a radius of 60. Each hit does only 70% the damage of the preceding hit. \nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_EARTH] on targets. Each hit does only 70% the damage of the preceding hit.","target":"hostile","range":18,"castTimeMs":2000,"cooldownMs":4000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":579085,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620437,503827,620216,504886],"components":[{"id":620437,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":24,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620216,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":24,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504886,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":494025,"name":"Earth Chain","description":"Inflicts (DMG1) [SC_SKILLTIPS_EARTH] to 3 targets within a radius of 60. Each hit does only 70% the damage of the preceding hit. \nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_EARTH] on targets. Each hit does only 70% the damage of the preceding hit.","target":"hostile","range":18,"castTimeMs":2000,"cooldownMs":4000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":579085,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620437,503827,620216,504886]}}],"icon":"/assets/ui/rom-spells/579085.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-20","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":543098,"sourceSkillId":494026,"name":"Spring of Blessings","description":"Causes party members within a range of 120 to recover (Buff0-Dot) HP every 2 seconds, for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579086,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504535],"components":[{"id":504535,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8299,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":15,"dot":{"timeSeconds":2,"type":0,"base":15,"skillLevelArg":22},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":494026,"name":"Spring of Blessings","description":"Causes party members within a range of 120 to recover (Buff0-Dot) HP every 2 seconds, for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579086,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504535]}}],"icon":"/assets/ui/rom-spells/579086.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-25","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":543108,"sourceSkillId":494027,"name":"Shield of Light","description":"Baths 3 friendly targets within a range of 60 in a shield of light that can absorb (Buff0-Shield)% HP damage for (Buff0-Time) seconds. (Effect cannot be used in conjunction with Wave Armor)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":579087,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620449],"components":[{"id":620449,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":5,"skillLevelArg":2}}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":494027,"name":"Shield of Light","description":"Baths 3 friendly targets within a range of 60 in a shield of light that can absorb (Buff0-Shield)% HP damage for (Buff0-Time) seconds. (Effect cannot be used in conjunction with Wave Armor)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":579087,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620449]}}],"icon":"/assets/ui/rom-spells/579087.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-30","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":30,"keyItemId":543118,"sourceSkillId":494322,"name":"Inspiration","description":"When your Fireball hits there is a chance that you will be Inspired, reducing the casting time of your next spell to less than 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579871,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":494322,"name":"Inspiration","description":"When your Fireball hits there is a chance that you will be Inspired, reducing the casting time of your next spell to less than 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579871,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579871.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-35","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":35,"keyItemId":543128,"sourceSkillId":494370,"name":"Spiritual Gush","description":"Reduces the mana requirement for your spells by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579872,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505163],"components":[{"id":505163,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":33,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":494370,"name":"Spiritual Gush","description":"Reduces the mana requirement for your spells by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579872,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505163]}}],"icon":"/assets/ui/rom-spells/579872.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-40","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":543138,"sourceSkillId":494371,"name":"Quick Help","description":"When the effect of Rock Protection ends you will additionally recover MP and HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579873,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":494371,"name":"Quick Help","description":"When the effect of Rock Protection ends you will additionally recover MP and HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579873,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579873.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-45","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":45,"keyItemId":543148,"sourceSkillId":494935,"name":"Holy Fury","description":"Increases the amount of damage caused by Mother Nature's Wrath when you do not have any of Nature's Power and lengthens effect time by 6 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581130,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":494935,"name":"Holy Fury","description":"Increases the amount of damage caused by Mother Nature's Wrath when you do not have any of Nature's Power and lengthens effect time by 6 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581130,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581130.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-50","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":543158,"sourceSkillId":494936,"name":"Summer Banquet","description":"Temporarily increases the [SC_SKILLTIPS_PARRY] of a friendly target by (Buff0-0) and increases their [SC_SKILLTIPS_HP] by (Buff4-0)% for (Buff0-Time) seconds. When they parry, you may gain the Power of Summer status, which increases your [SC_SKILLTIPS_02] by (Buff0-505910)% and healing power by (Buff1-505910)% for (Buff-Time-505910) seconds.\n(You cannot use this skill on yourself.)","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581131,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505909,506402,505910],"components":[{"id":505909,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":145}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":495067,"onBuffTimeoutMagicId":495408,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506402,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505910,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":5},{"type":149,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":494936,"name":"Summer Banquet","description":"Temporarily increases the [SC_SKILLTIPS_PARRY] of a friendly target by (Buff0-0) and increases their [SC_SKILLTIPS_HP] by (Buff4-0)% for (Buff0-Time) seconds. When they parry, you may gain the Power of Summer status, which increases your [SC_SKILLTIPS_02] by (Buff0-505910)% and healing power by (Buff1-505910)% for (Buff-Time-505910) seconds.\n(You cannot use this skill on yourself.)","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581131,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505909,506402,505910]}}],"icon":"/assets/ui/rom-spells/581131.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-60","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546839,"sourceSkillId":499931,"name":"Sounds of Season","description":"Power of Summer that is triggered by [499933] is transferred from a personal effect to a party effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801305,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499931,"name":"Sounds of Season","description":"Power of Summer that is triggered by [499933] is transferred from a personal effect to a party effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801305,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801305.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-70","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546840,"sourceSkillId":499941,"name":"Inspiration Display","description":"[499942] can also trigger an Inspiration effect. In a [494370] state, the triggered Inspiration has a chance that it will be doubled.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801353,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499941,"name":"Inspiration Display","description":"[499942] can also trigger an Inspiration effect. In a [494370] state, the triggered Inspiration has a chance that it will be doubled.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801353,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801353.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-15","classId":"rom-druid","secondaryClassId":"rom-warden","group":"passive","unlockLevel":15,"keyItemId":543089,"sourceSkillId":494028,"name":"Enhanced Briar Shield","description":"Allows your Briar Shield to be used on other friendly targets to protect both you and them. However, friendly targets won't receive any increase in [SC_SKILLTIPS_DEF]. \nMana is restored when Briar Shield reflects damage.\n(Can only be placed on one player at a time. The restoration effect can only be triggered once every (Buff-Time-504870) seconds.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579088,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504870],"components":[{"id":504870,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494028,"name":"Enhanced Briar Shield","description":"Allows your Briar Shield to be used on other friendly targets to protect both you and them. However, friendly targets won't receive any increase in [SC_SKILLTIPS_DEF]. \nMana is restored when Briar Shield reflects damage.\n(Can only be placed on one player at a time. The restoration effect can only be triggered once every (Buff-Time-504870) seconds.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579088,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504870]}}],"icon":"/assets/ui/rom-spells/579088.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-20","classId":"rom-druid","secondaryClassId":"rom-warden","group":"passive","unlockLevel":20,"keyItemId":543099,"sourceSkillId":494029,"name":"Avalanche","description":"Causes your Rockslide to cause additional Earth damage. Also has a chance of restoring 1 point of Nature's power to you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579089,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494029,"name":"Avalanche","description":"Causes your Rockslide to cause additional Earth damage. Also has a chance of restoring 1 point of Nature's power to you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579089,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579089.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-25","classId":"rom-druid","secondaryClassId":"rom-warden","group":"passive","unlockLevel":25,"keyItemId":543109,"sourceSkillId":494200,"name":"Extended Recovery","description":"Prolongs the effect of your Recover spell by 6 seconds, and has a chance of restoring 1 point of Nature's Power to you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578410,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494200,"name":"Extended Recovery","description":"Prolongs the effect of your Recover spell by 6 seconds, and has a chance of restoring 1 point of Nature's Power to you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578410,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/578410.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-30","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":30,"keyItemId":543119,"sourceSkillId":494323,"name":"Healing Ripple","description":"Restores (DMG1) HP to up to 3 friendly targets in a range of 60. Each time healing power is halved.\nIf you possess Nature's Power, it will cosume 1 point of Nature's Power to enhance the power and restores (DMG0) HP to the friendly targets. Each time healing power is halved.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.6},"source":{"imageId":579874,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504864,503827,620436,620441],"components":[{"id":504864,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":60,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":60,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620436,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":45,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":45,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494323,"name":"Healing Ripple","description":"Restores (DMG1) HP to up to 3 friendly targets in a range of 60. Each time healing power is halved.\nIf you possess Nature's Power, it will cosume 1 point of Nature's Power to enhance the power and restores (DMG0) HP to the friendly targets. Each time healing power is halved.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.6},"source":{"imageId":579874,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504864,503827,620436,620441]}}],"icon":"/assets/ui/rom-spells/579874.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-35","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":35,"keyItemId":543129,"sourceSkillId":494372,"name":"Mysterious Grace","description":"Increases your and your party members' [SC_SKILLTIPS_MDMG] by (current [SC_SKILLTIPS_MDMG] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579875,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505165,620451],"components":[{"id":505165,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":182,"abilityModifiers":[{"type":191,"value":15}],"abilitySkillLevelArg":10,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":496897,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620451,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":268959841,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494372,"name":"Mysterious Grace","description":"Increases your and your party members' [SC_SKILLTIPS_MDMG] by (current [SC_SKILLTIPS_MDMG] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579875,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505165,620451]}}],"icon":"/assets/ui/rom-spells/579875.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-40","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":40,"keyItemId":543139,"sourceSkillId":494373,"name":"Essence Extraction","description":"Converts 10% MP into 4 points of Nature's Power.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579876,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505166],"components":[{"id":505166,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":494373,"name":"Essence Extraction","description":"Converts 10% MP into 4 points of Nature's Power.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579876,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505166]}}],"icon":"/assets/ui/rom-spells/579876.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-45","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":45,"keyItemId":543149,"sourceSkillId":494937,"name":"Grace of the Forest","description":"Increases your mana by (Buff0-0) and healing by (Buff0-1)% for (Buff0-Time) seconds. Also, when you have Nature's Power it will additionally increase your maximum mana by (Buff0-505711)% and healing by (Buff1-505711)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581132,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505901,505711],"components":[{"id":505901,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":201326695,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":500},{"type":149,"value":3}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":495063,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505711,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":168,"value":10},{"type":149,"value":3}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":494937,"name":"Grace of the Forest","description":"Increases your mana by (Buff0-0) and healing by (Buff0-1)% for (Buff0-Time) seconds. Also, when you have Nature's Power it will additionally increase your maximum mana by (Buff0-505711)% and healing by (Buff1-505711)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581132,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505901,505711]}}],"icon":"/assets/ui/rom-spells/581132.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-50","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543159,"sourceSkillId":494938,"name":"Spirit of Life","description":"Summons a [494938] brimming with the energy of the earth. It heals (DMG-505712) + (DMG-620452) HP to all friendly targets within a range of 70 every 4 seconds.\nThe [494938] lasts for (Buff-Time-505938) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":50,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":1},"source":{"imageId":581133,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505946,505712,620452,505938],"components":[{"id":505946,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505712,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":0,"attack":{"type":0,"calculationType":4,"damagePower":100,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620452,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505938,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494938,"name":"Spirit of Life","description":"Summons a [494938] brimming with the energy of the earth. It heals (DMG-505712) + (DMG-620452) HP to all friendly targets within a range of 70 every 4 seconds.\nThe [494938] lasts for (Buff-Time-505938) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":50,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":1},"source":{"imageId":581133,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505946,505712,620452,505938]}}],"icon":"/assets/ui/rom-spells/581133.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-60","classId":"rom-druid","secondaryClassId":"rom-warden","group":"passive","unlockLevel":60,"keyItemId":546841,"sourceSkillId":499938,"name":"Briar Life","description":"Gives [494062] an additional increase in [SC_SKILLTIPS_HEAL_PASSIVE]. When [494028] is triggered and MP are recovered, it causes an extra (DMG-623125) healing effect with a range of 50.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801306,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623125],"components":[{"id":623125,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":32,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499938,"name":"Briar Life","description":"Gives [494062] an additional increase in [SC_SKILLTIPS_HEAL_PASSIVE]. When [494028] is triggered and MP are recovered, it causes an extra (DMG-623125) healing effect with a range of 50.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801306,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623125]}}],"icon":"/assets/ui/rom-spells/801306.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-70","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":70,"keyItemId":546842,"sourceSkillId":499936,"name":"Gift Pulse","description":"Consumes all Power of Nature and heals nearby party members. Every point of power of nature that is consumed heals (DMG-623140) HP. The maximum amount of healing is 100%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801354,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623149,623140],"components":[{"id":623149,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623140,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":10,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":10,"damagePowerSkillLevelArg":100,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499936,"name":"Gift Pulse","description":"Consumes all Power of Nature and heals nearby party members. Every point of power of nature that is consumed heals (DMG-623140) HP. The maximum amount of healing is 100%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801354,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623149,623140]}}],"icon":"/assets/ui/rom-spells/801354.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-15","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":15,"keyItemId":545880,"sourceSkillId":498631,"name":"Psychic Slash","description":"Combines psychic powers with a slash move to cause greater magical damage in a farther range. Also, Bleed never requires special weapon activation.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800006,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":498631,"name":"Psychic Slash","description":"Combines psychic powers with a slash move to cause greater magical damage in a farther range. Also, Bleed never requires special weapon activation.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800006,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800006.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-20","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":545881,"sourceSkillId":498636,"name":"Mind-Body Unification","description":"Increases damage caused by Psychic Arrows and earns rage for each hit.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800007,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":498636,"name":"Mind-Body Unification","description":"Increases damage caused by Psychic Arrows and earns rage for each hit.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800007,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800007.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-25","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":545882,"sourceSkillId":498638,"name":"Vigorous Maneuver","description":"Berserk inflicts an extra increase in magical attack power and casting speed. Defensive Formation inflicts an increase in movement speed and casting speed.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800008,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":498638,"name":"Vigorous Maneuver","description":"Berserk inflicts an extra increase in magical attack power and casting speed. Defensive Formation inflicts an increase in movement speed and casting speed.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800008,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800008.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-30","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":30,"keyItemId":545883,"sourceSkillId":498634,"name":"Breathing Control","description":"Using Enraged can recover extra focus. When casting Psychic Arrow, Warp Charge or Weakening Weave Curse, there is a chance to reset the cooldown time of Enraged.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800009,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":498634,"name":"Breathing Control","description":"Using Enraged can recover extra focus. When casting Psychic Arrow, Warp Charge or Weakening Weave Curse, there is a chance to reset the cooldown time of Enraged.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800009,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800009.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-35","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":545884,"sourceSkillId":498642,"name":"Mind Transference","description":"Converts all rage to psi. Each 35 points of rage can be exchanged for 1 psi.\n[SC_SKILLTIPS_9_PLUS2]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800010,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621320],"components":[{"id":621320,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"clearFlags":9,"abilityModifiers":[{"type":134,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":20,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":498642,"name":"Mind Transference","description":"Converts all rage to psi. Each 35 points of rage can be exchanged for 1 psi.\n[SC_SKILLTIPS_9_PLUS2]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800010,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621320]}}],"icon":"/assets/ui/rom-spells/800010.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-40","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":545885,"sourceSkillId":498645,"name":"Heart Fence","description":"[SC_SKILLTIPS_P2]\nReduces friendly target's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621321)% for (Buff-Time-621321) seconds and consumes all rage. Effect can be extended by 1 second for every 20 points rage that is consumed.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800011,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621323,621321],"components":[{"id":621323,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"clearFlags":9,"abilityModifiers":[{"type":134,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":20,"fixedValue":0,"summonCreatureId":0},{"id":621321,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":2,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":206,"value":-50},{"type":207,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":498645,"name":"Heart Fence","description":"[SC_SKILLTIPS_P2]\nReduces friendly target's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621321)% for (Buff-Time-621321) seconds and consumes all rage. Effect can be extended by 1 second for every 20 points rage that is consumed.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800011,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621323,621321]}}],"icon":"/assets/ui/rom-spells/800011.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-45","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":45,"keyItemId":545886,"sourceSkillId":498646,"name":"Consistent Heart Strike","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on target. If target is in a [501577] state, then the state's effective time will be reset and full rage will be restored. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800012,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621325,501577],"components":[{"id":621325,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-120,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-120,"damagePowerSkillLevelArg":50,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":498646,"name":"Consistent Heart Strike","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on target. If target is in a [501577] state, then the state's effective time will be reset and full rage will be restored. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800012,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621325,501577]}}],"icon":"/assets/ui/rom-spells/800012.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-50","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":545887,"sourceSkillId":498647,"name":"Heart Death","description":"Extends time for Bleed effect caused by Slash. Also further reduces dark attribute resistance and increases damage inflicted by Soul Pain.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800013,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":498647,"name":"Heart Death","description":"Extends time for Bleed effect caused by Slash. Also further reduces dark attribute resistance and increases damage inflicted by Soul Pain.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800013,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800013.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-60","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546843,"sourceSkillId":499870,"name":"Deep Breathing Control","description":"Your [498634] recovers more focus and an extra 10% HP.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801630,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499870,"name":"Deep Breathing Control","description":"Your [498634] recovers more focus and an extra 10% HP.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801630,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801630.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-70","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546844,"sourceSkillId":499868,"name":"Enhanced Mind Transference","description":"The rage consumption of [499869] drops from 35 to 20 and yields 1 extra psi.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801631,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499868,"name":"Enhanced Mind Transference","description":"The rage consumption of [499869] drops from 35 to 20 and yields 1 extra psi.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801631,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801631.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-15","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":15,"keyItemId":545912,"sourceSkillId":498650,"name":"Saces' Fury","description":"When the skill lands a critical hit during your next 5 attacks, it will increase [SC_SKILLTIPS_MCRI_POWER] by (Buff0-621331)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800063,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621439,621331],"components":[{"id":621439,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621331,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32903,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":21,"value":50}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":851623,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498650,"name":"Saces' Fury","description":"When the skill lands a critical hit during your next 5 attacks, it will increase [SC_SKILLTIPS_MCRI_POWER] by (Buff0-621331)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800063,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621439,621331]}}],"icon":"/assets/ui/rom-spells/800063.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-20","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":545913,"sourceSkillId":498665,"name":"Mind Rune","description":"Increases maximum HP by (Buff0-0)% and [SC_SKILLTIPS_INT] by (Buff0-1). Increases (Buff0-Dot) rage every 2 seconds for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800064,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621395],"components":[{"id":621395,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":10},{"type":4,"value":80}],"abilitySkillLevelArg":8,"dotTime":2,"dotType":2,"dotBase":10,"dot":{"timeSeconds":2,"type":2,"base":10,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498665,"name":"Mind Rune","description":"Increases maximum HP by (Buff0-0)% and [SC_SKILLTIPS_INT] by (Buff0-1). Increases (Buff0-Dot) rage every 2 seconds for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800064,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621395]}}],"icon":"/assets/ui/rom-spells/800064.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-25","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"passive","unlockLevel":25,"keyItemId":545914,"sourceSkillId":498667,"name":"Electric Transference","description":"Extends the [498522] state by 10 seconds and also increases [SC_SKILLTIPS_DARK] on the target by (Buff0-621396)%.\n\nAnd your [498522] will also give this effect:\n[SC_SKILLTIPS_9_1S]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800065,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621396],"components":[{"id":621396,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilityModifiers":[{"type":226,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498667,"name":"Electric Transference","description":"Extends the [498522] state by 10 seconds and also increases [SC_SKILLTIPS_DARK] on the target by (Buff0-621396)%.\n\nAnd your [498522] will also give this effect:\n[SC_SKILLTIPS_9_1S]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800065,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621396]}}],"icon":"/assets/ui/rom-spells/800065.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-30","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"passive","unlockLevel":30,"keyItemId":545915,"sourceSkillId":498669,"name":"Runecraft - Ingenuity","description":"Defense Net cooldown time is reduced by 30 seconds. Caster will also earn Defense Net when skill is used on friendly targets.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800066,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498669,"name":"Runecraft - Ingenuity","description":"Defense Net cooldown time is reduced by 30 seconds. Caster will also earn Defense Net when skill is used on friendly targets.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800066,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800066.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-35","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":35,"keyItemId":545916,"sourceSkillId":498673,"name":"Rune Energy Devotion","description":"Reduces inflicted aggro by (Buff0-1)% and increases dark attribute magic power by (Buff0-0)% for (Buff0-Time) seconds. Also immediately restores (DMG4) rage. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800067,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621403,621681],"components":[{"id":621403,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":50,"value":7},{"type":138,"value":-8}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621681,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":9,"abilityModifiers":[{"type":134,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":35,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":35,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498673,"name":"Rune Energy Devotion","description":"Reduces inflicted aggro by (Buff0-1)% and increases dark attribute magic power by (Buff0-0)% for (Buff0-Time) seconds. Also immediately restores (DMG4) rage. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800067,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621403,621681]}}],"icon":"/assets/ui/rom-spells/800067.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-40","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":40,"keyItemId":545917,"sourceSkillId":498676,"name":"Imagination Release","description":"[SC_SKILLTIPS_P2]\nConverts the target's [621190] effect to 35 focus.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800068,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621405,621190],"components":[{"id":621405,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":0,"summonCreatureId":0},{"id":621190,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498676,"name":"Imagination Release","description":"[SC_SKILLTIPS_P2]\nConverts the target's [621190] effect to 35 focus.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800068,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621405,621190]}}],"icon":"/assets/ui/rom-spells/800068.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-45","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":45,"keyItemId":545918,"sourceSkillId":498677,"name":"Saces' Impulse","description":"[SC_SKILLTIPS_P1]\nRecovers (Buff0-Dot)% HP every second and increases [SC_SKILLTIPS_INT] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800069,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621407],"components":[{"id":621407,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":163,"value":9}],"abilitySkillLevelArg":8,"dotTime":1,"dotType":5,"dotBase":4,"dot":{"timeSeconds":1,"type":5,"base":4,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498677,"name":"Saces' Impulse","description":"[SC_SKILLTIPS_P1]\nRecovers (Buff0-Dot)% HP every second and increases [SC_SKILLTIPS_INT] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800069,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621407]}}],"icon":"/assets/ui/rom-spells/800069.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-50","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"passive","unlockLevel":50,"keyItemId":545919,"sourceSkillId":498681,"name":"Psychic Extension","description":"Your [498522] and [498526] can be cast over long distances and cause [SC_SKILLTIPS_DARK]. Reduces [498522] cooldown time by 2 seconds, and [498526] cooldown time by 3 seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800070,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498681,"name":"Psychic Extension","description":"Your [498522] and [498526] can be cast over long distances and cause [SC_SKILLTIPS_DARK]. Reduces [498522] cooldown time by 2 seconds, and [498526] cooldown time by 3 seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800070,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800070.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-60","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":60,"keyItemId":546851,"sourceSkillId":499854,"name":"Rage Sublimation","description":"Consumes 100 rage and yields 6 psi points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"rage","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801638,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623472],"components":[{"id":623472,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":499854,"name":"Rage Sublimation","description":"Consumes 100 rage and yields 6 psi points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"rage","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801638,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623472]}}],"icon":"/assets/ui/rom-spells/801638.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-70","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"passive","unlockLevel":70,"keyItemId":546852,"sourceSkillId":499852,"name":"Psychic Tap","description":"When a target has been hit by [497957], there is a chance that your [SC_SKILLTIPS_MDMG] will be increased and a shield will be invoked that absorbs damage up to 10% of your HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801639,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":499852,"name":"Psychic Tap","description":"When a target has been hit by [497957], there is a chance that your [SC_SKILLTIPS_MDMG] will be increased and a shield will be invoked that absorbs damage up to 10% of your HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801639,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801639.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-15","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":545888,"sourceSkillId":498670,"name":"Soul Poisoned Fang","description":"Reduces all of target's resistance by (Buff0-0) points and inflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] on target every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800014,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621399],"components":[{"id":621399,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":22,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":26,"value":-16}],"abilitySkillLevelArg":100,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":498670,"name":"Soul Poisoned Fang","description":"Reduces all of target's resistance by (Buff0-0) points and inflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] on target every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800014,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621399]}}],"icon":"/assets/ui/rom-spells/800014.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-20","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":20,"keyItemId":545889,"sourceSkillId":498672,"name":"Soul Hit","description":"Shadowstab doesn't require a dagger and inflicts magical damage. \nThe effect time of [500654] will be extended by 12 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800015,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500654],"components":[{"id":500654,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":45},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":498672,"name":"Soul Hit","description":"Shadowstab doesn't require a dagger and inflicts magical damage. \nThe effect time of [500654] will be extended by 12 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800015,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500654]}}],"icon":"/assets/ui/rom-spells/800015.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-25","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":545890,"sourceSkillId":498675,"name":"Ready and Waiting","description":"Increases [SC_SKILLTIPS_INT] when you enter a Willpower Blade or Willpower Construct state for (Buff-Time-621404) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800016,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621404],"components":[{"id":621404,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524355,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":163,"value":2}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":498675,"name":"Ready and Waiting","description":"Increases [SC_SKILLTIPS_INT] when you enter a Willpower Blade or Willpower Construct state for (Buff-Time-621404) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800016,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621404]}}],"icon":"/assets/ui/rom-spells/800016.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-30","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":30,"keyItemId":545891,"sourceSkillId":498678,"name":"Soul Raid","description":"Increases [SC_SKILLTIPS_MOVE] and dark damage after Shadow Step is used. Lasts for (Buff-Time-621406) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800017,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621406],"components":[{"id":621406,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10},{"type":50,"value":10}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":498678,"name":"Soul Raid","description":"Increases [SC_SKILLTIPS_MOVE] and dark damage after Shadow Step is used. Lasts for (Buff-Time-621406) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800017,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621406]}}],"icon":"/assets/ui/rom-spells/800017.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-35","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":35,"keyItemId":545892,"sourceSkillId":498679,"name":"Spirit Revival","description":"Gives 1 psi after a Willpower Blade or Willpower Construct state ends.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800018,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":498679,"name":"Spirit Revival","description":"Gives 1 psi after a Willpower Blade or Willpower Construct state ends.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800018,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800018.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-40","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":545893,"sourceSkillId":498695,"name":"Liquidation Suffering","description":"[SC_SKILLTIPS_P2]\nTemporarily increases aggro caused by a friendly target by (Buff0-0)% and reduces the aggro caused by the caster and other party members by (Buff0-621433)%. Lasts for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800019,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621432,621654,621433],"components":[{"id":621432,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621654,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621433,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":35,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":498695,"name":"Liquidation Suffering","description":"[SC_SKILLTIPS_P2]\nTemporarily increases aggro caused by a friendly target by (Buff0-0)% and reduces the aggro caused by the caster and other party members by (Buff0-621433)%. Lasts for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800019,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621432,621654,621433]}}],"icon":"/assets/ui/rom-spells/800019.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-45","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":45,"keyItemId":545894,"sourceSkillId":498699,"name":"End of Thought","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on target. If target's HP is less than 35%, the caster will earn 1 psi for every second. This can happen 4 times. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.8},"source":{"imageId":800020,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621435],"components":[{"id":621435,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-80,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-80,"damagePowerSkillLevelArg":45,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":498699,"name":"End of Thought","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on target. If target's HP is less than 35%, the caster will earn 1 psi for every second. This can happen 4 times. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.8},"source":{"imageId":800020,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621435]}}],"icon":"/assets/ui/rom-spells/800020.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-50","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":545895,"sourceSkillId":498700,"name":"Crime and Punishment","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on the target. If the target has been affected by Perception Extraction, Soul Pain or Soul Poisoned Fang then each additional state will increase damage caused by [498700] by 25% and will reset the effect duration of these states.\n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800021,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621440],"components":[{"id":621440,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-120,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-120,"damagePowerSkillLevelArg":50,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":498700,"name":"Crime and Punishment","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on the target. If the target has been affected by Perception Extraction, Soul Pain or Soul Poisoned Fang then each additional state will increase damage caused by [498700] by 25% and will reset the effect duration of these states.\n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800021,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621440]}}],"icon":"/assets/ui/rom-spells/800021.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-60","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546845,"sourceSkillId":499866,"name":"Psychic Projectile","description":"When a target is hit by [499867], all damage caused by the target is decreased by (Buff0-623417)% for (Buff-Time-623417) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801632,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623417],"components":[{"id":623417,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":-50},{"type":205,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499866,"name":"Psychic Projectile","description":"When a target is hit by [499867], all damage caused by the target is decreased by (Buff0-623417)% for (Buff-Time-623417) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801632,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623417]}}],"icon":"/assets/ui/rom-spells/801632.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-70","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546846,"sourceSkillId":499864,"name":"Shadowstab Guile","description":"When using [499865] you will obtain 1 additional psi and 3 extra psi when using [499666].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801633,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499864,"name":"Shadowstab Guile","description":"When using [499865] you will obtain 1 additional psi and 3 extra psi when using [499666].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801633,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801633.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-15","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":15,"keyItemId":545896,"sourceSkillId":498694,"name":"Psychic Flash","description":"Psychic Arrows and Weakening Weave Curse can cause an extra (FixDMG-621434) x INT [SC_SKILLTIPS_MDMG].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800027,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621434],"components":[{"id":621434,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-0.4,"attack":{"type":0,"calculationType":4,"damagePower":0,"damagePowerSkillLevelArg":0,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":498694,"name":"Psychic Flash","description":"Psychic Arrows and Weakening Weave Curse can cause an extra (FixDMG-621434) x INT [SC_SKILLTIPS_MDMG].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800027,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621434]}}],"icon":"/assets/ui/rom-spells/800027.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-20","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":545897,"sourceSkillId":498697,"name":"Flaming Heart Strike","description":"Inflicts (DMG0) + (FixDMG-621438) x INT [SC_SKILLTIPS_FLAME] on target. \n[SC_SKILLTIPS_9_3S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":65000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800028,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621438],"components":[{"id":621438,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":-1,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":45,"fixedValue":-1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":498697,"name":"Flaming Heart Strike","description":"Inflicts (DMG0) + (FixDMG-621438) x INT [SC_SKILLTIPS_FLAME] on target. \n[SC_SKILLTIPS_9_3S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":65000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800028,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621438]}}],"icon":"/assets/ui/rom-spells/800028.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-25","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":25,"keyItemId":545898,"sourceSkillId":498698,"name":"Warp Flash","description":"Warp Charge inflicts an extra (FixDMG-621434) x INT [SC_SKILLTIPS_MDMG] and when the skill hits, it raises the [SC_SKILLTIPS_DPS] and [SC_SKILLTIPS_CAST] of nearby party members.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800029,"sourceEffectType":2,"sourceTarget":6,"componentIds":[621434],"components":[{"id":621434,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-0.4,"attack":{"type":0,"calculationType":4,"damagePower":0,"damagePowerSkillLevelArg":0,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":498698,"name":"Warp Flash","description":"Warp Charge inflicts an extra (FixDMG-621434) x INT [SC_SKILLTIPS_MDMG] and when the skill hits, it raises the [SC_SKILLTIPS_DPS] and [SC_SKILLTIPS_CAST] of nearby party members.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800029,"sourceEffectType":2,"sourceTarget":6,"componentIds":[621434]}}],"icon":"/assets/ui/rom-spells/800029.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-30","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":545899,"sourceSkillId":498703,"name":"Focus Building","description":"Increases [SC_SKILLTIPS_INT] by (Buff0-621443)% every second while in effect. Can be stacked a maximum of 10 times, but effect is re-stacked after moving. \n(This skill consumes (Buff0-Dot) focus every second. Effect stops if there is insufficient focus.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800030,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621444,621443],"components":[{"id":621444,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":47,"specialActionFlags":0,"assistType":-1,"clearFlags":256,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":498704,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":497740,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":3,"dotBase":-2,"dot":{"timeSeconds":1,"type":3,"base":-2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621443,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":-10,"settingFlags":32771,"specialActionFlags":0,"assistType":-1,"clearFlags":4,"abilityModifiers":[{"type":163,"value":3}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":498703,"name":"Focus Building","description":"Increases [SC_SKILLTIPS_INT] by (Buff0-621443)% every second while in effect. Can be stacked a maximum of 10 times, but effect is re-stacked after moving. \n(This skill consumes (Buff0-Dot) focus every second. Effect stops if there is insufficient focus.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800030,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621444,621443]}}],"icon":"/assets/ui/rom-spells/800030.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-35","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":545900,"sourceSkillId":498705,"name":"Soul Brand","description":"When [497964], [497960] or [498545] hits, it carries an extra Soul Brand effect. It increases the [SC_SKILLTIPS_DARK] and [SC_SKILLTIPS_FLAME] on target by (Buff0-621446)% for (Buff-Time-621446) seconds. This effect can be stacked 4 times.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800031,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621446],"components":[{"id":621446,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":223,"value":9},{"type":226,"value":9}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":498705,"name":"Soul Brand","description":"When [497964], [497960] or [498545] hits, it carries an extra Soul Brand effect. It increases the [SC_SKILLTIPS_DARK] and [SC_SKILLTIPS_FLAME] on target by (Buff0-621446)% for (Buff-Time-621446) seconds. This effect can be stacked 4 times.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800031,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621446]}}],"icon":"/assets/ui/rom-spells/800031.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-40","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":40,"keyItemId":545901,"sourceSkillId":498709,"name":"Saces' Cracking Spell","description":"[SC_SKILLTIPS_P2]\nReduces target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE] by (Buff0-0). Lasts for (Buff0-Time) seconds.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800032,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621450],"components":[{"id":621450,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":182,"value":-20},{"type":183,"value":-20}],"abilitySkillLevelArg":45,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":498709,"name":"Saces' Cracking Spell","description":"[SC_SKILLTIPS_P2]\nReduces target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE] by (Buff0-0). Lasts for (Buff0-Time) seconds.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800032,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621450]}}],"icon":"/assets/ui/rom-spells/800032.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-45","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":545902,"sourceSkillId":498710,"name":"Soul Brand Sting","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG4) + (FixDMG-621473) x INT [SC_SKILLTIPS_DARK] and [SC_SKILLTIPS_FLAME] on target and resets the cooldown time for Flaming Heart Strike. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800033,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621473,621474],"components":[{"id":621473,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":3,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621474,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":3,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":498710,"name":"Soul Brand Sting","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG4) + (FixDMG-621473) x INT [SC_SKILLTIPS_DARK] and [SC_SKILLTIPS_FLAME] on target and resets the cooldown time for Flaming Heart Strike. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800033,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621473,621474]}}],"icon":"/assets/ui/rom-spells/800033.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-50","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":545903,"sourceSkillId":498711,"name":"Thinking Overload","description":"Restores (Buff0-Dot) focus every 2 seconds and increases [SC_SKILLTIPS_CAST] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800034,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621451],"components":[{"id":621451,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":-15}],"abilitySkillLevelArg":0,"dotTime":2,"dotType":3,"dotBase":5,"dot":{"timeSeconds":2,"type":3,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":498711,"name":"Thinking Overload","description":"Restores (Buff0-Dot) focus every 2 seconds and increases [SC_SKILLTIPS_CAST] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800034,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621451]}}],"icon":"/assets/ui/rom-spells/800034.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-60","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546847,"sourceSkillId":499862,"name":"Blazing Barrier","description":"[499863] increases your [SC_SKILLTIPS_FLAME].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801634,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499862,"name":"Blazing Barrier","description":"[499863] increases your [SC_SKILLTIPS_FLAME].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801634,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801634.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-70","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546848,"sourceSkillId":499860,"name":"Silent Seal","description":"When hit by [499861], the target will be marked out. The next time it is hit, the damage received will be doubled.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801635,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499860,"name":"Silent Seal","description":"When hit by [499861], the target will be marked out. The next time it is hit, the damage received will be doubled.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801635,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801635.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-15","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":15,"keyItemId":545904,"sourceSkillId":498633,"name":"Healing Fortune","description":"When a psychic arrow hits, there is a chance that your next Urgent Heal will become an instant spell without consuming any MP. Also increases the healing amount of Urgent Heal.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800035,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":498633,"name":"Healing Fortune","description":"When a psychic arrow hits, there is a chance that your next Urgent Heal will become an instant spell without consuming any MP. Also increases the healing amount of Urgent Heal.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800035,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800035.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-20","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":20,"keyItemId":545905,"sourceSkillId":498640,"name":"Protection Weave Curse","description":"Your Regenerate will be able to increase your target's [SC_SKILLTIPS_INT] and [SC_SKILLTIPS_MND] by (Buff0-621318)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800036,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621318],"components":[{"id":621318,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":25,"abilityModifiers":[{"type":163,"value":10},{"type":164,"value":10}],"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":498640,"name":"Protection Weave Curse","description":"Your Regenerate will be able to increase your target's [SC_SKILLTIPS_INT] and [SC_SKILLTIPS_MND] by (Buff0-621318)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800036,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621318]}}],"icon":"/assets/ui/rom-spells/800036.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-25","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":25,"keyItemId":545906,"sourceSkillId":498641,"name":"Ring of Comfort","description":"Restores (DMG0) HP for 6 friendly targets in range.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":9,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800037,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621319],"components":[{"id":621319,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":498641,"name":"Ring of Comfort","description":"Restores (DMG0) HP for 6 friendly targets in range.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":9,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800037,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621319]}}],"icon":"/assets/ui/rom-spells/800037.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-30","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":30,"keyItemId":545907,"sourceSkillId":498643,"name":"Psychic Rising Tide","description":"Rising Tide becomes an instant spell, but has a 5 second cooldown time. When Rising Tide hits, there is a chance that your next Urgent Heal will become an instant spell that doesn't require any MP. Also increases the healing amount of Urgent Heal.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800038,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":498643,"name":"Psychic Rising Tide","description":"Rising Tide becomes an instant spell, but has a 5 second cooldown time. When Rising Tide hits, there is a chance that your next Urgent Heal will become an instant spell that doesn't require any MP. Also increases the healing amount of Urgent Heal.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800038,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800038.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-35","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":545908,"sourceSkillId":498648,"name":"Mind Shield","description":"[SC_SKILLTIPS_DEF] will be enhanced by Defense Net, but the effect time is reduced by 1 second. Urgent Heal carries a chance to reset cooldown time for Ring of Comfort.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800039,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":498648,"name":"Mind Shield","description":"[SC_SKILLTIPS_DEF] will be enhanced by Defense Net, but the effect time is reduced by 1 second. Urgent Heal carries a chance to reset cooldown time for Ring of Comfort.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800039,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800039.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-40","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":40,"keyItemId":545909,"sourceSkillId":498649,"name":"Soul Enlightenment","description":"[SC_SKILLTIPS_P2]\nCaster and friendly party members earn Soul Enlightenment which raises Maximum HP by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800040,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621328],"components":[{"id":621328,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":10},{"type":144,"value":6}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":498649,"name":"Soul Enlightenment","description":"[SC_SKILLTIPS_P2]\nCaster and friendly party members earn Soul Enlightenment which raises Maximum HP by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800040,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621328]}}],"icon":"/assets/ui/rom-spells/800040.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-45","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":45,"keyItemId":545910,"sourceSkillId":498662,"name":"Touch of Faith","description":"[SC_SKILLTIPS_P1]\nInflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] on the target every 2 seconds for (Buff0-Time) seconds. Every time [498662] inflicts damage, there is a 50% chance that your next Psychic Arrows will become an instant spell that doesn't consume any focus. However, you will be unable to earn psi. Also resets cooldown time for Rising Tide.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800041,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621329,621330],"components":[{"id":621329,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":24,"hateCost":0,"settingFlags":202,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-14,"dot":{"timeSeconds":2,"type":0,"base":-14,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621330,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":24,"hateCost":0,"settingFlags":4,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498663,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":498662,"name":"Touch of Faith","description":"[SC_SKILLTIPS_P1]\nInflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] on the target every 2 seconds for (Buff0-Time) seconds. Every time [498662] inflicts damage, there is a 50% chance that your next Psychic Arrows will become an instant spell that doesn't consume any focus. However, you will be unable to earn psi. Also resets cooldown time for Rising Tide.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800041,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621329,621330]}}],"icon":"/assets/ui/rom-spells/800041.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-50","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":50,"keyItemId":545911,"sourceSkillId":498668,"name":"Divine Assistance","description":"When you use Urgent Heal because you activated Healing Fortune or Psychic Rising Tide, you can earn 1 point Inspiration. After 8 points of Inspiration are accumulated, you can reset the cooldown time for Defense Net.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800042,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":498668,"name":"Divine Assistance","description":"When you use Urgent Heal because you activated Healing Fortune or Psychic Rising Tide, you can earn 1 point Inspiration. After 8 points of Inspiration are accumulated, you can reset the cooldown time for Defense Net.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800042,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800042.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-60","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":60,"keyItemId":546849,"sourceSkillId":499858,"name":"Great Salvation","description":"Restores (DMG0) HP to the target. If the target is under any negative effects, each negative effect will increase the amount of healing by (Buff0-623450)%. It also restores HP to the caster.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.4},"source":{"imageId":801636,"sourceEffectType":0,"sourceTarget":4,"componentIds":[620577,623701,623450],"components":[{"id":620577,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":40,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":40,"damagePowerSkillLevelArg":33,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":623701,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623450,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32769,"specialActionFlags":0,"assistType":-1,"clearFlags":16384,"abilityModifiers":[{"type":149,"value":10}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499858,"name":"Great Salvation","description":"Restores (DMG0) HP to the target. If the target is under any negative effects, each negative effect will increase the amount of healing by (Buff0-623450)%. It also restores HP to the caster.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.4},"source":{"imageId":801636,"sourceEffectType":0,"sourceTarget":4,"componentIds":[620577,623701,623450]}}],"icon":"/assets/ui/rom-spells/801636.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-70","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":70,"keyItemId":546850,"sourceSkillId":499856,"name":"Spreading Pain","description":"Inflicts [497959], [497960], and [497964] on an enemy target.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801637,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623469],"components":[{"id":623469,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499856,"name":"Spreading Pain","description":"Inflicts [497959], [497960], and [497964] on an enemy target.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801637,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623469]}}],"icon":"/assets/ui/rom-spells/801637.png","iconResolution":"native-interface-fdb"}]} +{"schemaVersion":1,"source":{"rootHint":"RuneWaker source snapshot","hashes":{"learnMagic":"6148199bcd1484ba1a122a6db5e2b3c2f2a161402bfe67fc67eb53f55fc6cfa3","magicCollect":"4aae19865cb07b30f99945aa7319a0096db244ff5e5b4b5d902fc6889474f501","magicObject":"52af13a2d8cfa9a66d4caa2d3c38832edc232f058995a64ef8135a6b82e43691","imageObject":"dd5ffcfd74b253dcecaa2f41a931a634dd45ef5f7c13e849d539ddc47fdee1f9","vocationTable":"f06cdaf60c54415dcbea47e9fa0e77b7527035a2aec73d3289370dc39751e76c","strings":"0c20d43660cb2ee042a78f7a8c18b4e104a263d54dd8c4bc98a54155e8adb3b0","eliteLua":"ee9e337548abd7fc555d85bf2f96813dfd77416c3e65d4cadf74a80838da1486","roleAttr":"8143a90ce826bf3152551a4508d212f186012cbc054e505e426551cb62369c1f","objectStruct":"708f2d087f2654b97d149ab7124d9cdffc915cf8bf18108feff3f1a45f124c20","interfaceFdb":"51bbb5a9d6a19a254b302000d3dd6e3a796f4f759015f3352f576a1055496e30"}},"canonicalClasses":[{"id":"rom-warrior","sourceClassId":1,"name":"Warrior","resource":"rage"},{"id":"rom-scout","sourceClassId":2,"name":"Scout","resource":"focus"},{"id":"rom-rogue","sourceClassId":3,"name":"Rogue","resource":"energy"},{"id":"rom-mage","sourceClassId":4,"name":"Mage","resource":"mana"},{"id":"rom-priest","sourceClassId":5,"name":"Priest","resource":"mana"},{"id":"rom-knight","sourceClassId":6,"name":"Knight","resource":"mana"},{"id":"rom-warden","sourceClassId":7,"name":"Warden","resource":"mana"},{"id":"rom-druid","sourceClassId":8,"name":"Druid","resource":"mana"},{"id":"rom-warlock","sourceClassId":9,"name":"Warlock","resource":"focus"},{"id":"rom-champion","sourceClassId":10,"name":"Champion","resource":"rage"}],"baseStatGrowth":{"rom-warrior":{"strength":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"stamina":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"intellect":{"levelOne":5,"flatGrowth":1.9,"percentGrowth":0.02},"wisdom":{"levelOne":6,"flatGrowth":2.1,"percentGrowth":0.02},"agility":{"levelOne":12,"flatGrowth":4.25,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-scout":{"strength":{"levelOne":11,"flatGrowth":3.85,"percentGrowth":0.02},"stamina":{"levelOne":10,"flatGrowth":3.65,"percentGrowth":0.02},"intellect":{"levelOne":10,"flatGrowth":3.6,"percentGrowth":0.02},"wisdom":{"levelOne":9,"flatGrowth":3.4,"percentGrowth":0.02},"agility":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-rogue":{"strength":{"levelOne":12,"flatGrowth":4.15,"percentGrowth":0.02},"stamina":{"levelOne":11,"flatGrowth":3.9,"percentGrowth":0.02},"intellect":{"levelOne":7,"flatGrowth":2.6,"percentGrowth":0.02},"wisdom":{"levelOne":7,"flatGrowth":2.4,"percentGrowth":0.02},"agility":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-mage":{"strength":{"levelOne":5,"flatGrowth":1.9,"percentGrowth":0.02},"stamina":{"levelOne":9,"flatGrowth":3.4,"percentGrowth":0.02},"intellect":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"wisdom":{"levelOne":12,"flatGrowth":4.25,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-priest":{"strength":{"levelOne":7,"flatGrowth":2.5,"percentGrowth":0.02},"stamina":{"levelOne":10,"flatGrowth":3.6,"percentGrowth":0.02},"intellect":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"wisdom":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-knight":{"strength":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"stamina":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"intellect":{"levelOne":11,"flatGrowth":3.75,"percentGrowth":0.02},"wisdom":{"levelOne":11,"flatGrowth":4.1,"percentGrowth":0.02},"agility":{"levelOne":11,"flatGrowth":3.9,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-warden":{"strength":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"stamina":{"levelOne":12,"flatGrowth":4.2,"percentGrowth":0.02},"intellect":{"levelOne":10,"flatGrowth":3.8,"percentGrowth":0.02},"wisdom":{"levelOne":10,"flatGrowth":4,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-druid":{"strength":{"levelOne":7,"flatGrowth":2.5,"percentGrowth":0.02},"stamina":{"levelOne":11,"flatGrowth":3.7,"percentGrowth":0.02},"intellect":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"wisdom":{"levelOne":13,"flatGrowth":4.9,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.65,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-warlock":{"strength":{"levelOne":5,"flatGrowth":1.9,"percentGrowth":0.02},"stamina":{"levelOne":9,"flatGrowth":3.4,"percentGrowth":0.02},"intellect":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"wisdom":{"levelOne":12,"flatGrowth":4.25,"percentGrowth":0.02},"agility":{"levelOne":10,"flatGrowth":3.5,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}},"rom-champion":{"strength":{"levelOne":14,"flatGrowth":5,"percentGrowth":0.02},"stamina":{"levelOne":13,"flatGrowth":4.5,"percentGrowth":0.02},"intellect":{"levelOne":5,"flatGrowth":1.9,"percentGrowth":0.02},"wisdom":{"levelOne":6,"flatGrowth":2.1,"percentGrowth":0.02},"agility":{"levelOne":12,"flatGrowth":4.25,"percentGrowth":0.02},"health":{"levelOne":60,"flatGrowth":2,"percentGrowth":0.02},"mana":{"levelOne":20,"flatGrowth":2,"percentGrowth":0.02}}},"raceMatrix":{"rom-human":["rom-warrior","rom-scout","rom-rogue","rom-mage","rom-priest","rom-knight"],"rom-elf":["rom-warrior","rom-scout","rom-rogue","rom-mage","rom-warden","rom-druid"],"rom-dwarf":["rom-warrior","rom-rogue","rom-mage","rom-priest","rom-warlock","rom-champion"]},"eliteLevels":[15,20,25,30,35,40,45,50,60,70],"skills":[{"id":"rom-warrior-primary-0","classId":"rom-warrior","group":"primary","unlockLevel":1,"sourceSkillId":490493,"name":"Frenzy","description":"Greatly increases attack speed, accuracy, and damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573727,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500942],"components":[{"id":500942,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-20},{"type":197,"value":50},{"type":56,"value":15}],"abilitySkillLevelArg":1,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490493,"name":"Frenzy","description":"Greatly increases attack speed, accuracy, and damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573727,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500942]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/573727.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-1","classId":"rom-warrior","group":"primary","unlockLevel":2,"sourceSkillId":491133,"name":"Probing Attack","description":"Causes (DMG0) main hand weapon DPS and makes the target Vulnerable.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":574096,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500994,501502],"components":[{"id":500994,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501502,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":8258,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491133,"name":"Probing Attack","description":"Causes (DMG0) main hand weapon DPS and makes the target Vulnerable.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":574096,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500994,501502]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/574096.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-2","classId":"rom-warrior","group":"primary","unlockLevel":2,"sourceSkillId":491136,"name":"Open Flank","description":"When the target is Vulnerable this brute force attack causes (DMG0) main hand weapon DPS to the target and Weakens it.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570821,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501505,501520,501503],"components":[{"id":501505,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501520,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0},{"id":501503,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":8258,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491136,"name":"Open Flank","description":"When the target is Vulnerable this brute force attack causes (DMG0) main hand weapon DPS to the target and Weakens it.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570821,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501505,501520,501503]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/570821.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-3","classId":"rom-warrior","group":"primary","unlockLevel":4,"sourceSkillId":491142,"name":"Tactical Attack","description":"Inflicts (DMG0) main hand weapon DPS and additional damage if target is affected by a Bleed effect caused by Slash. (Requires a two-handed weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577432,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501514,500081],"components":[{"id":501514,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.45,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.45,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":2,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500081,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":491142,"name":"Tactical Attack","description":"Inflicts (DMG0) main hand weapon DPS and additional damage if target is affected by a Bleed effect caused by Slash. (Requires a two-handed weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577432,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501514,500081]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/577432.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-4","classId":"rom-warrior","group":"primary","unlockLevel":6,"sourceSkillId":491139,"name":"Thunder","description":"To be used when the target is in Weakened state. Causes (DMG0) main hand weapon DPS with an additional (Buff4-Time) second Stun.\n(For players this effect lasts for (Buff5-Time) seconds.)\n(Requires a one-hand weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570901,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501508,501511,503836,502923],"components":[{"id":501508,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501511,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[150999123,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503836,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[150999123,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502923,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":491139,"name":"Thunder","description":"To be used when the target is in Weakened state. Causes (DMG0) main hand weapon DPS with an additional (Buff4-Time) second Stun.\n(For players this effect lasts for (Buff5-Time) seconds.)\n(Requires a one-hand weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570901,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501508,501511,503836,502923]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/570901.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-5","classId":"rom-warrior","group":"primary","unlockLevel":10,"sourceSkillId":490089,"name":"Feint","description":"After the enemy dodges, (DMG0) main hand weapon DPS are once inflicted on the target. Additionally accuracy increases by 20%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":2000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570899,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500090],"components":[{"id":500090,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490089,"name":"Feint","description":"After the enemy dodges, (DMG0) main hand weapon DPS are once inflicted on the target. Additionally accuracy increases by 20%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":2000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570899,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500090]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/570899.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-6","classId":"rom-warrior","group":"primary","unlockLevel":14,"sourceSkillId":490129,"name":"Surprise Attack","description":"The Surprise Attack causes (DMG0) main hand weapon physical DPS, additionally Knocking down the target. (Must have a distance of at least 60 from the target.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":12000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570895,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620361,500235],"components":[{"id":620361,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":5,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500235,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4179,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490129,"name":"Surprise Attack","description":"The Surprise Attack causes (DMG0) main hand weapon physical DPS, additionally Knocking down the target. (Must have a distance of at least 60 from the target.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":12000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570895,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620361,500235]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/570895.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-7","classId":"rom-warrior","group":"primary","unlockLevel":18,"sourceSkillId":490130,"name":"Taunt","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-621219)%.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570890,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500118,621219],"components":[{"id":500118,"magicFunc":7,"magicType":5,"effectType":0,"effectTime":5,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621219,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":1}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490130,"name":"Taunt","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-621219)%.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570890,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500118,621219]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/570890.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-8","classId":"rom-warrior","group":"primary","unlockLevel":22,"sourceSkillId":490121,"name":"Moon Cleave","description":"Attack multiple targets within range three times. Each attack inflicts (DMG0) main hand weapon DPS. (Requires a two-handed weapon)","target":"self","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570905,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500105],"components":[{"id":500105,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":2,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490121,"name":"Moon Cleave","description":"Attack multiple targets within range three times. Each attack inflicts (DMG0) main hand weapon DPS. (Requires a two-handed weapon)","target":"self","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570905,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500105]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/570905.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-9","classId":"rom-warrior","group":"primary","unlockLevel":26,"sourceSkillId":490136,"name":"Shout","description":"Stuns up to 5 targets in a range of 90 for (Buff0-Time) seconds.","target":"self","range":9,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":570907,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500125,502719],"components":[{"id":500125,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":59,"effectFlagWords":[151060563,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490136,"name":"Shout","description":"Stuns up to 5 targets in a range of 90 for (Buff0-Time) seconds.","target":"self","range":9,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":570907,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500125,502719]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/570907.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-10","classId":"rom-warrior","group":"passive","unlockLevel":28,"sourceSkillId":490131,"name":"1-H Weapon Mastery","description":"Increases damage with one-handed swords, axes, or hammers by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570894,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620347],"components":[{"id":620347,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":58,"value":5},{"type":61,"value":5},{"type":62,"value":5}],"abilitySkillLevelArg":28,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490131,"name":"1-H Weapon Mastery","description":"Increases damage with one-handed swords, axes, or hammers by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570894,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620347]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/570894.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-11","classId":"rom-warrior","group":"passive","unlockLevel":30,"sourceSkillId":490137,"name":"2-H Weapon Mastery","description":"Increases damage with two-handed swords, axes, or hammers by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570909,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620348],"components":[{"id":620348,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":0,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":63,"value":5},{"type":65,"value":5},{"type":66,"value":5}],"abilitySkillLevelArg":26,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490137,"name":"2-H Weapon Mastery","description":"Increases damage with two-handed swords, axes, or hammers by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570909,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620348]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/570909.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-12","classId":"rom-warrior","group":"primary","unlockLevel":32,"sourceSkillId":490054,"name":"Terror","description":"Force an enemy to flee for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570912,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502011,507288],"components":[{"id":502011,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":4,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":17,"effectFlagWords":[131075,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507288,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":17,"effectFlagWords":[131075,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":490054,"name":"Terror","description":"Force an enemy to flee for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570912,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502011,507288]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/570912.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-13","classId":"rom-warrior","group":"primary","unlockLevel":34,"sourceSkillId":490123,"name":"Aggressiveness","description":"Enhances rage generation by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570918,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500107],"components":[{"id":500107,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":139,"value":20}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490123,"name":"Aggressiveness","description":"Enhances rage generation by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570918,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500107]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/570918.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-14","classId":"rom-warrior","group":"primary","unlockLevel":36,"sourceSkillId":490122,"name":"Survival Instinct","description":"Can only be used when HP is below 50%. Increases [SC_SKILLTIPS_DEF] by (Buff0-0)%, raises the chance of dodging by (Buff4-0)% and increases [SC_SKILLTIPS_PARRY] by (Buff8-0) points for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570916,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500106,506881,506882],"components":[{"id":500106,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":20}],"abilitySkillLevelArg":3.5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495582,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506881,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506882,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":150}],"abilitySkillLevelArg":12.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":490122,"name":"Survival Instinct","description":"Can only be used when HP is below 50%. Increases [SC_SKILLTIPS_DEF] by (Buff0-0)%, raises the chance of dodging by (Buff4-0)% and increases [SC_SKILLTIPS_PARRY] by (Buff8-0) points for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570916,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500106,506881,506882]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/570916.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-15","classId":"rom-warrior","group":"primary","unlockLevel":38,"sourceSkillId":490145,"name":"Group Taunt","description":"Forces multiple targets within a range of 50 to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-621221)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570920,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500134,621221],"components":[{"id":500134,"magicFunc":7,"magicType":5,"effectType":0,"effectTime":4,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621221,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":1}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":490145,"name":"Group Taunt","description":"Forces multiple targets within a range of 50 to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-621221)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570920,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500134,621221]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/570920.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-primary-16","classId":"rom-warrior","group":"primary","unlockLevel":40,"sourceSkillId":490147,"name":"Blasting Cyclone","description":"Causes (DMG0) main hand weapon DPS to multiple targets within range and causes Knockdown.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570924,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500136,500236],"components":[{"id":500136,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500236,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4179,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":490147,"name":"Blasting Cyclone","description":"Causes (DMG0) main hand weapon DPS to multiple targets within range and causes Knockdown.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570924,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500136,500236]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/570924.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-0","classId":"rom-warrior","group":"general","unlockLevel":1,"sourceSkillId":490053,"name":"Slash","description":"Inflicts (DMG0) main hand weapon DPS to the target with an additional chance to add Bleed effect. (Bleed effect only with equipped axe or sword.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570816,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500058,500081],"components":[{"id":500058,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500081,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490053,"name":"Slash","description":"Inflicts (DMG0) main hand weapon DPS to the target with an additional chance to add Bleed effect. (Bleed effect only with equipped axe or sword.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570816,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500058,500081]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/570816.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-1","classId":"rom-warrior","group":"general","unlockLevel":4,"sourceSkillId":490492,"name":"Enraged","description":"Immediately increase rage by (DMG0) points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":40000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573710,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500941],"components":[{"id":500941,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"clearFlags":9,"abilityModifiers":[{"type":134,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":20,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":20,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490492,"name":"Enraged","description":"Immediately increase rage by (DMG0) points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":40000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573710,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500941]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/573710.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-2","classId":"rom-warrior","group":"general","unlockLevel":8,"sourceSkillId":490133,"name":"Whirlwind","description":"Whirling in place you cause (DMG0) main hand weapon DPS to the targets within range.","target":"self","range":30,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570903,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500122],"components":[{"id":500122,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490133,"name":"Whirlwind","description":"Whirling in place you cause (DMG0) main hand weapon DPS to the targets within range.","target":"self","range":30,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570903,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500122]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/570903.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-3","classId":"rom-warrior","group":"general","unlockLevel":12,"sourceSkillId":490095,"name":"Berserk","description":"Increases [SC_SKILLTIPS_01] by (Buff0-1)% and decreases [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570892,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500096],"components":[{"id":500096,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":64,"abilityModifiers":[{"type":135,"value":-3},{"type":134,"value":3}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490095,"name":"Berserk","description":"Increases [SC_SKILLTIPS_01] by (Buff0-1)% and decreases [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570892,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500096]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/570892.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-4","classId":"rom-warrior","group":"passive","unlockLevel":1,"sourceSkillId":491132,"name":"Equip Axe","description":"Can equip 1-H axes.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":573102,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500993],"components":[{"id":500993,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":88,"value":1},{"type":0,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":491132,"name":"Equip Axe","description":"Can equip 1-H axes.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":573102,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500993]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/573102.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-5","classId":"rom-warrior","group":"general","unlockLevel":16,"sourceSkillId":498031,"name":"Defensive Formation","description":"For (Buff0-Time) seconds, increases [SC_SKILLTIPS_DEF] by (Buff0-0)%, and reduces [SC_SKILLTIPS_01] by (Buff0-1)% and [SC_SKILLTIPS_02] by (Buff0-2)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570910,"sourceEffectType":1,"sourceTarget":0,"componentIds":[620336],"components":[{"id":620336,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":64,"abilityModifiers":[{"type":135,"value":5},{"type":134,"value":-5},{"type":171,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":498031,"name":"Defensive Formation","description":"For (Buff0-Time) seconds, increases [SC_SKILLTIPS_DEF] by (Buff0-0)%, and reduces [SC_SKILLTIPS_01] by (Buff0-1)% and [SC_SKILLTIPS_02] by (Buff0-2)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570910,"sourceEffectType":1,"sourceTarget":0,"componentIds":[620336]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/570910.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-general-6","classId":"rom-warrior","group":"passive","unlockLevel":20,"sourceSkillId":490125,"name":"Brute Strength","description":"Permanently increases [SC_SKILLTIPS_STR] by (current [SC_SKILLTIPS_STR] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":3000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570818,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500109],"components":[{"id":500109,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":26,"abilityModifiers":[{"type":2,"value":11},{"type":161,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490125,"name":"Brute Strength","description":"Permanently increases [SC_SKILLTIPS_STR] by (current [SC_SKILLTIPS_STR] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":3000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570818,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500109]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/570818.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-0","classId":"rom-scout","group":"primary","unlockLevel":1,"sourceSkillId":490494,"name":"Arrow of Essence","description":"Enhances ranged weapon damage by (Buff0-0)% and raises attack speed by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572332,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500939],"components":[{"id":500939,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":52,"value":40},{"type":23,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-4,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490494,"name":"Arrow of Essence","description":"Enhances ranged weapon damage by (Buff0-0)% and raises attack speed by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572332,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500939]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/572332.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-1","classId":"rom-scout","group":"primary","unlockLevel":2,"sourceSkillId":491128,"name":"Wind Arrows","description":"Quick shot at the target, causing (DMG0) ranged weapon DPS.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575129,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501677,501529,501530,501565],"components":[{"id":501677,"magicFunc":0,"magicType":3,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[8192,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.35,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.35,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501529,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501530,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501565,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491128,"name":"Wind Arrows","description":"Quick shot at the target, causing (DMG0) ranged weapon DPS.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575129,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501677,501529,501530,501565]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/575129.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-2","classId":"rom-scout","group":"passive","unlockLevel":6,"sourceSkillId":490445,"name":"Ranged Weapon Mastery","description":"Bow and crossbow accuracy is increased by (Buff0-0)%, and damage is increased by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":3,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572307,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500904],"components":[{"id":500904,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":63,"abilityModifiers":[{"type":197,"value":8},{"type":53,"value":8},{"type":54,"value":8}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":490445,"name":"Ranged Weapon Mastery","description":"Bow and crossbow accuracy is increased by (Buff0-0)%, and damage is increased by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":3,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572307,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500904]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/572307.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-3","classId":"rom-scout","group":"primary","unlockLevel":12,"sourceSkillId":490441,"name":"Mana Drain Shot","description":"Inflicts (DMG0) ranged weapon DPS to the target and reduces its [SC_SKILLTIPS_MDMG] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572301,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500222,507226],"components":[{"id":500222,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":507226,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":164,"abilityModifiers":[{"type":192,"value":-1}],"abilitySkillLevelArg":19,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490441,"name":"Mana Drain Shot","description":"Inflicts (DMG0) ranged weapon DPS to the target and reduces its [SC_SKILLTIPS_MDMG] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572301,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500222,507226]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/572301.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-4","classId":"rom-scout","group":"primary","unlockLevel":14,"sourceSkillId":490454,"name":"Lasso","description":"Throw a lasso, rooting the enemy for (Buff0-Time) seconds. This effect will disappear if the target is further attacked. \n(For players this effect lasts for (Buff1-Time) seconds if not further attacked.)\n(Only one target at a time can be kept under control.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572314,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500924,502955],"components":[{"id":500924,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502955,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490454,"name":"Lasso","description":"Throw a lasso, rooting the enemy for (Buff0-Time) seconds. This effect will disappear if the target is further attacked. \n(For players this effect lasts for (Buff1-Time) seconds if not further attacked.)\n(Only one target at a time can be kept under control.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572314,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500924,502955]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/572314.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-5","classId":"rom-scout","group":"primary","unlockLevel":18,"sourceSkillId":490400,"name":"Piercing Arrow","description":"Fires a piercing arrow at the target and all enemies in a straight line behind the target for (DMG0) ranged weapon DPS + (FixDMG-500935) damage .","target":"hostile","range":4,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"dot","coefficient":0.2,"ticks":2,"intervalMs":2000},"source":{"imageId":572330,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500935],"components":[{"id":500935,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":8,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":3,"dotBase":-3,"dot":{"timeSeconds":1,"type":3,"base":-3,"skillLevelArg":5},"attackType":0,"damagePower":-0.7,"fixedValue":-20,"attack":{"type":0,"calculationType":3,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-20,"fixedType":0,"fixedDamageSkillLevelArg":15,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490400,"name":"Piercing Arrow","description":"Fires a piercing arrow at the target and all enemies in a straight line behind the target for (DMG0) ranged weapon DPS + (FixDMG-500935) damage .","target":"hostile","range":4,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"dot","coefficient":0.2,"ticks":2,"intervalMs":2000},"source":{"imageId":572330,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500935]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/572330.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-6","classId":"rom-scout","group":"passive","unlockLevel":20,"sourceSkillId":490425,"name":"Eagle Eyes","description":"Your chance to deal critical damage is permanently increased by (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572289,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500858],"components":[{"id":500858,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490425,"name":"Eagle Eyes","description":"Your chance to deal critical damage is permanently increased by (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572289,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500858]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/572289.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-7","classId":"rom-scout","group":"primary","unlockLevel":22,"sourceSkillId":490450,"name":"Snipe","description":"For Snipe, your range is increased by 60 and deals (DMG0) ranged weapon DPS plus (FixDMG-500909) damage. (Will be interrupted as soon as damage is taken.)","target":"hostile","range":6,"castTimeMs":3000,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":572310,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500909],"components":[{"id":500909,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-2.5,"fixedValue":-100,"attack":{"type":0,"calculationType":3,"damagePower":-2.5,"damagePowerSkillLevelArg":6,"fixedValue":-100,"fixedType":0,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490450,"name":"Snipe","description":"For Snipe, your range is increased by 60 and deals (DMG0) ranged weapon DPS plus (FixDMG-500909) damage. (Will be interrupted as soon as damage is taken.)","target":"hostile","range":6,"castTimeMs":3000,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":572310,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500909]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/572310.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-8","classId":"rom-scout","group":"primary","unlockLevel":26,"sourceSkillId":490463,"name":"Detection","description":"While the skill lasts the caster can detect nearby hidden enemies. (This skill costs 5 focus points every three seconds. Status disappears once focus reaches 0.)","target":"self","range":3,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":9,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572324,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500933],"components":[{"id":500933,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":62,"effectFlagWords":[1024,0],"clearFlags":256,"abilitySkillLevelArg":0,"dotTime":3,"dotType":3,"dotBase":-5,"dot":{"timeSeconds":3,"type":3,"base":-5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490463,"name":"Detection","description":"While the skill lasts the caster can detect nearby hidden enemies. (This skill costs 5 focus points every three seconds. Status disappears once focus reaches 0.)","target":"self","range":3,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":9,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572324,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500933]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/572324.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-9","classId":"rom-scout","group":"primary","unlockLevel":30,"sourceSkillId":490424,"name":"Combo Shot","description":"Fires triple shots at the target causing (DMG0) ranged weapon DPS. (Will be interrupted as soon as damage is taken.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":8000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572287,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500857],"components":[{"id":500857,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.45,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.45,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490424,"name":"Combo Shot","description":"Fires triple shots at the target causing (DMG0) ranged weapon DPS. (Will be interrupted as soon as damage is taken.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":8000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572287,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500857]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/572287.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-10","classId":"rom-scout","group":"primary","unlockLevel":34,"sourceSkillId":490438,"name":"Neck Strike","description":"Target is Stunned for (Buff0-Time) seconds. (Effect removed when attacked.)\n(For players this effect lasts for (Buff1-Time) seconds.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572298,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500877,503863,502719],"components":[{"id":500877,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":59,"effectFlagWords":[67,0],"clearFlags":2,"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503863,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":59,"effectFlagWords":[67,0],"clearFlags":2,"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490438,"name":"Neck Strike","description":"Target is Stunned for (Buff0-Time) seconds. (Effect removed when attacked.)\n(For players this effect lasts for (Buff1-Time) seconds.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572298,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500877,503863,502719]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/572298.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-11","classId":"rom-scout","group":"primary","unlockLevel":36,"sourceSkillId":490457,"name":"Reflected Shot","description":"Causes (DMG0) ranged weapon DPS. Shot will deflect 2 times to other targets within range. Damage decreases by half each time.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572316,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500927],"components":[{"id":500927,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":490457,"name":"Reflected Shot","description":"Causes (DMG0) ranged weapon DPS. Shot will deflect 2 times to other targets within range. Damage decreases by half each time.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572316,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500927]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/572316.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-12","classId":"rom-scout","group":"primary","unlockLevel":38,"sourceSkillId":490460,"name":"Concentration","description":"For (Buff0-Time) seconds, focus regeneration speed is increased by (Buff0-0)%.","target":"self","range":3,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572323,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500930],"components":[{"id":500930,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":24,"abilityModifiers":[{"type":140,"value":50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":490460,"name":"Concentration","description":"For (Buff0-Time) seconds, focus regeneration speed is increased by (Buff0-0)%.","target":"self","range":3,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572323,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500930]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/572323.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-13","classId":"rom-scout","group":"primary","unlockLevel":40,"sourceSkillId":490464,"name":"Target Area","description":"While the effect lasts, your accuracy is increased by (Buff4-0)% and the critical hit rate is increased by (Buff0-0). (This skill costs (Buff0-Dot) focus per second. Effect disappears once focus reaches 0.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572326,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500934,507339],"components":[{"id":500934,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":180,"hateCost":-10,"settingFlags":235,"specialActionFlags":0,"assistType":32,"clearFlags":256,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":39,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497740,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":3,"dotBase":-3,"dot":{"timeSeconds":1,"type":3,"base":-3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507339,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":180,"hateCost":-10,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"clearFlags":256,"abilityModifiers":[{"type":197,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":490464,"name":"Target Area","description":"While the effect lasts, your accuracy is increased by (Buff4-0)% and the critical hit rate is increased by (Buff0-0). (This skill costs (Buff0-Dot) focus per second. Effect disappears once focus reaches 0.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572326,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500934,507339]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/572326.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-55","classId":"rom-scout","group":"primary","unlockLevel":10,"sourceSkillId":491163,"name":"Frost Arrow","description":"For (Buff0-Time) seconds, all Wind Arrow shots will have a chance of adding Frost, slowing down target for 6 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572304,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501530],"components":[{"id":501530,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":491163,"name":"Frost Arrow","description":"For (Buff0-Time) seconds, all Wind Arrow shots will have a chance of adding Frost, slowing down target for 6 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572304,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501530]}}],"sourceFamily":"primary:55","icon":"/assets/ui/rom-spells/572304.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-56","classId":"rom-scout","group":"passive","unlockLevel":20,"sourceSkillId":491173,"name":"Cripple Joint","description":"Adds a 55% chance to your Joint Blow to Root the target for 5 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":491173,"name":"Cripple Joint","description":"Adds a 55% chance to your Joint Blow to Root the target for 5 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"sourceFamily":"primary:56","icon":"/assets/ui/rom-spells/572282.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-primary-57","classId":"rom-scout","group":"primary","unlockLevel":1,"sourceSkillId":492589,"name":"Autoshot","description":"Fires a shot at the target inflicting ranged weapon Damage. (Afterwards Autoshot modus will be active.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":573064,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501579],"components":[{"id":501579,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.8,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":492589,"name":"Autoshot","description":"Fires a shot at the target inflicting ranged weapon Damage. (Afterwards Autoshot modus will be active.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":573064,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501579]}}],"sourceFamily":"primary:57","icon":"/assets/ui/rom-spells/573064.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-0","classId":"rom-scout","group":"general","unlockLevel":1,"sourceSkillId":490423,"name":"Shot","description":"Fires one shot at the target causing (DMG0) ranged weapon DPS.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572285,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500856,501959,501955,503188,503187,620221,620178,620222,620179],"components":[{"id":500856,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501959,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":26,"abilityModifiers":[{"type":2,"value":10}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501955,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":20,"value":150}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0},{"id":503188,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503187,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":195,"value":50}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620221,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":26,"abilityModifiers":[{"type":2,"value":10}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620178,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":20,"value":20}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0},{"id":620222,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620179,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":195,"value":10}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490423,"name":"Shot","description":"Fires one shot at the target causing (DMG0) ranged weapon DPS.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572285,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500856,501959,501955,503188,503187,620221,620178,620222,620179]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/572285.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-1","classId":"rom-scout","group":"passive","unlockLevel":1,"sourceSkillId":490448,"name":"Bow Training","description":"Can equip bows and crossbows","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572308,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500907],"components":[{"id":500907,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":95,"value":1},{"type":96,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490448,"name":"Bow Training","description":"Can equip bows and crossbows","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572308,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500907]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/572308.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-2","classId":"rom-scout","group":"general","unlockLevel":4,"sourceSkillId":491292,"name":"Vampire Arrows","description":"Inflicts (DMG0) ranged weapon DPS and additionally consumes the target's (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575130,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501693,501690],"components":[{"id":501693,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.55,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.55,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501690,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":491292,"name":"Vampire Arrows","description":"Inflicts (DMG0) ranged weapon DPS and additionally consumes the target's (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575130,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501693,501690]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/575130.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-3","classId":"rom-scout","group":"general","unlockLevel":8,"sourceSkillId":490420,"name":"Joint Blow","description":"Causes (DMG0) points of physical damage and Slows the target by 40% for (Buff4-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":572282,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500845,500848,503862,501559,504258],"components":[{"id":500845,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-16.4,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-16.4,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":7,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500848,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503862,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501559,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504258,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490420,"name":"Joint Blow","description":"Causes (DMG0) points of physical damage and Slows the target by 40% for (Buff4-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":572282,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500845,500848,503862,501559,504258]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/572282.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-4","classId":"rom-scout","group":"general","unlockLevel":12,"sourceSkillId":490434,"name":"Blood Arrow","description":"For (Buff0-Time) seconds, your HP is reduced by (Buff0-Dot)% every second and the physical attack of your ranged weapons is increased by (Buff0-0)%. (Right-click the buff icon to stop the effect.)","target":"self","range":3,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572294,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500871],"components":[{"id":500871,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":65643,"specialActionFlags":0,"assistType":8,"clearFlags":1056,"abilityModifiers":[{"type":52,"value":10}],"abilitySkillLevelArg":9,"dotTime":1,"dotType":5,"dotBase":-3,"dot":{"timeSeconds":1,"type":5,"base":-3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":-5,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490434,"name":"Blood Arrow","description":"For (Buff0-Time) seconds, your HP is reduced by (Buff0-Dot)% every second and the physical attack of your ranged weapons is increased by (Buff0-0)%. (Right-click the buff icon to stop the effect.)","target":"self","range":3,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572294,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500871]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/572294.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-5","classId":"rom-scout","group":"general","unlockLevel":16,"sourceSkillId":490428,"name":"Throat Attack","description":"Causes (DMG0) physical damage and interrupts the target's spell casting. (The interrupted spell will enter a cooldown phase. If the interrupted spell has no cooldown, all spells will enter a cooldown time of 3 seconds.)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":572290,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500864,502703],"components":[{"id":500864,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-16.4,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-16.4,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502703,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490428,"name":"Throat Attack","description":"Causes (DMG0) physical damage and interrupts the target's spell casting. (The interrupted spell will enter a cooldown phase. If the interrupted spell has no cooldown, all spells will enter a cooldown time of 3 seconds.)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":572290,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500864,502703]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/572290.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-6","classId":"rom-scout","group":"general","unlockLevel":20,"sourceSkillId":490451,"name":"Wrist Attack","description":"Damage dealt by the target is decreased by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572312,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500921],"components":[{"id":500921,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":60,"effectFlagWords":[524288,0],"abilityModifiers":[{"type":173,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490451,"name":"Wrist Attack","description":"Damage dealt by the target is decreased by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572312,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500921]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/572312.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-7","classId":"rom-scout","group":"passive","unlockLevel":24,"sourceSkillId":491159,"name":"Swiftness","description":"Permanently increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570818,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501521],"components":[{"id":501521,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":30,"abilityModifiers":[{"type":6,"value":11},{"type":165,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":491159,"name":"Swiftness","description":"Permanently increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570818,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501521]}}],"sourceFamily":"general:7","icon":"/assets/ui/rom-spells/570818.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-general-8","classId":"rom-scout","group":"passive","unlockLevel":28,"sourceSkillId":490505,"name":"Speed Shooting Mastery","description":"The speed of bows and crossbows is increased by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572286,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500959],"components":[{"id":500959,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":69,"value":-11},{"type":70,"value":-11}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490505,"name":"Speed Shooting Mastery","description":"The speed of bows and crossbows is increased by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572286,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500959]}}],"sourceFamily":"general:8","icon":"/assets/ui/rom-spells/572286.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-0","classId":"rom-rogue","group":"primary","unlockLevel":1,"sourceSkillId":490506,"name":"Assassins Rage","description":"For (Buff0-Time) seconds, the chance to deal critical hits is raised by (Buff0-0), and during that time critical damage is enhanced as well.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573049,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500960],"components":[{"id":500960,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":1500},{"type":19,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490506,"name":"Assassins Rage","description":"For (Buff0-Time) seconds, the chance to deal critical hits is raised by (Buff0-0), and during that time critical damage is enhanced as well.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573049,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500960]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/573049.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-1","classId":"rom-rogue","group":"primary","unlockLevel":2,"sourceSkillId":490323,"name":"Low Blow","description":"Inflicts (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage, and if the target already suffers a Bleed effect, it can cause an additional Grievous Wound for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571981,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620312,620314],"components":[{"id":620312,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1,"damagePowerSkillLevelArg":7,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620314,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":53,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":490323,"name":"Low Blow","description":"Inflicts (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage, and if the target already suffers a Bleed effect, it can cause an additional Grievous Wound for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571981,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620312,620314]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/571981.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-2","classId":"rom-rogue","group":"primary","unlockLevel":6,"sourceSkillId":490313,"name":"Wound Attack","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. For each Bleeding or Grievous Wound caused by the Rogue skills (cast by you), Wound Attack can cause additional damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570831,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620278,620279,620280],"components":[{"id":620278,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.05,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.05,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620279,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":7,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620280,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":7,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":490313,"name":"Wound Attack","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. For each Bleeding or Grievous Wound caused by the Rogue skills (cast by you), Wound Attack can cause additional damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570831,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620278,620279,620280]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/570831.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-3","classId":"rom-rogue","group":"passive","unlockLevel":10,"sourceSkillId":490504,"name":"Dagger Mastery","description":"Increases dagger damage by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570915,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620334],"components":[{"id":620334,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":59,"value":10}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490504,"name":"Dagger Mastery","description":"Increases dagger damage by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570915,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620334]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/570915.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-4","classId":"rom-rogue","group":"primary","unlockLevel":14,"sourceSkillId":490311,"name":"Blind Spot","description":"Attacks target from behind, causing (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage and adds a bleeding that deals (Buff4-Dot) damage every 2 seconds for (Buff4-Time) seconds. (Must hold a dagger and be behind the target.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570827,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620282,620297],"components":[{"id":620282,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.5,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.5,"damagePowerSkillLevelArg":5,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620297,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490311,"name":"Blind Spot","description":"Attacks target from behind, causing (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage and adds a bleeding that deals (Buff4-Dot) damage every 2 seconds for (Buff4-Time) seconds. (Must hold a dagger and be behind the target.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570827,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620282,620297]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/570827.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-5","classId":"rom-rogue","group":"primary","unlockLevel":16,"sourceSkillId":490347,"name":"Numbing Dagger","description":"Throws a poisoned dagger that can numb the target for (Buff0-Time) seconds. Can only be used on Humanoids and living creatures. (Requires you to be Poisonous; consumes 1 projectile, the numbed target awakens when attacked; only one target at a time can be kept under control.)\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572005,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500737,503046],"components":[{"id":500737,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":50,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[33554515,0],"clearFlags":1026,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503046,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":50,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[33554515,0],"clearFlags":1026,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490347,"name":"Numbing Dagger","description":"Throws a poisoned dagger that can numb the target for (Buff0-Time) seconds. Can only be used on Humanoids and living creatures. (Requires you to be Poisonous; consumes 1 projectile, the numbed target awakens when attacked; only one target at a time can be kept under control.)\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572005,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500737,503046]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/572005.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-6","classId":"rom-rogue","group":"primary","unlockLevel":16,"sourceSkillId":490329,"name":"Poison","description":"For (Buff0-Time) seconds normal attacks have a 50% chance to add Poisoned effects and the target's damage is lowered by 2%. (Can be stacked four times, consumes 1 poison bottle.)","target":"self","range":0.1,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571984,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500715],"components":[{"id":500715,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":106,"onAttackTrigger":{"rate":50,"rank":0,"id":490357},"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490329,"name":"Poison","description":"For (Buff0-Time) seconds normal attacks have a 50% chance to add Poisoned effects and the target's damage is lowered by 2%. (Can be stacked four times, consumes 1 poison bottle.)","target":"self","range":0.1,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571984,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500715]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/571984.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-7","classId":"rom-rogue","group":"primary","unlockLevel":18,"sourceSkillId":490312,"name":"Hide","description":"You go into hiding to avoid discovery by the enemy. Your movement speed is reduced by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570829,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500675],"components":[{"id":500675,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":163,"specialActionFlags":0,"assistType":52,"effectFlagWords":[512,0],"clearFlags":11,"abilityModifiers":[{"type":24,"value":-50}],"abilitySkillLevelArg":-1.2,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":850537,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490312,"name":"Hide","description":"You go into hiding to avoid discovery by the enemy. Your movement speed is reduced by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570829,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500675]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/570829.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-8","classId":"rom-rogue","group":"primary","unlockLevel":18,"sourceSkillId":490507,"name":"Premeditation","description":"Makes your next attack a critical attack, and the power of the critical attack is increased by (Buff0-0)%. (Cannot be used in combat.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571991,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500961],"components":[{"id":500961,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,64],"clearFlags":28673,"abilityModifiers":[{"type":19,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490507,"name":"Premeditation","description":"Makes your next attack a critical attack, and the power of the critical attack is increased by (Buff0-0)%. (Cannot be used in combat.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571991,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500961]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/571991.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-9","classId":"rom-rogue","group":"primary","unlockLevel":22,"sourceSkillId":490337,"name":"Sneak Attack","description":"By attacking the target from behind, Sneak Attack causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage with an additional (Buff4-Time)-second Stun and (Buff8-Time)-second Bleed effect. (Cannot be used when already in combat. Can only be used when behind the target. Requires dagger to cause Bleed effect.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571989,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620284,500725,500726],"components":[{"id":620284,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500725,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777283,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"summonCreatureId":0},{"id":500726,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":35,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":5},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490337,"name":"Sneak Attack","description":"By attacking the target from behind, Sneak Attack causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage with an additional (Buff4-Time)-second Stun and (Buff8-Time)-second Bleed effect. (Cannot be used when already in combat. Can only be used when behind the target. Requires dagger to cause Bleed effect.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571989,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620284,500725,500726]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/571989.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-10","classId":"rom-rogue","group":"passive","unlockLevel":26,"sourceSkillId":490316,"name":"Treasure Hunter","description":"Increases your and your party's chances of finding items by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570833,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500679],"components":[{"id":500679,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":35,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490316,"name":"Treasure Hunter","description":"Increases your and your party's chances of finding items by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570833,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500679]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/570833.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-11","classId":"rom-rogue","group":"primary","unlockLevel":30,"sourceSkillId":490354,"name":"Vanish","description":"Vanish from sight for (Buff0-Time) seconds, removing all aggro and leaving combat.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":572014,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500745,501567],"components":[{"id":500745,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501567,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":16,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490354,"name":"Vanish","description":"Vanish from sight for (Buff0-Time) seconds, removing all aggro and leaving combat.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":572014,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500745,501567]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/572014.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-12","classId":"rom-rogue","group":"passive","unlockLevel":32,"sourceSkillId":490143,"name":"Off Hand Mastery","description":"Increase off hand damage by (Buff0-0)% and accuracy by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570915,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620335],"components":[{"id":620335,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":0,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":36,"value":4},{"type":37,"value":4}],"abilitySkillLevelArg":7,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":490143,"name":"Off Hand Mastery","description":"Increase off hand damage by (Buff0-0)% and accuracy by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570915,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620335]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/570915.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-13","classId":"rom-rogue","group":"primary","unlockLevel":34,"sourceSkillId":490341,"name":"Sprint","description":"Increases movement speed by (Buff0-0)% for 30 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":10,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571995,"sourceEffectType":1,"sourceTarget":4,"componentIds":[500729],"components":[{"id":500729,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":137,"clearFlags":512,"abilityModifiers":[{"type":24,"value":10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490341,"name":"Sprint","description":"Increases movement speed by (Buff0-0)% for 30 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":10,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571995,"sourceEffectType":1,"sourceTarget":4,"componentIds":[500729]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/571995.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-14","classId":"rom-rogue","group":"primary","unlockLevel":36,"sourceSkillId":490355,"name":"Evasion","description":"Increases dodge rate by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572016,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500744],"components":[{"id":500744,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":31,"abilityModifiers":[{"type":198,"value":10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":490355,"name":"Evasion","description":"Increases dodge rate by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572016,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500744]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/572016.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-15","classId":"rom-rogue","group":"primary","unlockLevel":38,"sourceSkillId":490338,"name":"Combo Throw","description":"Throws 2 hidden weapons in series, each of which causes (DMG0) damage, based on the DPS of the main hand weapon + (FixDMG0) x [SC_SKILLTIPS_THROWDMG] [SC_SKILLTIPS_DMG|physical damage].\n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571993,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502578,620283],"components":[{"id":502578,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-3,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":5.5,"fixedValue":-3,"fixedType":4,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620283,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-3,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":5.5,"fixedValue":-3,"fixedType":4,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":490338,"name":"Combo Throw","description":"Throws 2 hidden weapons in series, each of which causes (DMG0) damage, based on the DPS of the main hand weapon + (FixDMG0) x [SC_SKILLTIPS_THROWDMG] [SC_SKILLTIPS_DMG|physical damage].\n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571993,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502578,620283]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/571993.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-16","classId":"rom-rogue","group":"primary","unlockLevel":40,"sourceSkillId":490346,"name":"Shadow Prison","description":"Binds the enemy's shadow. The target cannot move or use skills for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572003,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500735,503861,502719],"components":[{"id":500735,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503861,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":490346,"name":"Shadow Prison","description":"Binds the enemy's shadow. The target cannot move or use skills for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572003,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500735,503861,502719]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/572003.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-17","classId":"rom-rogue","group":"primary","unlockLevel":42,"sourceSkillId":490350,"name":"Informer","description":"Increases party members' chance to deal critical hits by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572009,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620298],"components":[{"id":620298,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":42,"prerequisites":[],"sourceSkillId":490350,"name":"Informer","description":"Increases party members' chance to deal critical hits by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572009,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620298]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/572009.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-primary-18","classId":"rom-rogue","group":"primary","unlockLevel":44,"sourceSkillId":490333,"name":"Fervent Attack","description":"For (Buff0-Time) seconds, [SC_SKILLTIPS_DPS] is increased by (Buff0-0)% and [SC_SKILLTIPS_DEF] is decreased by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571987,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500719],"components":[{"id":500719,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":9,"abilityModifiers":[{"type":23,"value":-5},{"type":135,"value":-5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":44,"prerequisites":[],"sourceSkillId":490333,"name":"Fervent Attack","description":"For (Buff0-Time) seconds, [SC_SKILLTIPS_DPS] is increased by (Buff0-0)% and [SC_SKILLTIPS_DEF] is decreased by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571987,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500719]}}],"sourceFamily":"primary:18","icon":"/assets/ui/rom-spells/571987.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-0","classId":"rom-rogue","group":"general","unlockLevel":1,"sourceSkillId":490306,"name":"Shadowstab","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage with an additional Bleed effect. For (Buff4-Time) seconds Bleed causes (Buff4-Dot) damage every 2 seconds. (Extra effect is produced only if the main hand is wielding a dagger.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570822,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620277,620313],"components":[{"id":620277,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620313,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":45},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490306,"name":"Shadowstab","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage with an additional Bleed effect. For (Buff4-Time) seconds Bleed causes (Buff4-Dot) damage every 2 seconds. (Extra effect is produced only if the main hand is wielding a dagger.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570822,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620277,620313]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/570822.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-1","classId":"rom-rogue","group":"general","unlockLevel":4,"sourceSkillId":490309,"name":"Throw","description":"Throws a hidden weapon at the target, causing (DMG0) main hand weapon DPS plus (FixDMG0) x [SC_SKILLTIPS_THROWDMG] [SC_SKILLTIPS_DMG|physical damage].\n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570824,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502578,620283],"components":[{"id":502578,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-3,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":5.5,"fixedValue":-3,"fixedType":4,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620283,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-3,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":5.5,"fixedValue":-3,"fixedType":4,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490309,"name":"Throw","description":"Throws a hidden weapon at the target, causing (DMG0) main hand weapon DPS plus (FixDMG0) x [SC_SKILLTIPS_THROWDMG] [SC_SKILLTIPS_DMG|physical damage].\n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570824,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502578,620283]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/570824.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-2","classId":"rom-rogue","group":"general","unlockLevel":8,"sourceSkillId":490317,"name":"Blind Stab","description":"Inflicts (DMG0) damage, based on the DPS of the main hand weapon, + (FixDMG0) x Dexterity [SC_SKILLTIPS_DMG|physical damage] with an additional Blind effect for (Buff4-Time) seconds. (Must be in front of the target to use skill.) \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571977,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620281,500691,503835],"components":[{"id":620281,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500691,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"effectFlagWords":[32,0],"abilityModifiers":[{"type":197,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503835,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"effectFlagWords":[32,0],"abilityModifiers":[{"type":197,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490317,"name":"Blind Stab","description":"Inflicts (DMG0) damage, based on the DPS of the main hand weapon, + (FixDMG0) x Dexterity [SC_SKILLTIPS_DMG|physical damage] with an additional Blind effect for (Buff4-Time) seconds. (Must be in front of the target to use skill.) \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":571977,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620281,500691,503835]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/571977.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-3","classId":"rom-rogue","group":"passive","unlockLevel":12,"sourceSkillId":490310,"name":"Projectile Training","description":"Can equip projectiles.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570826,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500658],"components":[{"id":500658,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":98,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490310,"name":"Projectile Training","description":"Can equip projectiles.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570826,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500658]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/570826.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-4","classId":"rom-rogue","group":"passive","unlockLevel":16,"sourceSkillId":490146,"name":"Off Hand Training","description":"1-H weapons can be held in off hand.\n(Class-related limitations still apply.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570914,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500135],"components":[{"id":500135,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":106,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490146,"name":"Off Hand Training","description":"1-H weapons can be held in off hand.\n(Class-related limitations still apply.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570914,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500135]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/570914.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-5","classId":"rom-rogue","group":"passive","unlockLevel":20,"sourceSkillId":490326,"name":"Agility","description":"Permanently increases dodge rate by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":571983,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500707],"components":[{"id":500707,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":2}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490326,"name":"Agility","description":"Permanently increases dodge rate by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":571983,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500707]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/571983.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-6","classId":"rom-rogue","group":"passive","unlockLevel":24,"sourceSkillId":490332,"name":"Nimble Hands","description":"Increases attack speed by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":571986,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500718],"components":[{"id":500718,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-2}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":490332,"name":"Nimble Hands","description":"Increases attack speed by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":571986,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500718]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/571986.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-general-7","classId":"rom-rogue","group":"general","unlockLevel":28,"sourceSkillId":490344,"name":"Shadow Step","description":"Instantly move behind the target.","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571999,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500733,621406,621482],"components":[{"id":500733,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621406,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10},{"type":50,"value":10}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621482,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":19,"value":1},{"type":23,"value":-10}],"abilitySkillLevelArg":45,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490344,"name":"Shadow Step","description":"Instantly move behind the target.","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":571999,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500733,621406,621482]}}],"sourceFamily":"general:7","icon":"/assets/ui/rom-spells/571999.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-0","classId":"rom-mage","group":"primary","unlockLevel":1,"sourceSkillId":490238,"name":"Elemental Catalysis","description":"For (Buff0-Time) seconds magical damage is enhanced by (Buff0-0)% and every 2 seconds (Buff0-Dot)% Mana is regained.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572036,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500339],"components":[{"id":500339,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":20}],"abilitySkillLevelArg":0,"dotTime":2,"dotType":6,"dotBase":2,"dot":{"timeSeconds":2,"type":6,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490238,"name":"Elemental Catalysis","description":"For (Buff0-Time) seconds magical damage is enhanced by (Buff0-0)% and every 2 seconds (Buff0-Dot)% Mana is regained.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572036,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500339]}},{"rank":2,"level":65,"prerequisites":[490238],"sourceSkillId":497971,"name":"Elemental Catalysis","description":"Increases magical damage by (Buff0-0)% and spellcasting speed by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572036,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620176],"components":[{"id":620176,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":20},{"type":51,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":6,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/572036.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-1","classId":"rom-mage","group":"primary","unlockLevel":1,"sourceSkillId":491150,"name":"Flame","description":"Launches a searing fireball, which deals (DMG0) points of Fire damage.","target":"hostile","range":22.5,"castTimeMs":3000,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":574090,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501531,500379],"components":[{"id":501531,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500379,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-27.1,"fixedValue":-0.01,"attack":{"type":0,"calculationType":1,"damagePower":-27.1,"damagePowerSkillLevelArg":18.3,"fixedValue":-0.01,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":491150,"name":"Flame","description":"Launches a searing fireball, which deals (DMG0) points of Fire damage.","target":"hostile","range":22.5,"castTimeMs":3000,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":574090,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501531,500379]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/574090.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-2","classId":"rom-mage","group":"primary","unlockLevel":2,"sourceSkillId":491156,"name":"Electrostatic Charge","description":"Absorbs as much damage as (Buff0-Shield)% of your maximum HP for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":75,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":572033,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620209],"components":[{"id":620209,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":490363,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":2,"skillLevelArg":28}}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491156,"name":"Electrostatic Charge","description":"Absorbs as much damage as (Buff0-Shield)% of your maximum HP for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":75,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":572033,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620209]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/572033.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-3","classId":"rom-mage","group":"passive","unlockLevel":8,"sourceSkillId":490221,"name":"Eruption","description":"Fireball and Flame have a chance of exploding and causing Fire damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572027,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490221,"name":"Eruption","description":"Fireball and Flame have a chance of exploding and causing Fire damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572027,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/572027.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-4","classId":"rom-mage","group":"primary","unlockLevel":10,"sourceSkillId":490242,"name":"Discharge","description":"Inflicts (DMG0) + (FixDMG-620208) x INT [SC_SKILLTIPS_WIND] to targets within range and a Stun for (Buff-Time-502717) seconds.\n(For players this effect lasts for (Buff-Time-503850) seconds.)\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.55},"source":{"imageId":572040,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620208,502717,503850,623146],"components":[{"id":620208,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-55,"damagePowerSkillLevelArg":25,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502717,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[150995027,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503850,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[150995027,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623146,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490242,"name":"Discharge","description":"Inflicts (DMG0) + (FixDMG-620208) x INT [SC_SKILLTIPS_WIND] to targets within range and a Stun for (Buff-Time-502717) seconds.\n(For players this effect lasts for (Buff-Time-503850) seconds.)\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.55},"source":{"imageId":572040,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620208,502717,503850,623146]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/572040.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-5","classId":"rom-mage","group":"primary","unlockLevel":14,"sourceSkillId":490252,"name":"Meteor Shower","description":"Conjures a meteor shower which causes 5 hits with (DMG0) + (FixDMG-620204) x INT [SC_SKILLTIPS_NONE].","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572054,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620204,501549],"components":[{"id":620204,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":17,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":3,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501549,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":51,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490252,"name":"Meteor Shower","description":"Conjures a meteor shower which causes 5 hits with (DMG0) + (FixDMG-620204) x INT [SC_SKILLTIPS_NONE].","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572054,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620204,501549]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/572054.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-6","classId":"rom-mage","group":"primary","unlockLevel":18,"sourceSkillId":490239,"name":"Phoenix","description":"Summon a phoenix that causes (DMG0) + (FixDMG-620201) x INT [SC_SKILLTIPS_FLAME] to targets in its path. Effective up to a range of 120.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.55},"source":{"imageId":572038,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620201,623146],"components":[{"id":620201,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-55,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623146,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490239,"name":"Phoenix","description":"Summon a phoenix that causes (DMG0) + (FixDMG-620201) x INT [SC_SKILLTIPS_FLAME] to targets in its path. Effective up to a range of 120.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.55},"source":{"imageId":572038,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620201,623146]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/572038.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-7","classId":"rom-mage","group":"passive","unlockLevel":22,"sourceSkillId":490216,"name":"Fire Knowledge","description":"Increases resistance to Fire by (Buff0-0) points and increases magical Fire damage by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572021,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500289],"components":[{"id":500289,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":29,"value":2},{"type":47,"value":5}],"abilitySkillLevelArg":23.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490216,"name":"Fire Knowledge","description":"Increases resistance to Fire by (Buff0-0) points and increases magical Fire damage by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572021,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500289]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/572021.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-8","classId":"rom-mage","group":"primary","unlockLevel":26,"sourceSkillId":491153,"name":"Purgatory Fire","description":"Summons purgatory fire, causing (DMG0) + (FixDMG-620203) x INT [SC_SKILLTIPS_FLAME] to targets within a range of 50.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":574094,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620203],"components":[{"id":620203,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-45,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-45,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":491153,"name":"Purgatory Fire","description":"Summons purgatory fire, causing (DMG0) + (FixDMG-620203) x INT [SC_SKILLTIPS_FLAME] to targets within a range of 50.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":574094,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620203]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/574094.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-9","classId":"rom-mage","group":"primary","unlockLevel":28,"sourceSkillId":490218,"name":"Energy Influx","description":"The chance to inflict critical damage with magic attacks is increased by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572025,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500296],"components":[{"id":500296,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":177,"abilityModifiers":[{"type":20,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490218,"name":"Energy Influx","description":"The chance to inflict critical damage with magic attacks is increased by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572025,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500296]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/572025.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-10","classId":"rom-mage","group":"primary","unlockLevel":30,"sourceSkillId":490251,"name":"Energy Well","description":"Mana costs for all skills are reduced by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572052,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500369],"components":[{"id":500369,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":50,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":49,"abilityModifiers":[{"type":33,"value":10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490251,"name":"Energy Well","description":"Mana costs for all skills are reduced by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572052,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500369]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/572052.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-11","classId":"rom-mage","group":"primary","unlockLevel":32,"sourceSkillId":490247,"name":"Elemental Weakness","description":"Decrease all the target's resistances by (Buff0-0) points for (Buff0-Time) seconds.","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572044,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500365],"components":[{"id":500365,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":8,"abilityModifiers":[{"type":26,"value":-30}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":490247,"name":"Elemental Weakness","description":"Decrease all the target's resistances by (Buff0-0) points for (Buff0-Time) seconds.","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572044,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500365]}},{"rank":2,"level":65,"prerequisites":[490247],"sourceSkillId":497977,"name":"Elemental Weakness","description":"Reduces the target's [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572044,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620189],"components":[{"id":620189,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":8,"abilityModifiers":[{"type":170,"value":-1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/572044.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-12","classId":"rom-mage","group":"primary","unlockLevel":34,"sourceSkillId":490244,"name":"Thunderstorm","description":"Summon a thunderstorm that inflicts (DMG0) + (FixDMG-620202) x INT [SC_SKILLTIPS_WIND] to targets 3 times within range with a chance of causing an additional Slowdown in movement and attacks for (Buff4-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572042,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620202,500557],"components":[{"id":620202,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500557,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":23,"value":20},{"type":24,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490244,"name":"Thunderstorm","description":"Summon a thunderstorm that inflicts (DMG0) + (FixDMG-620202) x INT [SC_SKILLTIPS_WIND] to targets 3 times within range with a chance of causing an additional Slowdown in movement and attacks for (Buff4-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572042,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620202,500557]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/572042.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-52","classId":"rom-mage","group":"primary","unlockLevel":2,"sourceSkillId":491169,"name":"Plasma Arrow","description":"Causes (DMG0) + (FixDMG-620206) x INT [SC_SKILLTIPS_WIND] and puts you in Charged state which in turn temporarily increases your critical magical hit rate by (Buff4-0).","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":576088,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620206,502270],"components":[{"id":620206,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-45,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-45,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502270,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":96,"abilityModifiers":[{"type":20,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":491169,"name":"Plasma Arrow","description":"Causes (DMG0) + (FixDMG-620206) x INT [SC_SKILLTIPS_WIND] and puts you in Charged state which in turn temporarily increases your critical magical hit rate by (Buff4-0).","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":576088,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620206,502270]}}],"sourceFamily":"primary:52","icon":"/assets/ui/rom-spells/576088.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-53","classId":"rom-mage","group":"primary","unlockLevel":10,"sourceSkillId":491168,"name":"Electric Bolt","description":"Inflicts (DMG0) + (FixDMG-620205) x INT [SC_SKILLTIPS_WIND], and afterwards (Buff4-Dot) every 2 seconds for a total of (Buff4-Time) seconds.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":576087,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620205,501550],"components":[{"id":620205,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":25,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501550,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":491168,"name":"Electric Bolt","description":"Inflicts (DMG0) + (FixDMG-620205) x INT [SC_SKILLTIPS_WIND], and afterwards (Buff4-Dot) every 2 seconds for a total of (Buff4-Time) seconds.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":576087,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620205,501550]}}],"sourceFamily":"primary:53","icon":"/assets/ui/rom-spells/576087.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-54","classId":"rom-mage","group":"primary","unlockLevel":16,"sourceSkillId":491170,"name":"Electric Explosion","description":"Causes (DMG1) + (FixDMG-620232) x INT [SC_SKILLTIPS_WIND] to the target.\n\nWhen used in Charged state, it will deal (DMG0) + (FixDMG-620207) x INT [SC_SKILLTIPS_WIND] to the target.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":576089,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620207,502270,621505,620232],"components":[{"id":620207,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":30,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502270,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":96,"abilityModifiers":[{"type":20,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"summonCreatureId":0},{"id":621505,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":18,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":96,"abilityModifiers":[{"type":20,"value":20},{"type":48,"value":1}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"summonCreatureId":0},{"id":620232,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-35,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-35,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":491170,"name":"Electric Explosion","description":"Causes (DMG1) + (FixDMG-620232) x INT [SC_SKILLTIPS_WIND] to the target.\n\nWhen used in Charged state, it will deal (DMG0) + (FixDMG-620207) x INT [SC_SKILLTIPS_WIND] to the target.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":576089,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620207,502270,621505,620232]}}],"sourceFamily":"primary:54","icon":"/assets/ui/rom-spells/576089.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-55","classId":"rom-mage","group":"primary","unlockLevel":20,"sourceSkillId":491171,"name":"Electric Compression","description":"When used in Charged state, the power of thunder and lightning is stored deep within you and allows for the use of Static Field.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576203,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501554,502243],"components":[{"id":501554,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":35,"specialActionFlags":0,"assistType":13,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502243,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":96,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":491171,"name":"Electric Compression","description":"When used in Charged state, the power of thunder and lightning is stored deep within you and allows for the use of Static Field.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576203,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501554,502243]}}],"sourceFamily":"primary:55","icon":"/assets/ui/rom-spells/576203.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-56","classId":"rom-mage","group":"primary","unlockLevel":20,"sourceSkillId":491172,"name":"Static Field","description":"Static Field Charge is needed. You use the power of thunder and lightning of your Electric Compression to attack your target, making it unable to move or attack for (Buff0-Time) seconds. (Effect will be removed if attacked; only one target at a time can be kept under control.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576090,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501555,503838],"components":[{"id":501555,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[134217811,0],"clearFlags":2,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503838,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[134217811,0],"clearFlags":2,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":491172,"name":"Static Field","description":"Static Field Charge is needed. You use the power of thunder and lightning of your Electric Compression to attack your target, making it unable to move or attack for (Buff0-Time) seconds. (Effect will be removed if attacked; only one target at a time can be kept under control.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576090,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501555,503838]}}],"sourceFamily":"primary:56","icon":"/assets/ui/rom-spells/576090.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-primary-57","classId":"rom-mage","group":"passive","unlockLevel":22,"sourceSkillId":490217,"name":"Wind Knowledge","description":"Increases resistance to Wind by (Buff0-0) and increases [SC_SKILLTIPS_WIND] by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572024,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500295],"components":[{"id":500295,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":30,"value":2},{"type":48,"value":5}],"abilitySkillLevelArg":23.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490217,"name":"Wind Knowledge","description":"Increases resistance to Wind by (Buff0-0) and increases [SC_SKILLTIPS_WIND] by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572024,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500295]}}],"sourceFamily":"primary:57","icon":"/assets/ui/rom-spells/572024.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-0","classId":"rom-mage","group":"general","unlockLevel":4,"sourceSkillId":490204,"name":"Fireball","description":"Casts a fireball, causing (DMG0) + (FixDMG-620199) x INT [SC_SKILLTIPS_FLAME].","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":572019,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620199,500379,623146],"components":[{"id":620199,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":40,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500379,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-27.1,"fixedValue":-0.01,"attack":{"type":0,"calculationType":1,"damagePower":-27.1,"damagePowerSkillLevelArg":18.3,"fixedValue":-0.01,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623146,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490204,"name":"Fireball","description":"Casts a fireball, causing (DMG0) + (FixDMG-620199) x INT [SC_SKILLTIPS_FLAME].","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":572019,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620199,500379,623146]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/572019.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-1","classId":"rom-mage","group":"general","unlockLevel":8,"sourceSkillId":490212,"name":"Lightning","description":"A lightning strike inflicts (DMG0) + (FixDMG-620200) x INT [SC_SKILLTIPS_WIND], rooting the target for (Buff4-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.358},"source":{"imageId":572022,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620200,501535,503837,623146],"components":[{"id":620200,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-35.82,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-35.82,"damagePowerSkillLevelArg":19.4,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501535,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-59.7,"fixedValue":0,"summonCreatureId":0},{"id":503837,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-59.7,"fixedValue":0,"summonCreatureId":0},{"id":623146,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490212,"name":"Lightning","description":"A lightning strike inflicts (DMG0) + (FixDMG-620200) x INT [SC_SKILLTIPS_WIND], rooting the target for (Buff4-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.358},"source":{"imageId":572022,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620200,501535,503837,623146]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/572022.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-2","classId":"rom-mage","group":"passive","unlockLevel":12,"sourceSkillId":490222,"name":"Wisdom","description":"Increases [SC_SKILLTIPS_INT] by (current [SC_SKILLTIPS_INT] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572028,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500305],"components":[{"id":500305,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":4,"value":11},{"type":163,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490222,"name":"Wisdom","description":"Increases [SC_SKILLTIPS_INT] by (current [SC_SKILLTIPS_INT] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572028,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500305]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/572028.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-3","classId":"rom-mage","group":"general","unlockLevel":16,"sourceSkillId":490225,"name":"Intensification","description":"[SC_SKILLTIPS_MDMG] increases by (Buff0-0) points. Effect lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572031,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500308],"components":[{"id":500308,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":148,"value":50}],"abilitySkillLevelArg":19,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490225,"name":"Intensification","description":"[SC_SKILLTIPS_MDMG] increases by (Buff0-0) points. Effect lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572031,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500308]}},{"rank":2,"level":45,"prerequisites":[490225],"sourceSkillId":497976,"name":"Intensification","description":"For (Buff0-Time) seconds, [SC_SKILLTIPS_MDMG] is increased by (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572031,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620177],"components":[{"id":620177,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":148,"value":100}],"abilitySkillLevelArg":45,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/572031.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-4","classId":"rom-mage","group":"general","unlockLevel":20,"sourceSkillId":490296,"name":"Silence","description":"Silences the target for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":24000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572213,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500529,504256,502719],"components":[{"id":500529,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":22,"effectFlagWords":[1,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504256,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":22,"effectFlagWords":[1,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490296,"name":"Silence","description":"Silences the target for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":24000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":572213,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500529,504256,502719]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/572213.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-general-5","classId":"rom-mage","group":"general","unlockLevel":24,"sourceSkillId":490248,"name":"Fire Ward","description":"Increase the party's Fire resistance by (Buff0-0) points for 10 minutes.","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572048,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500366],"components":[{"id":500366,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":29,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":490248,"name":"Fire Ward","description":"Increase the party's Fire resistance by (Buff0-0) points for 10 minutes.","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572048,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500366]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/572048.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-0","classId":"rom-priest","group":"primary","unlockLevel":1,"sourceSkillId":490288,"name":"Soul Source","description":"The HP of all teammates within a range of 90 is fully restored. Does not consume any MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":1.33},"source":{"imageId":572204,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500516],"components":[{"id":500516,"magicFunc":0,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":8,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":133,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":133,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":10,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490288,"name":"Soul Source","description":"The HP of all teammates within a range of 90 is fully restored. Does not consume any MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":1.33},"source":{"imageId":572204,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500516]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/572204.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-1","classId":"rom-priest","group":"primary","unlockLevel":2,"sourceSkillId":490273,"name":"Wave Armor","description":"Casts a shield of holy spring water that absorbs up to (Buff0-Shield) points of damage. Also reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%. Effect lasts for (Buff0-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":572194,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500478],"components":[{"id":500478,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":143,"value":1},{"type":142,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":2,"effect":0,"point":50,"skillLevelArg":45}}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":490273,"name":"Wave Armor","description":"Casts a shield of holy spring water that absorbs up to (Buff0-Shield) points of damage. Also reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%. Effect lasts for (Buff0-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":572194,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500478]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/572194.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-2","classId":"rom-priest","group":"primary","unlockLevel":6,"sourceSkillId":490261,"name":"Heal","description":"Restores (DMG0) points of target's HP.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.9},"source":{"imageId":572063,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500395],"components":[{"id":500395,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":90,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":90,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":490261,"name":"Heal","description":"Restores (DMG0) points of target's HP.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.9},"source":{"imageId":572063,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500395]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/572063.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-3","classId":"rom-priest","group":"primary","unlockLevel":8,"sourceSkillId":490274,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500485,503858],"components":[{"id":500485,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503858,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490274,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500485,503858]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/572196.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-4","classId":"rom-priest","group":"primary","unlockLevel":8,"sourceSkillId":491165,"name":"Bone Chill","description":"For (Buff0-Time) seconds, Bone Chill will cause (Buff0-Dot) points of damage every 2 seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575160,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501548],"components":[{"id":501548,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":491165,"name":"Bone Chill","description":"For (Buff0-Time) seconds, Bone Chill will cause (Buff0-Dot) points of damage every 2 seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575160,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501548]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/575160.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-5","classId":"rom-priest","group":"primary","unlockLevel":10,"sourceSkillId":490280,"name":"Resurrection","description":"Revives a dead target which accumulates 30% less death debt.\n(Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[500497],"components":[{"id":500497,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":30},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490280,"name":"Resurrection","description":"Revives a dead target which accumulates 30% less death debt.\n(Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[500497]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/572199.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-6","classId":"rom-priest","group":"primary","unlockLevel":10,"sourceSkillId":490297,"name":"Soul Bond","description":"For (Buff0-Time) seconds, the target can revive once in the same place.","target":"friendly","range":22.5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":400,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572211,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500535],"components":[{"id":500535,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":16,"effectFlagWords":[4194304,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490297,"name":"Soul Bond","description":"For (Buff0-Time) seconds, the target can revive once in the same place.","target":"friendly","range":22.5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":400,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572211,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500535]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/572211.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-7","classId":"rom-priest","group":"primary","unlockLevel":14,"sourceSkillId":490290,"name":"Grace of Life","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572226,"sourceEffectType":0,"sourceTarget":7,"componentIds":[500517,507217],"components":[{"id":500517,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":18,"abilityModifiers":[{"type":8,"value":50}],"abilitySkillLevelArg":26,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495931,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507217,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490290,"name":"Grace of Life","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572226,"sourceEffectType":0,"sourceTarget":7,"componentIds":[500517,507217]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/572226.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-8","classId":"rom-priest","group":"primary","unlockLevel":14,"sourceSkillId":490281,"name":"Group Heal","description":"Restores (DMG0) HP to all party members within range of 120. You will enter a state of Exhaustion, increasing the mana requirement for group healing skills.","target":"self","range":0.1,"castTimeMs":3000,"cooldownMs":0,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.65},"source":{"imageId":572200,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500498,620407],"components":[{"id":500498,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":65,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":65,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":3},"summonCreatureId":0},{"id":620407,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":50364418,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490281,"name":"Group Heal","description":"Restores (DMG0) HP to all party members within range of 120. You will enter a state of Exhaustion, increasing the mana requirement for group healing skills.","target":"self","range":0.1,"castTimeMs":3000,"cooldownMs":0,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.65},"source":{"imageId":572200,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500498,620407]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/572200.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-9","classId":"rom-priest","group":"primary","unlockLevel":18,"sourceSkillId":491164,"name":"Chain of Light","description":"Continuously deals (DMG0) Light damage to the target.","target":"hostile","range":21.700000000000003,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575128,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620409],"components":[{"id":620409,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":9,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":491164,"name":"Chain of Light","description":"Continuously deals (DMG0) Light damage to the target.","target":"hostile","range":21.700000000000003,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575128,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620409]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/575128.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-10","classId":"rom-priest","group":"primary","unlockLevel":20,"sourceSkillId":490491,"name":"Amplified Attack","description":"Increases [SC_SKILLTIPS_01] by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.\n(This effect does not stack with similar effects.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":36,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573733,"sourceEffectType":0,"sourceTarget":7,"componentIds":[500940,507218],"components":[{"id":500940,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":42,"abilityModifiers":[{"type":12,"value":50}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495930,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":-10,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490491,"name":"Amplified Attack","description":"Increases [SC_SKILLTIPS_01] by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.\n(This effect does not stack with similar effects.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":36,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573733,"sourceEffectType":0,"sourceTarget":7,"componentIds":[500940,507218]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/573733.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-11","classId":"rom-priest","group":"passive","unlockLevel":22,"sourceSkillId":490305,"name":"Prayer","description":"Increases Water Resistance by (Buff0-0) points and magical Water Damage by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572066,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500559],"components":[{"id":500559,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":28,"value":2},{"type":46,"value":5}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490305,"name":"Prayer","description":"Increases Water Resistance by (Buff0-0) points and magical Water Damage by (Buff0-1)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572066,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500559]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/572066.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-12","classId":"rom-priest","group":"passive","unlockLevel":24,"sourceSkillId":490295,"name":"Faith","description":"Effectiveness of Heal effects increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572211,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500528],"components":[{"id":500528,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":5}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":490295,"name":"Faith","description":"Effectiveness of Heal effects increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":572211,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500528]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/572211.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-13","classId":"rom-priest","group":"primary","unlockLevel":26,"sourceSkillId":490275,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500486,503859],"components":[{"id":500486,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503859,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490275,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500486,503859]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/572196.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-14","classId":"rom-priest","group":"primary","unlockLevel":28,"sourceSkillId":490294,"name":"Healing Salve","description":"The effectiveness of heals received by the target increases by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572208,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500527],"components":[{"id":500527,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":174,"abilityModifiers":[{"type":144,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490294,"name":"Healing Salve","description":"The effectiveness of heals received by the target increases by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572208,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500527]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/572208.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-15","classId":"rom-priest","group":"primary","unlockLevel":30,"sourceSkillId":490301,"name":"Blessing of Humility","description":"For (Buff0-Time) seconds, you temporarily become the one with the least aggro.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":99,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572219,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500546],"components":[{"id":500546,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1073741824,0],"abilityModifiers":[{"type":138,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490301,"name":"Blessing of Humility","description":"For (Buff0-Time) seconds, you temporarily become the one with the least aggro.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":99,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572219,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500546]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/572219.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-16","classId":"rom-priest","group":"primary","unlockLevel":32,"sourceSkillId":490276,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500487,503860],"components":[{"id":500487,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503860,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":490276,"name":"Ice Fog","description":"Casts a cloud of icy fog around the target, causing (Buff0-Time) seconds of Slow effect.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572196,"sourceEffectType":0,"sourceTarget":6,"componentIds":[500487,503860]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/572196.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-17","classId":"rom-priest","group":"primary","unlockLevel":34,"sourceSkillId":490304,"name":"Holy Candle","description":"Consumes (Buff0-Dot)% HP per second and increases effectiveness of heals by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572224,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500549],"components":[{"id":500549,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":65643,"specialActionFlags":0,"assistType":174,"clearFlags":1024,"abilityModifiers":[{"type":149,"value":5}],"abilitySkillLevelArg":10,"dotTime":1,"dotType":5,"dotBase":-6,"dot":{"timeSeconds":1,"type":5,"base":-6,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":490304,"name":"Holy Candle","description":"Consumes (Buff0-Dot)% HP per second and increases effectiveness of heals by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572224,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500549]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/572224.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-58","classId":"rom-priest","group":"primary","unlockLevel":18,"sourceSkillId":491175,"name":"Cleanse","description":"Removes harmful effects from target.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573063,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501566],"components":[{"id":501566,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":491175,"name":"Cleanse","description":"Removes harmful effects from target.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573063,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501566]}}],"sourceFamily":"primary:58","icon":"/assets/ui/rom-spells/573063.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-65","classId":"rom-priest","group":"primary","unlockLevel":20,"sourceSkillId":491176,"name":"Advanced Resurrection","description":"Revives a dead target which accumulates 45% less death debt. An [203606] is needed. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[501561],"components":[{"id":501561,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":45},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":491176,"name":"Advanced Resurrection","description":"Revives a dead target which accumulates 45% less death debt. An [203606] is needed. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[501561]}}],"sourceFamily":"primary:65","icon":"/assets/ui/rom-spells/572199.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-primary-66","classId":"rom-priest","group":"primary","unlockLevel":30,"sourceSkillId":491177,"name":"Supreme Resurrection","description":"Revives a dead target which accumulates 75% less death debt. A [203605] is needed. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[501562],"components":[{"id":501562,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":75},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":491177,"name":"Supreme Resurrection","description":"Revives a dead target which accumulates 75% less death debt. A [203605] is needed. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":572199,"sourceEffectType":0,"sourceTarget":15,"componentIds":[501562]}}],"sourceFamily":"primary:66","icon":"/assets/ui/rom-spells/572199.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-0","classId":"rom-priest","group":"general","unlockLevel":1,"sourceSkillId":491147,"name":"Urgent Heal","description":"Quickcast that restores (DMG0) points of target's HP.","target":"friendly","range":25,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.35},"source":{"imageId":573047,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501543,621391],"components":[{"id":501543,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":35,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":35,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":621391,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":491147,"name":"Urgent Heal","description":"Quickcast that restores (DMG0) points of target's HP.","target":"friendly","range":25,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.35},"source":{"imageId":573047,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501543,621391]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/573047.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-1","classId":"rom-priest","group":"general","unlockLevel":1,"sourceSkillId":490256,"name":"Rising Tide","description":"Summons a torrent that deals (DMG0) Water damage to a target.","target":"hostile","range":21.700000000000003,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":12,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572061,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620408],"components":[{"id":620408,"magicFunc":0,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":28,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490256,"name":"Rising Tide","description":"Summons a torrent that deals (DMG0) Water damage to a target.","target":"hostile","range":21.700000000000003,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":12,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":572061,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620408]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/572061.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-2","classId":"rom-priest","group":"general","unlockLevel":4,"sourceSkillId":490269,"name":"Regenerate","description":"Recover (Buff2-Dot) of target's HP every 2 seconds for (Buff2-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572067,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621318,621548,500469,621549],"components":[{"id":621318,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":25,"abilityModifiers":[{"type":163,"value":10},{"type":164,"value":10}],"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621548,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":25,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":25},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500469,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":25,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621549,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":524357,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":0,"value":8}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":498614,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490269,"name":"Regenerate","description":"Recover (Buff2-Dot) of target's HP every 2 seconds for (Buff2-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572067,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621318,621548,500469,621549]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/572067.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-3","classId":"rom-priest","group":"general","unlockLevel":8,"sourceSkillId":490300,"name":"Holy Aura","description":"Immune to all damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572221,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501546],"components":[{"id":501546,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":20,"effectFlagWords":[12,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-152.95,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490300,"name":"Holy Aura","description":"Immune to all damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572221,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501546]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/572221.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-4","classId":"rom-priest","group":"general","unlockLevel":12,"sourceSkillId":491166,"name":"Magic Barrier","description":"For (Buff0-Time) seconds, all party member's [SC_SKILLTIPS_MDEF] increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572223,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500548],"components":[{"id":500548,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":97,"abilityModifiers":[{"type":170,"value":6}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":491166,"name":"Magic Barrier","description":"For (Buff0-Time) seconds, all party member's [SC_SKILLTIPS_MDEF] increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572223,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500548]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/572223.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-general-5","classId":"rom-priest","group":"general","unlockLevel":16,"sourceSkillId":490298,"name":"Blessed Spring Water","description":"Increases party's Water resistance by (Buff0-0) points for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572215,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500536],"components":[{"id":500536,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":11,"abilityModifiers":[{"type":28,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490298,"name":"Blessed Spring Water","description":"Increases party's Water resistance by (Buff0-0) points for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":572215,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500536]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/572215.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-0","classId":"rom-knight","group":"primary","unlockLevel":1,"sourceSkillId":490495,"name":"Holy Shield","description":"For (Buff0-Time) seconds, every party member within range receives a shield which can block all physical damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573731,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500943],"components":[{"id":500943,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[8,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490495,"name":"Holy Shield","description":"For (Buff0-Time) seconds, every party member within range receives a shield which can block all physical damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573731,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500943]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/573731.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-1","classId":"rom-knight","group":"primary","unlockLevel":2,"sourceSkillId":490149,"name":"Holy Seal","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second, and immediately adds 4 layers of Holy Seal effect. \nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff-Time-500140) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575282,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500142,500169,500140],"components":[{"id":500142,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.65,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":40,"hateRate":2.5},"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":490149,"name":"Holy Seal","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second, and immediately adds 4 layers of Holy Seal effect. \nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff-Time-500140) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575282,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500142,500169,500140]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/575282.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-2","classId":"rom-knight","group":"primary","unlockLevel":2,"sourceSkillId":490172,"name":"Holy Power Explosion","description":"Gives a buff restoring MP by (Buff0-Dot)% every 2 seconds, and increases the aggro of all attacks by (Buff0-0)%. It also restores (DMG-500314) MP for (Buff0-Time) seconds while receiving healing.","target":"self","range":5,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570944,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501827,500314],"components":[{"id":501827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":235,"specialActionFlags":0,"assistType":24,"abilityModifiers":[{"type":138,"value":10}],"abilitySkillLevelArg":5,"dotTime":2,"dotType":6,"dotBase":3,"dot":{"timeSeconds":2,"type":6,"base":3,"skillLevelArg":0},"attackType":1,"damagePower":60,"fixedValue":0,"summonCreatureId":0},{"id":500314,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":50,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":50,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":490172,"name":"Holy Power Explosion","description":"Gives a buff restoring MP by (Buff0-Dot)% every 2 seconds, and increases the aggro of all attacks by (Buff0-0)%. It also restores (DMG-500314) MP for (Buff0-Time) seconds while receiving healing.","target":"self","range":5,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570944,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501827,500314]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/570944.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-3","classId":"rom-knight","group":"primary","unlockLevel":6,"sourceSkillId":490175,"name":"Whirlwind Shield","description":"Deals (DMG0) + (FixDMG-500175) x the shield's defense value main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second on multiple targets. Each skill level adds to aggro.\n(Must have a shield equipped)\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575127,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500175],"components":[{"id":500175,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":7,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":10},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":490175,"name":"Whirlwind Shield","description":"Deals (DMG0) + (FixDMG-500175) x the shield's defense value main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second on multiple targets. Each skill level adds to aggro.\n(Must have a shield equipped)\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575127,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500175]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/575127.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-4","classId":"rom-knight","group":"primary","unlockLevel":10,"sourceSkillId":490189,"name":"Shackles of Light","description":"Emanate shackles of light, Rooting all enemies for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":73,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570948,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500195],"components":[{"id":500195,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":490189,"name":"Shackles of Light","description":"Emanate shackles of light, Rooting all enemies for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":73,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570948,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500195]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/570948.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-5","classId":"rom-knight","group":"primary","unlockLevel":14,"sourceSkillId":490168,"name":"Resolution","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff0-1)% + (Buff0-0) for (Buff0-Time) seconds, \nand restores (DMG-500950) + (current [SC_SKILLTIPS_HP]) x ((DMG-507222)).","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":3.5},"source":{"imageId":570960,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500211,500950,507222],"components":[{"id":500211,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":8,"value":350},{"type":167,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500950,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":68157440,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":350,"fixedValue":0,"attack":{"type":0,"calculationType":4,"damagePower":350,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":507222,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":68157440,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":490168,"name":"Resolution","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff0-1)% + (Buff0-0) for (Buff0-Time) seconds, \nand restores (DMG-500950) + (current [SC_SKILLTIPS_HP]) x ((DMG-507222)).","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":3.5},"source":{"imageId":570960,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500211,500950,507222]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/570960.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-6","classId":"rom-knight","group":"primary","unlockLevel":18,"sourceSkillId":490150,"name":"Charge","description":"Charging towards the target causes (DMG0) [SC_SKILLTIPS_DMG], stuns the target for (Buff4-Time) seconds and adds 2 layers Holy Seal effects.\n(For players the stun effect time lasts (Buff5-Time) seconds.)\nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff-Time-500140) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":570954,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500240,500243,504257,500169,500168,500146,500140],"components":[{"id":500240,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":5,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-25,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-25,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500243,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504257,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":490150,"name":"Charge","description":"Charging towards the target causes (DMG0) [SC_SKILLTIPS_DMG], stuns the target for (Buff4-Time) seconds and adds 2 layers Holy Seal effects.\n(For players the stun effect time lasts (Buff5-Time) seconds.)\nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff-Time-500140) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":570954,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500240,500243,504257,500169,500168,500146,500140]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/570954.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-7","classId":"rom-knight","group":"primary","unlockLevel":20,"sourceSkillId":490153,"name":"Threaten","description":"Deals (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-505950) [SC_SKILLTIPS_DMG|Physical Light Damage] and increases your own aggro by (Buff8-0)% for (Buff8-Time) seconds.\nIf the target has the Holy Seal effect, it will deal (DMG-500242) to (DMG-500257) [SC_SKILLTIPS_DMG|Physical Light Damage] according to the number the effect stacks and reduce the target's [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff4-0)% to (Buff7-0)% for (Buff4-Time) seconds. The effect is enhanced according to the amount of the effect stacks.\n|cff99FF37 Each Holy Seal adds (DMG-500242) Light damage and reduces the target's [SC_SKILLTIPS_01|physical] and [SC_SKILLTIPS_02|magic attack power] by (Buff4-0)%.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575285,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505950,500225,500140,500227,500146,500228,500168,500241,500169,500246,500242,500257],"components":[{"id":505950,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.1,"attack":{"type":0,"calculationType":9,"damagePower":-30,"damagePowerSkillLevelArg":20,"fixedValue":-0.1,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500225,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":196,"abilityModifiers":[{"type":134,"value":-1},{"type":171,"value":-1}],"abilitySkillLevelArg":25,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500227,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":196,"abilityModifiers":[{"type":134,"value":-2},{"type":171,"value":-2}],"abilitySkillLevelArg":25,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500228,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":196,"abilityModifiers":[{"type":134,"value":-3},{"type":171,"value":-3}],"abilitySkillLevelArg":25,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500241,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":196,"abilityModifiers":[{"type":134,"value":-4},{"type":171,"value":-4}],"abilitySkillLevelArg":25,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500246,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":39,"abilityModifiers":[{"type":138,"value":21}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500242,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-5,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-5,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500257,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-20,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490153,"name":"Threaten","description":"Deals (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-505950) [SC_SKILLTIPS_DMG|Physical Light Damage] and increases your own aggro by (Buff8-0)% for (Buff8-Time) seconds.\nIf the target has the Holy Seal effect, it will deal (DMG-500242) to (DMG-500257) [SC_SKILLTIPS_DMG|Physical Light Damage] according to the number the effect stacks and reduce the target's [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff4-0)% to (Buff7-0)% for (Buff4-Time) seconds. The effect is enhanced according to the amount of the effect stacks.\n|cff99FF37 Each Holy Seal adds (DMG-500242) Light damage and reduces the target's [SC_SKILLTIPS_01|physical] and [SC_SKILLTIPS_02|magic attack power] by (Buff4-0)%.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575285,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505950,500225,500140,500227,500146,500228,500168,500241,500169,500246,500242,500257]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/575285.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-8","classId":"rom-knight","group":"passive","unlockLevel":22,"sourceSkillId":490171,"name":"Shield Mastery","description":"Increases shield's [SC_SKILLTIPS_DEF] by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570937,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500215],"components":[{"id":500215,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":43,"value":5}],"abilitySkillLevelArg":23.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":490171,"name":"Shield Mastery","description":"Increases shield's [SC_SKILLTIPS_DEF] by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570937,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500215]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/570937.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-10","classId":"rom-knight","group":"primary","unlockLevel":26,"sourceSkillId":490468,"name":"Shield of Valor","description":"Enhances shield with the power of Light, increasing [SC_SKILLTIPS_PARRY_RATE] by (Buff0-0)%. Each successful parry will reduce the cooldown time of the Holy Seal skill by 1 seconds for (Buff0-Time) seconds.\n(Must have a shield equipped)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570946,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500178],"components":[{"id":500178,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":227,"value":5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":490468,"name":"Shield of Valor","description":"Enhances shield with the power of Light, increasing [SC_SKILLTIPS_PARRY_RATE] by (Buff0-0)%. Each successful parry will reduce the cooldown time of the Holy Seal skill by 1 seconds for (Buff0-Time) seconds.\n(Must have a shield equipped)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570946,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500178]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/570946.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-11","classId":"rom-knight","group":"primary","unlockLevel":28,"sourceSkillId":490186,"name":"Truth Shield Bash","description":"Deals (DMG0) + (FixDMG-500177) x the shield's defense value [SC_SKILLTIPS_DMG|Physical Light Damage] per second, based on the main hand weapon's damage per second. If the caster is under the \"[501827]\" effect, the inflicted aggro will also be increased.\nIf the target has the \"Holy Seal\" effect, all the Holy Seal effects will be consumed to generate a shield, absorbing an amount of damage equal to (Buff-Shield-500196)% to (Buff-Shield-500199)% [SC_SKILLTIPS_HP].\n|cff99FF37 Each shield generated by the Holy Seal can absorb an amount of damage equal to (Buff-Shield-500196)% maximal HP. The shield can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":570958,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500185,501827,500177,500186,500140,500187,500146,500188,500168,500189,500169,500196,500199],"components":[{"id":500185,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":10,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":20,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":10},"summonCreatureId":0},{"id":501827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":235,"specialActionFlags":0,"assistType":24,"abilityModifiers":[{"type":138,"value":10}],"abilitySkillLevelArg":5,"dotTime":2,"dotType":6,"dotBase":3,"dot":{"timeSeconds":2,"type":6,"base":3,"skillLevelArg":0},"attackType":1,"damagePower":60,"fixedValue":0,"summonCreatureId":0},{"id":500177,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":10,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":20,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500186,"magicFunc":7,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500187,"magicFunc":7,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500188,"magicFunc":7,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500189,"magicFunc":7,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500196,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":2,"skillLevelArg":3}},{"id":500199,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":8,"skillLevelArg":3}}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":490186,"name":"Truth Shield Bash","description":"Deals (DMG0) + (FixDMG-500177) x the shield's defense value [SC_SKILLTIPS_DMG|Physical Light Damage] per second, based on the main hand weapon's damage per second. If the caster is under the \"[501827]\" effect, the inflicted aggro will also be increased.\nIf the target has the \"Holy Seal\" effect, all the Holy Seal effects will be consumed to generate a shield, absorbing an amount of damage equal to (Buff-Shield-500196)% to (Buff-Shield-500199)% [SC_SKILLTIPS_HP].\n|cff99FF37 Each shield generated by the Holy Seal can absorb an amount of damage equal to (Buff-Shield-500196)% maximal HP. The shield can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":570958,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500185,501827,500177,500186,500140,500187,500146,500188,500168,500189,500169,500196,500199]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/570958.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-12","classId":"rom-knight","group":"primary","unlockLevel":30,"sourceSkillId":490154,"name":"Shock","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second and stuns the target for (Buff4-Time) seconds.\nIf the target has the Holy Seal effect, it will deal additional (DMG-500946) to (DMG-500949) [SC_SKILLTIPS_DMG|Physical Light Damage] and increase the stun effect time by (Buff-Time-500248) to (Buff8-Time) seconds.\n|cff99FF37 Each Holy Seal increases Light damage by (DMG-500946) and the stun effect time by (Buff4-Time) seconds.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570938,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500263,500247,500259,500169,500253,500168,500249,500146,500248,500140,500946,500949],"components":[{"id":500263,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":12,"hateCost":30,"settingFlags":0,"specialActionFlags":4,"assistType":2,"abilityModifiers":[{"type":135,"value":-3}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":10,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500247,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500259,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500253,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":4,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500249,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":3,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500248,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":2,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500946,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":12,"hateCost":30,"settingFlags":66,"specialActionFlags":4,"assistType":2,"abilityModifiers":[{"type":135,"value":-3}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-10,"damagePowerSkillLevelArg":10,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500949,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":12,"hateCost":30,"settingFlags":66,"specialActionFlags":4,"assistType":2,"abilityModifiers":[{"type":135,"value":-3}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-40,"damagePowerSkillLevelArg":10,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":490154,"name":"Shock","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second and stuns the target for (Buff4-Time) seconds.\nIf the target has the Holy Seal effect, it will deal additional (DMG-500946) to (DMG-500949) [SC_SKILLTIPS_DMG|Physical Light Damage] and increase the stun effect time by (Buff-Time-500248) to (Buff8-Time) seconds.\n|cff99FF37 Each Holy Seal increases Light damage by (DMG-500946) and the stun effect time by (Buff4-Time) seconds.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570938,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500263,500247,500259,500169,500253,500168,500249,500146,500248,500140,500946,500949]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/570938.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-14","classId":"rom-knight","group":"primary","unlockLevel":34,"sourceSkillId":491321,"name":"Holy Strength","description":"Increases [SC_SKILLTIPS_STR] by (Buff0-0)% and Light damage dealt by you, by (Buff0-1)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575284,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500768],"components":[{"id":500768,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":161,"value":1},{"type":49,"value":1}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":491321,"name":"Holy Strength","description":"Increases [SC_SKILLTIPS_STR] by (Buff0-0)% and Light damage dealt by you, by (Buff0-1)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575284,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500768]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/575284.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-9","classId":"rom-knight","group":"passive","unlockLevel":24,"sourceSkillId":490191,"name":"Devotion","description":"Increases [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0), the healing you receive by (Buff8-0)% and Light damage dealt by you, by (Buff8-1)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570952,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500239,507204,500148],"components":[{"id":500239,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":30}],"abilitySkillLevelArg":50,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507204,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":168,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500148,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":144,"value":1},{"type":49,"value":1}],"abilitySkillLevelArg":24,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":490191,"name":"Devotion","description":"Increases [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0), the healing you receive by (Buff8-0)% and Light damage dealt by you, by (Buff8-1)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570952,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500239,507204,500148]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/570952.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-primary-17","classId":"rom-knight","group":"primary","unlockLevel":42,"sourceSkillId":495724,"name":"Hall of Dead Heroes","description":"After use, all party members within range will receive the Hall of Dead Heroes effect. [SC_SKILLTIPS_HURT_PASSIVE] decreases by (Buff0-2)%, [SC_SKILLTIPS_MHURT_PASSIVE] decreases by (Buff0-1)%, and [SC_SKILLTIPS_MOVE] increases by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570972,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500266],"components":[{"id":500266,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":30},{"type":142,"value":10},{"type":143,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":42,"prerequisites":[],"sourceSkillId":495724,"name":"Hall of Dead Heroes","description":"After use, all party members within range will receive the Hall of Dead Heroes effect. [SC_SKILLTIPS_HURT_PASSIVE] decreases by (Buff0-2)%, [SC_SKILLTIPS_MHURT_PASSIVE] decreases by (Buff0-1)%, and [SC_SKILLTIPS_MOVE] increases by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570972,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500266]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/570972.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-0","classId":"rom-knight","group":"general","unlockLevel":1,"sourceSkillId":490151,"name":"Punishment","description":"If the target has the Holy Seal effect, According to the amount of the effect stacks, the Holy Seal will deal extra (DMG0) to (DMG3) + current [SC_SKILLTIPS_STA] x (FixDMG-500145) to (FixDMG-500219) [SC_SKILLTIPS_DMG|Physical Light Damage].\n|cff99FF37 Every Holy Seal stack adds (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-500145) Light damage.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":570928,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500145,500140,500216,500146,500217,500168,500219,500169,500143],"components":[{"id":500145,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.1,"attack":{"type":0,"calculationType":9,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500216,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.2,"attack":{"type":0,"calculationType":9,"damagePower":-60,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500217,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-90,"fixedValue":-0.3,"attack":{"type":0,"calculationType":9,"damagePower":-90,"damagePowerSkillLevelArg":30,"fixedValue":-0.3,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500219,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-120,"fixedValue":-0.4,"attack":{"type":0,"calculationType":9,"damagePower":-120,"damagePowerSkillLevelArg":30,"fixedValue":-0.4,"fixedType":8,"fixedDamageSkillLevelArg":1,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500143,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":-10,"settingFlags":524288,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490151,"name":"Punishment","description":"If the target has the Holy Seal effect, According to the amount of the effect stacks, the Holy Seal will deal extra (DMG0) to (DMG3) + current [SC_SKILLTIPS_STA] x (FixDMG-500145) to (FixDMG-500219) [SC_SKILLTIPS_DMG|Physical Light Damage].\n|cff99FF37 Every Holy Seal stack adds (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-500145) Light damage.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":570928,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500145,500140,500216,500146,500217,500168,500219,500169,500143]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/570928.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-1","classId":"rom-knight","group":"general","unlockLevel":1,"sourceSkillId":490148,"name":"Holy Strike","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second, and adds one layer of Holy Seal effect. Each skill level adds to aggro.\nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff4-Time) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575126,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500155,500169,500168,500146,500140],"components":[{"id":500155,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.65,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2.5},"summonCreatureId":0},{"id":500169,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500168,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500146,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0},{"id":500140,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":80,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-2,"dot":{"timeSeconds":2,"type":0,"base":-2,"skillLevelArg":50},"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":490148,"name":"Holy Strike","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second, and adds one layer of Holy Seal effect. Each skill level adds to aggro.\nHoly Seal: Causes (Buff-Dot-500140) [SC_SKILLTIPS_DMG] every 2 seconds for (Buff4-Time) seconds. It can be stacked up to 4 times.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575126,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500155,500169,500168,500146,500140]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/575126.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-2","classId":"rom-knight","group":"general","unlockLevel":4,"sourceSkillId":490159,"name":"Disarmament","description":"Inflicts (DMG0) main hand weapon DPS to the target and reduces its armor value by (Buff7-0)% for (Buff7-Time) seconds. Can be stacked 4 times.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570942,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620959,500165,500159,500158,500157],"components":[{"id":620959,"magicFunc":0,"magicType":4,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.65,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":2,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500165,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-12}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500159,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-9}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500158,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-6}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500157,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-3}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":490159,"name":"Disarmament","description":"Inflicts (DMG0) main hand weapon DPS to the target and reduces its armor value by (Buff7-0)% for (Buff7-Time) seconds. Can be stacked 4 times.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":570942,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620959,500165,500159,500158,500157]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/570942.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-3","classId":"rom-knight","group":"general","unlockLevel":8,"sourceSkillId":490179,"name":"Strike of Punishment","description":"Deals (DMG0) [SC_SKILLTIPS_DMG|Physical Light Damage] to the target and makes it unable to carry out physical and normal attacks for (Buff4-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":6,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":803035,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500767,500147],"components":[{"id":500767,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":10,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-20,"damagePowerSkillLevelArg":25,"fixedValue":0,"fixedType":2,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500147,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":126,"effectFlagWords":[2,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":490179,"name":"Strike of Punishment","description":"Deals (DMG0) [SC_SKILLTIPS_DMG|Physical Light Damage] to the target and makes it unable to carry out physical and normal attacks for (Buff4-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":6,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":803035,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500767,500147]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/803035.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-4","classId":"rom-knight","group":"general","unlockLevel":12,"sourceSkillId":490152,"name":"Enhanced Armor","description":"Increases [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570930,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500141],"components":[{"id":500141,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":300,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":2,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":490152,"name":"Enhanced Armor","description":"Increases [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570930,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500141]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/570930.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-5","classId":"rom-knight","group":"passive","unlockLevel":16,"sourceSkillId":490174,"name":"Defense Technique","description":"Increases parry rate by (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570940,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500218],"components":[{"id":500218,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":490174,"name":"Defense Technique","description":"Increases parry rate by (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570940,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500218]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/570940.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-6","classId":"rom-knight","group":"passive","unlockLevel":20,"sourceSkillId":490170,"name":"Resilience","description":"Increases [SC_SKILLTIPS_STA] by (current [SC_SKILLTIPS_STA] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570932,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500214],"components":[{"id":500214,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":3,"value":11},{"type":162,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":490170,"name":"Resilience","description":"Increases [SC_SKILLTIPS_STA] by (current [SC_SKILLTIPS_STA] + (Buff0-0)) x (Buff0-1)% + (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":570932,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500214]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/570932.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-general-7","classId":"rom-knight","group":"general","unlockLevel":36,"sourceSkillId":490192,"name":"Shield of Discipline","description":"Enhances shield with the power of Light, absorbing (Buff0-0)% [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] for 30 seconds. Also deals (DMG-500213) Light damage to the attacking spell caster. (Shield must be equipped.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":99,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":570965,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500149,500213],"components":[{"id":500149,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":268435683,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":143,"value":5},{"type":142,"value":5}],"abilitySkillLevelArg":23.2,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":490469,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500213,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"attack":{"type":0,"calculationType":4,"damagePower":-100,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":490192,"name":"Shield of Discipline","description":"Enhances shield with the power of Light, absorbing (Buff0-0)% [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] for 30 seconds. Also deals (DMG-500213) Light damage to the attacking spell caster. (Shield must be equipped.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":99,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":570965,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500149,500213]}}],"sourceFamily":"general:7","icon":"/assets/ui/rom-spells/570965.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-0","classId":"rom-warden","group":"primary","unlockLevel":1,"sourceSkillId":493644,"name":"Energy Absorb","description":"Absorbs target's natural energy to reduce his physical damage by (Buff0-0)% and increase your own physical damage by (Buff4-0)% for (Buff0-Time) seconds.","target":"hostile","range":8,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578296,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504136,504137],"components":[{"id":504136,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":-10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504137,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493644,"name":"Energy Absorb","description":"Absorbs target's natural energy to reduce his physical damage by (Buff0-0)% and increase your own physical damage by (Buff4-0)% for (Buff0-Time) seconds.","target":"hostile","range":8,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578296,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504136,504137]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/578296.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-1","classId":"rom-warden","group":"primary","unlockLevel":1,"sourceSkillId":493333,"name":"Summon Spirit of the Oak","description":"Summons a [102297] to assist you. While in effect, it will increase your [SC_SKILLTIPS_DEF] by (Buff4-0)% and [SC_SKILLTIPS_PARRY_RATE] by (Buff4-1)%.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102297},"source":{"imageId":578258,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503576,620682],"components":[{"id":503576,"magicFunc":3,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102297,"summon":{"creatureId":102297,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}},{"id":620682,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":135,"value":65},{"type":227,"value":20}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493333,"name":"Summon Spirit of the Oak","description":"Summons a [102297] to assist you. While in effect, it will increase your [SC_SKILLTIPS_DEF] by (Buff4-0)% and [SC_SKILLTIPS_PARRY_RATE] by (Buff4-1)%.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102297},"source":{"imageId":578258,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503576,620682]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/578258.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-2","classId":"rom-warden","group":"primary","unlockLevel":1,"sourceSkillId":493382,"name":"Punch","description":"Causes (DMG0) damage to your target and decreases the target's [SC_SKILLTIPS_01] by (Buff4-0)% for (Buff4-Time) seconds.\n[SC_SKILL_COLLECT_01]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":578264,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503575,503582,503650],"components":[{"id":503575,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-20,"damagePowerSkillLevelArg":33,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503582,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503650,"magicFunc":7,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493382,"name":"Punch","description":"Causes (DMG0) damage to your target and decreases the target's [SC_SKILLTIPS_01] by (Buff4-0)% for (Buff4-Time) seconds.\n[SC_SKILL_COLLECT_01]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":578264,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503575,503582,503650]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/578264.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-3","classId":"rom-warden","group":"primary","unlockLevel":2,"sourceSkillId":493393,"name":"Thorny Vines","description":"Thorny vines pierce your target, causing (Buff0-Dot) physical damage every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578275,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503628],"components":[{"id":503628,"magicFunc":1,"magicType":0,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":493393,"name":"Thorny Vines","description":"Thorny vines pierce your target, causing (Buff0-Dot) physical damage every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578275,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503628]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/578275.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-4","classId":"rom-warden","group":"primary","unlockLevel":6,"sourceSkillId":493398,"name":"Elven Prayer","description":"Heals your pet restoring (current max HP x (DMG-507338)) + (DMG-503636) HP.","target":"self","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":578279,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620138,505155,507338,503636],"components":[{"id":620138,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505155,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":10},{"type":173,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507338,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":2,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":2,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503636,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":20,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":20,"damagePowerSkillLevelArg":24,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":493398,"name":"Elven Prayer","description":"Heals your pet restoring (current max HP x (DMG-507338)) + (DMG-503636) HP.","target":"self","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":578279,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620138,505155,507338,503636]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/578279.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-5","classId":"rom-warden","group":"primary","unlockLevel":10,"sourceSkillId":493400,"name":"Movement Restriction","description":"Your target is unable to move for (Buff0-Time) seconds. Afterwards it suffers (DMG-503945) damage.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":578281,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503638,504241,503943,503945],"components":[{"id":503638,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":194,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493419,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504241,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":194,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493419,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503943,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":524288,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503945,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-16.4,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-16.4,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":493400,"name":"Movement Restriction","description":"Your target is unable to move for (Buff0-Time) seconds. Afterwards it suffers (DMG-503945) damage.\n(For players this effect lasts for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":578281,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503638,504241,503943,503945]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/578281.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-6","classId":"rom-warden","group":"primary","unlockLevel":14,"sourceSkillId":493344,"name":"Summon Nature Crystal","description":"Summons a [102325] to assist you. While active, you will be immune to all attacks but will not be able to use any attack skills. When the [102325] is present, your [SC_SKILLTIPS_MOVE] will be increased by (Buff4-0)% and you can order the [102325] to cast [498201] and [498202] to assist your party members.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102325},"source":{"imageId":578260,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503578,503948],"components":[{"id":503578,"magicFunc":3,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102325,"summon":{"creatureId":102325,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}},{"id":503948,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":24,"value":7}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":493344,"name":"Summon Nature Crystal","description":"Summons a [102325] to assist you. While active, you will be immune to all attacks but will not be able to use any attack skills. When the [102325] is present, your [SC_SKILLTIPS_MOVE] will be increased by (Buff4-0)% and you can order the [102325] to cast [498201] and [498202] to assist your party members.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102325},"source":{"imageId":578260,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503578,503948]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/578260.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-7","classId":"rom-warden","group":"primary","unlockLevel":14,"sourceSkillId":498202,"name":"Crystalline Acceleration","description":"Increases the [SC_SKILLTIPS_DPS] and [SC_SKILLTIPS_CAST] of team members by (Buff0-620687)% for (Buff-Time-620687) seconds within a radius of 75 from the pet's master.\n[SC_SKILL_COLLECT_01]","target":"self","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578270,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620716,620687],"components":[{"id":620716,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620687,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-5},{"type":51,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":498202,"name":"Crystalline Acceleration","description":"Increases the [SC_SKILLTIPS_DPS] and [SC_SKILLTIPS_CAST] of team members by (Buff0-620687)% for (Buff-Time-620687) seconds within a radius of 75 from the pet's master.\n[SC_SKILL_COLLECT_01]","target":"self","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578270,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620716,620687]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/578270.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-8","classId":"rom-warden","group":"primary","unlockLevel":18,"sourceSkillId":493384,"name":"Entangle","description":"Binds the target tightly to your pet, making it unable to move, attack or cast spells for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578266,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503583,504243,503584],"components":[{"id":503583,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504243,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503584,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":493384,"name":"Entangle","description":"Binds the target tightly to your pet, making it unable to move, attack or cast spells for (Buff0-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578266,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503583,504243,503584]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/578266.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-9","classId":"rom-warden","group":"primary","unlockLevel":22,"sourceSkillId":493399,"name":"Damage Transfer","description":"For (Buff-Time-503643) seconds, (Buff4-0)% of the damage you receive is transferred to your pet. (Pet must be inside a radius of 300.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578280,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504305,503942,503643],"components":[{"id":504305,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503942,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":128,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":30},{"type":142,"value":30}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":493416,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503643,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":493399,"name":"Damage Transfer","description":"For (Buff-Time-503643) seconds, (Buff4-0)% of the damage you receive is transferred to your pet. (Pet must be inside a radius of 300.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578280,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504305,503942,503643]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/578280.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-10","classId":"rom-warden","group":"primary","unlockLevel":24,"sourceSkillId":491668,"name":"Heart of the Oak","description":"You are protected by the power of the Oak and will be able to resist the next 2 attacks. It lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":578261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620679,503946],"components":[{"id":620679,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":363,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5}],"abilitySkillLevelArg":0,"dotTime":3,"dotType":5,"dotBase":1,"dot":{"timeSeconds":3,"type":5,"base":1,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":2,"skillLevelArg":0}},{"id":503946,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":355,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":2,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":491668,"name":"Heart of the Oak","description":"You are protected by the power of the Oak and will be able to resist the next 2 attacks. It lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":578261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620679,503946]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/578261.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-11","classId":"rom-warden","group":"primary","unlockLevel":26,"sourceSkillId":493391,"name":"Frantic Briar","description":"Uses the power of Mother Earth to create a briar, causing (DMG0) main hand weapon DPS to all targets in a range of 80, and decreasing their [SC_SKILLTIPS_MOVE] by (Buff4-0)% for (Buff4-Time) seconds.","target":"self","range":8,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578273,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503481,620682,503626,503947,620694],"components":[{"id":503481,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0},{"id":620682,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":135,"value":65},{"type":227,"value":20}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503626,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503947,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-35}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620694,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":493391,"name":"Frantic Briar","description":"Uses the power of Mother Earth to create a briar, causing (DMG0) main hand weapon DPS to all targets in a range of 80, and decreasing their [SC_SKILLTIPS_MOVE] by (Buff4-0)% for (Buff4-Time) seconds.","target":"self","range":8,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578273,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503481,620682,503626,503947,620694]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/578273.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-13","classId":"rom-warden","group":"primary","unlockLevel":30,"sourceSkillId":493343,"name":"Summon Oak Walker","description":"Summons an [102324] to assist you. While in effect, it increases your [SC_SKILLTIPS_CRI] by (Buff4-0), [SC_SKILLTIPS_CRI_POWER] by (Buff4-1)%, [SC_SKILLTIPS_MCRI] by (Buff4-2), and [SC_SKILLTIPS_MCRI_POWER] by (Buff4-3)%. If your skill attacks land a critical hit during the effect time, the Oak Walker will additionally cast [493385] on your target.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102324},"source":{"imageId":578259,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503577,620678],"components":[{"id":503577,"magicFunc":3,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102324,"summon":{"creatureId":102324,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}},{"id":620678,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":18,"value":200},{"type":19,"value":10},{"type":20,"value":200},{"type":21,"value":10}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":493343,"name":"Summon Oak Walker","description":"Summons an [102324] to assist you. While in effect, it increases your [SC_SKILLTIPS_CRI] by (Buff4-0), [SC_SKILLTIPS_CRI_POWER] by (Buff4-1)%, [SC_SKILLTIPS_MCRI] by (Buff4-2), and [SC_SKILLTIPS_MCRI_POWER] by (Buff4-3)%. If your skill attacks land a critical hit during the effect time, the Oak Walker will additionally cast [493385] on your target.","target":"self","range":5,"castTimeMs":4000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102324},"source":{"imageId":578259,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503577,620678]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/578259.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-14","classId":"rom-warden","group":"primary","unlockLevel":30,"sourceSkillId":493385,"name":"Sepal Stab","description":"Precisely stab your target causing (DMG0) damage. \n[SC_SKILL_COLLECT_01]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":578267,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503619,503650],"components":[{"id":503619,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-30,"damagePowerSkillLevelArg":26,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503650,"magicFunc":7,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":493385,"name":"Sepal Stab","description":"Precisely stab your target causing (DMG0) damage. \n[SC_SKILL_COLLECT_01]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":578267,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503619,503650]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/578267.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-15","classId":"rom-warden","group":"passive","unlockLevel":32,"sourceSkillId":493409,"name":"Two-Hand Weapon Mastery","description":"You can wield two-hand axes and swords, and your two-handed weapon damage is increased by (Buff0-3)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578290,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503647],"components":[{"id":503647,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":90,"value":1},{"type":92,"value":1},{"type":63,"value":5},{"type":65,"value":5},{"type":66,"value":5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":493409,"name":"Two-Hand Weapon Mastery","description":"You can wield two-hand axes and swords, and your two-handed weapon damage is increased by (Buff0-3)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578290,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503647]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/578290.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-16","classId":"rom-warden","group":"primary","unlockLevel":32,"sourceSkillId":493348,"name":"Protection of Nature","description":"Increases your [SC_SKILLTIPS_HP] by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578263,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503581],"components":[{"id":503581,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1},{"type":144,"value":3}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":493348,"name":"Protection of Nature","description":"Increases your [SC_SKILLTIPS_HP] by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578263,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503581]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/578263.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-17","classId":"rom-warden","group":"passive","unlockLevel":34,"sourceSkillId":493407,"name":"Natural Lifeline","description":"Permanently increases your pet's maximum HP by (Buff0-503645)%. Permanently increases your [SC_SKILLTIPS_STA] and [SC_SKILLTIPS_STR] by (current STA or STR + (Buff0-0)) x ((Buff0-1)%) + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578288,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620681,503645],"components":[{"id":620681,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":3,"value":10},{"type":162,"value":1},{"type":2,"value":10},{"type":161,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503645,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":50331747,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":3}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":493407,"name":"Natural Lifeline","description":"Permanently increases your pet's maximum HP by (Buff0-503645)%. Permanently increases your [SC_SKILLTIPS_STA] and [SC_SKILLTIPS_STR] by (current STA or STR + (Buff0-0)) x ((Buff0-1)%) + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578288,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620681,503645]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/578288.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-18","classId":"rom-warden","group":"primary","unlockLevel":36,"sourceSkillId":493397,"name":"Banish","description":"Banishes your target for (Buff0-Time) seconds making it unable to act but also unable to receive damage.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":60000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578278,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503635,504240],"components":[{"id":503635,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[95,24],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504240,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[95,24],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":493397,"name":"Banish","description":"Banishes your target for (Buff0-Time) seconds making it unable to act but also unable to receive damage.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":60000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578278,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503635,504240]}}],"sourceFamily":"primary:18","icon":"/assets/ui/rom-spells/578278.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-19","classId":"rom-warden","group":"primary","unlockLevel":38,"sourceSkillId":493386,"name":"Magic Interference","description":"Reduces your target's [SC_SKILLTIPS_MAG_HITP] and [SC_SKILLTIPS_HITP] by (Buff0-0)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578268,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620711,620712],"components":[{"id":620711,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":199,"value":-2},{"type":197,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620712,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":199,"value":-2},{"type":197,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":493386,"name":"Magic Interference","description":"Reduces your target's [SC_SKILLTIPS_MAG_HITP] and [SC_SKILLTIPS_HITP] by (Buff0-0)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578268,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620711,620712]}}],"sourceFamily":"primary:19","icon":"/assets/ui/rom-spells/578268.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-20","classId":"rom-warden","group":"passive","unlockLevel":40,"sourceSkillId":493401,"name":"Vitality Explosion","description":"The power of Mother Earth flows through you. When you hit your target with [493395] or [493392], you will have a chance of restoring your HP by (DMG-503648). This skill can't be triggered again within (Buff-Time-620677) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503648,620677],"components":[{"id":503648,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":10,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":10,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620677,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":493401,"name":"Vitality Explosion","description":"The power of Mother Earth flows through you. When you hit your target with [493395] or [493392], you will have a chance of restoring your HP by (DMG-503648). This skill can't be triggered again within (Buff-Time-620677) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503648,620677]}}],"sourceFamily":"primary:20","icon":"/assets/ui/rom-spells/578282.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-21","classId":"rom-warden","group":"primary","unlockLevel":42,"sourceSkillId":493347,"name":"Power of the Oak","description":"You obtained the power of the Oak, temporary increasing two-hand weapon attack damage by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578262,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503580],"components":[{"id":503580,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":63,"value":3},{"type":65,"value":3},{"type":64,"value":3}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":42,"prerequisites":[],"sourceSkillId":493347,"name":"Power of the Oak","description":"You obtained the power of the Oak, temporary increasing two-hand weapon attack damage by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578262,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503580]}}],"sourceFamily":"primary:21","icon":"/assets/ui/rom-spells/578262.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-22","classId":"rom-warden","group":"primary","unlockLevel":44,"sourceSkillId":493403,"name":"Explosion of Power","description":"Vitalizes your pet's body, increasing your pet's physical and magical attack power by (Buff0-503641)% for (Buff-Time-503641) seconds. (Pet must be inside a radius of 300.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578284,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504198,503641],"components":[{"id":504198,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503641,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5},{"type":171,"value":5}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":44,"prerequisites":[],"sourceSkillId":493403,"name":"Explosion of Power","description":"Vitalizes your pet's body, increasing your pet's physical and magical attack power by (Buff0-503641)% for (Buff-Time-503641) seconds. (Pet must be inside a radius of 300.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578284,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504198,503641]}}],"sourceFamily":"primary:22","icon":"/assets/ui/rom-spells/578284.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-23","classId":"rom-warden","group":"primary","unlockLevel":46,"sourceSkillId":498201,"name":"Crystalline Protection","description":"Casts Crystalline Protection on all team members within a radius of 75 from the pet's master. Negates damage equal to (Buff-Shield-620686)% of maximum HP for (Buff-Time-620686) seconds. \n[SC_SKILL_COLLECT_01]","target":"self","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":578272,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620715,620686],"components":[{"id":620715,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620686,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435811,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":10,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":46,"prerequisites":[],"sourceSkillId":498201,"name":"Crystalline Protection","description":"Casts Crystalline Protection on all team members within a radius of 75 from the pet's master. Negates damage equal to (Buff-Shield-620686)% of maximum HP for (Buff-Time-620686) seconds. \n[SC_SKILL_COLLECT_01]","target":"self","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":578272,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620715,620686]}}],"sourceFamily":"primary:23","icon":"/assets/ui/rom-spells/578272.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-24","classId":"rom-warden","group":"primary","unlockLevel":48,"sourceSkillId":493405,"name":"Elven Guidance","description":"Cast this on your pet. If your pet lands a hit with Punch or Sepal Stab within the next (Buff-Time-503643) seconds you can recover (DMG-503652) MP. (Pet must be within a radius 300.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578286,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503960,503643,503652],"components":[{"id":503960,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503643,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503652,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":30,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":30,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":48,"prerequisites":[],"sourceSkillId":493405,"name":"Elven Guidance","description":"Cast this on your pet. If your pet lands a hit with Punch or Sepal Stab within the next (Buff-Time-503643) seconds you can recover (DMG-503652) MP. (Pet must be within a radius 300.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578286,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503960,503643,503652]}}],"sourceFamily":"primary:24","icon":"/assets/ui/rom-spells/578286.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-25","classId":"rom-warden","group":"primary","unlockLevel":50,"sourceSkillId":493394,"name":"Cross Chop","description":"Chop crosswise against your target, dealing (DMG0) main hand weapon DPS plus (FixDMG-503629) times STR damage to the enemies in a straight line in front of your target. If the [102297] is summoned, the skill will grant extra aggro.","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578276,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503629,620682,503950],"components":[{"id":503629,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":8},"summonCreatureId":0},{"id":620682,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":135,"value":65},{"type":227,"value":20}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503950,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[],"sourceSkillId":493394,"name":"Cross Chop","description":"Chop crosswise against your target, dealing (DMG0) main hand weapon DPS plus (FixDMG-503629) times STR damage to the enemies in a straight line in front of your target. If the [102297] is summoned, the skill will grant extra aggro.","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578276,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503629,620682,503950]}}],"sourceFamily":"primary:25","icon":"/assets/ui/rom-spells/578276.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-primary-26","classId":"rom-warden","group":"primary","unlockLevel":1,"sourceSkillId":493645,"name":"Recall Pet","description":"Recall your pet.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578384,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504199],"components":[{"id":504199,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493645,"name":"Recall Pet","description":"Recall your pet.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578384,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504199]}}],"sourceFamily":"primary:26","icon":"/assets/ui/rom-spells/578384.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-0","classId":"rom-warden","group":"general","unlockLevel":1,"sourceSkillId":493395,"name":"Charged Chop","description":"Concentrates power in your weapon, then releases it to strike a mighty blow! Causes (DMG0) main hand weapon DPS plus (FixDMG-503630) times STR to your target. \nIt shares [SC_SKILLTIPS_CDTIME] with [493392].","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":1000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578277,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503630],"components":[{"id":503630,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.2,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.2,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493395,"name":"Charged Chop","description":"Concentrates power in your weapon, then releases it to strike a mighty blow! Causes (DMG0) main hand weapon DPS plus (FixDMG-503630) times STR to your target. \nIt shares [SC_SKILLTIPS_CDTIME] with [493392].","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":1000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578277,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503630]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/578277.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-1","classId":"rom-warden","group":"general","unlockLevel":4,"sourceSkillId":493642,"name":"Briar Shield","description":"Thorns surround you for (Buff0-Time) seconds, increasing your [SC_SKILLTIPS_DEF] by (Buff0-0)%. When you are physically attacked, it reflects (DMG-503959) main hand weapon DPS.\n(Only effective on targets within a range of 50)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578293,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503958,503959],"components":[{"id":503958,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":183,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":11,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":493643,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503959,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.01,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.01,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":493642,"name":"Briar Shield","description":"Thorns surround you for (Buff0-Time) seconds, increasing your [SC_SKILLTIPS_DEF] by (Buff0-0)%. When you are physically attacked, it reflects (DMG-503959) main hand weapon DPS.\n(Only effective on targets within a range of 50)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578293,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503958,503959]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/578293.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-2","classId":"rom-warden","group":"general","unlockLevel":8,"sourceSkillId":493392,"name":"Power of the Wood Spirit","description":"Uses the Power of the Wood Spirit to attack up to 3 targets, causing (DMG0) main hand weapon DPS. It shares [SC_SKILLTIPS_CDTIME] with [493395].","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":1000,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578274,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503627],"components":[{"id":503627,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":493392,"name":"Power of the Wood Spirit","description":"Uses the Power of the Wood Spirit to attack up to 3 targets, causing (DMG0) main hand weapon DPS. It shares [SC_SKILLTIPS_CDTIME] with [493395].","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":1000,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578274,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503627]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/578274.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-3","classId":"rom-warden","group":"passive","unlockLevel":12,"sourceSkillId":493608,"name":"Enhanced Accuracy","description":"Increases your physical attack accuracy by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578292,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503956],"components":[{"id":503956,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":1}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":493608,"name":"Enhanced Accuracy","description":"Increases your physical attack accuracy by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578292,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503956]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/578292.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-4","classId":"rom-warden","group":"general","unlockLevel":16,"sourceSkillId":493402,"name":"Elven Amulet","description":"You obtain the protection of the Elves. Received physical damage is reduced by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":70000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578283,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503957],"components":[{"id":503957,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":493402,"name":"Elven Amulet","description":"You obtain the protection of the Elves. Received physical damage is reduced by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":70000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578283,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503957]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/578283.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-general-5","classId":"rom-warden","group":"general","unlockLevel":20,"sourceSkillId":493406,"name":"Savage Power","description":"Draws out the savage power inside of you, temporarily increasing your physical attack power by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578287,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503644],"components":[{"id":503644,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":3}],"abilitySkillLevelArg":9.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":493406,"name":"Savage Power","description":"Draws out the savage power inside of you, temporarily increasing your physical attack power by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578287,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503644]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/578287.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-0","classId":"rom-druid","group":"primary","unlockLevel":1,"sourceSkillId":493538,"name":"Earth Arrow","description":"The power of Mother Earth manifests in your hand causing (DMG0) Earth damage to your target, and also gaining 1 point of Nature's Power.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":12,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578366,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620211,504126],"components":[{"id":620211,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":28,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504126,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493538,"name":"Earth Arrow","description":"The power of Mother Earth manifests in your hand causing (DMG0) Earth damage to your target, and also gaining 1 point of Nature's Power.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":12,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578366,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620211,504126]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/578366.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-1","classId":"rom-druid","group":"primary","unlockLevel":2,"sourceSkillId":493539,"name":"Briar Entwinement","description":"Pours the power of Mother Earth into your target causing every 2 seconds (Buff0-Dot) Earth damage for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578367,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503808],"components":[{"id":503808,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":493539,"name":"Briar Entwinement","description":"Pours the power of Mother Earth into your target causing every 2 seconds (Buff0-Dot) Earth damage for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578367,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503808]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/578367.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-2","classId":"rom-druid","group":"primary","unlockLevel":2,"sourceSkillId":493534,"name":"Purify","description":"Cleanses your target from curses.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578362,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503803],"components":[{"id":503803,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":493534,"name":"Purify","description":"Cleanses your target from curses.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578362,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503803]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/578362.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-3","classId":"rom-druid","group":"primary","unlockLevel":6,"sourceSkillId":493526,"name":"Restore Life","description":"Condenses the power of Mother Earth to restore (DMG0) HP to your target. Also regain 1 point of Nature's Power.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":578354,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503794,503999],"components":[{"id":503794,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":28,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503999,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":493526,"name":"Restore Life","description":"Condenses the power of Mother Earth to restore (DMG0) HP to your target. Also regain 1 point of Nature's Power.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":578354,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503794,503999]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/578354.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-4","classId":"rom-druid","group":"primary","unlockLevel":10,"sourceSkillId":493527,"name":"Blossoming Life","description":"Lets your target regenerate (Buff0-Dot) HP every 2 seconds for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578355,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503795],"components":[{"id":503795,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":8299,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":25,"dot":{"timeSeconds":2,"type":0,"base":25,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":493527,"name":"Blossoming Life","description":"Lets your target regenerate (Buff0-Dot) HP every 2 seconds for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578355,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503795]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/578355.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-5","classId":"rom-druid","group":"primary","unlockLevel":10,"sourceSkillId":493548,"name":"Unity with Mother Earth","description":"Enables every spell you cast to land a critical attack, and increases [SC_SKILLTIPS_HEAL] by (Buff0-0)% for (Buff0-Time) seconds, but you will be unable to move during this time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578375,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503817],"components":[{"id":503817,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,64],"abilityModifiers":[{"type":149,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":493548,"name":"Unity with Mother Earth","description":"Enables every spell you cast to land a critical attack, and increases [SC_SKILLTIPS_HEAL] by (Buff0-0)% for (Buff0-Time) seconds, but you will be unable to move during this time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578375,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503817]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/578375.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-6","classId":"rom-druid","group":"primary","unlockLevel":12,"sourceSkillId":493537,"name":"Rebirth","description":"Uses the power of nature to revive your target. Reduces death debt by 30%. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[503806],"components":[{"id":503806,"magicFunc":8,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":30},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":493537,"name":"Rebirth","description":"Uses the power of nature to revive your target. Reduces death debt by 30%. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[503806]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/578365.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-7","classId":"rom-druid","group":"primary","unlockLevel":14,"sourceSkillId":493546,"name":"Weakening Seed","description":"Plants a seed into your target's body reducing its [SC_SKILLTIPS_MDEF] by (Buff1-0)% for (Buff1-Time) seconds, and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and reduce target's [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds. Also 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578374,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503815,503827,620458,504131],"components":[{"id":503815,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":170,"abilityModifiers":[{"type":170,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620458,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":170,"abilityModifiers":[{"type":170,"value":-2}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504131,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":493546,"name":"Weakening Seed","description":"Plants a seed into your target's body reducing its [SC_SKILLTIPS_MDEF] by (Buff1-0)% for (Buff1-Time) seconds, and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and reduce target's [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds. Also 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578374,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503815,503827,620458,504131]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/578374.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-8","classId":"rom-druid","group":"primary","unlockLevel":18,"sourceSkillId":493543,"name":"Rockslide","description":"Hits your target with falling stones after (Buff0-Time) seconds causing (DMG-503824) Earth damage.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578382,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503812,503823,503824],"components":[{"id":503812,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":8386,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493553,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503823,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503824,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":493543,"name":"Rockslide","description":"Hits your target with falling stones after (Buff0-Time) seconds causing (DMG-503824) Earth damage.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578382,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503812,503823,503824]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/578382.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-9","classId":"rom-druid","group":"passive","unlockLevel":22,"sourceSkillId":493550,"name":"Knowledge of the Earth","description":"Makes you understand the flow of Mother Earth's energy, permanently increasing your magical Earth damage by (Buff0-0)% and your Earth resistance by (Buff0-1).\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578378,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503820],"components":[{"id":503820,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":10,"abilityModifiers":[{"type":45,"value":5},{"type":27,"value":2}],"abilitySkillLevelArg":23.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":493550,"name":"Knowledge of the Earth","description":"Makes you understand the flow of Mother Earth's energy, permanently increasing your magical Earth damage by (Buff0-0)% and your Earth resistance by (Buff0-1).\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578378,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503820]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/578378.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-10","classId":"rom-druid","group":"primary","unlockLevel":24,"sourceSkillId":493541,"name":"Binding Silence","description":"Causes (DMG0) [SC_SKILLTIPS_EARTH] and interrupts target's spell casting, rewarding you with 1 point of Nature's Power. (The interrupted spell will enter a cooldown. If the interrupted spell has no cooldown time, all spells will receive a cooldown of 3 seconds.)","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":578369,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503810,502703,504127],"components":[{"id":503810,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502703,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504127,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":493541,"name":"Binding Silence","description":"Causes (DMG0) [SC_SKILLTIPS_EARTH] and interrupts target's spell casting, rewarding you with 1 point of Nature's Power. (The interrupted spell will enter a cooldown. If the interrupted spell has no cooldown time, all spells will receive a cooldown of 3 seconds.)","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":578369,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503810,502703,504127]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/578369.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-11","classId":"rom-druid","group":"primary","unlockLevel":26,"sourceSkillId":493547,"name":"Curing Seed","description":"Plants a healing seed into your target's body increasing the efficiency of heals received by (Buff0-0)% for (Buff0-Time) seconds. This restores 1 point of Nature's Power.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578381,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503816,504132],"components":[{"id":503816,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":174,"abilityModifiers":[{"type":144,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504132,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":493547,"name":"Curing Seed","description":"Plants a healing seed into your target's body increasing the efficiency of heals received by (Buff0-0)% for (Buff0-Time) seconds. This restores 1 point of Nature's Power.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578381,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503816,504132]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/578381.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-12","classId":"rom-druid","group":"primary","unlockLevel":28,"sourceSkillId":493530,"name":"Concentration Prayer","description":"Sends a prayer to Mother Nature, beseeching her to increase all of your party members' [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578358,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503799,507209],"components":[{"id":503799,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":600,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":5,"value":10}],"abilitySkillLevelArg":10,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495932,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507209,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":600,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":164,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":493530,"name":"Concentration Prayer","description":"Sends a prayer to Mother Nature, beseeching her to increase all of your party members' [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578358,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503799,507209]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/578358.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-13","classId":"rom-druid","group":"passive","unlockLevel":30,"sourceSkillId":493552,"name":"Pure Healing","description":"Permanently increases your heals by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578380,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503822],"components":[{"id":503822,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":5}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":493552,"name":"Pure Healing","description":"Permanently increases your heals by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578380,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503822]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/578380.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-14","classId":"rom-druid","group":"primary","unlockLevel":32,"sourceSkillId":493544,"name":"Rock Protection","description":"Makes your body as hard as rock reducing damage taken by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578372,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503813,509797],"components":[{"id":503813,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":178,"abilityModifiers":[{"type":143,"value":45}],"abilitySkillLevelArg":2.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509797,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268959969,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":45}],"abilitySkillLevelArg":2.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":493544,"name":"Rock Protection","description":"Makes your body as hard as rock reducing damage taken by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578372,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503813,509797]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/578372.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-15","classId":"rom-druid","group":"primary","unlockLevel":34,"sourceSkillId":493536,"name":"Spirit Guidance","description":"Consumes 1 point of Nature's Power, channeling it into your target, making it friendly for (Buff0-Time) seconds. (Cannot be used on players. If your reputation has a negative value, the target will still regard you as an enemy.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578364,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503805,503833,504109],"components":[{"id":503805,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":16777410,"specialActionFlags":0,"assistType":101,"effectFlagWords":[0,1024],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493557,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503833,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504109,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":493536,"name":"Spirit Guidance","description":"Consumes 1 point of Nature's Power, channeling it into your target, making it friendly for (Buff0-Time) seconds. (Cannot be used on players. If your reputation has a negative value, the target will still regard you as an enemy.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578364,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503805,503833,504109]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/578364.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-16","classId":"rom-druid","group":"primary","unlockLevel":36,"sourceSkillId":493532,"name":"Body Vitalization","description":"Increase target's [SC_SKILLTIPS_DPS] by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578360,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503801],"components":[{"id":503801,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":9,"abilityModifiers":[{"type":23,"value":-2}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":493532,"name":"Body Vitalization","description":"Increase target's [SC_SKILLTIPS_DPS] by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578360,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503801]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/578360.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-17","classId":"rom-druid","group":"primary","unlockLevel":38,"sourceSkillId":493529,"name":"Mother Earth's Fountain","description":"Restores (DMG1) HP to your friendly targets within a range of 100 around the target of your spell.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance the power and restore (DMG0) HP.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":578357,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503798,503827,503828,620441],"components":[{"id":503798,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503828,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":56,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":56,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":493529,"name":"Mother Earth's Fountain","description":"Restores (DMG1) HP to your friendly targets within a range of 100 around the target of your spell.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance the power and restore (DMG0) HP.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":578357,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503798,503827,503828,620441]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/578357.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-18","classId":"rom-druid","group":"passive","unlockLevel":40,"sourceSkillId":493555,"name":"Power of Protection","description":"Additionally increases the damage reduction of Mother Earth's Protection.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578383,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":493555,"name":"Power of Protection","description":"Additionally increases the damage reduction of Mother Earth's Protection.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578383,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"sourceFamily":"primary:18","icon":"/assets/ui/rom-spells/578383.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-19","classId":"rom-druid","group":"primary","unlockLevel":42,"sourceSkillId":493545,"name":"Withering Seed","description":"Plants a seed into your target's body reducing its [SC_SKILLTIPS_DEF] by (Buff1-0)% for (Buff1-Time) seconds, and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and reduce target's [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds. Also, 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578373,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503814,503827,620457,504130],"components":[{"id":503814,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620457,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-2}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504130,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":42,"prerequisites":[],"sourceSkillId":493545,"name":"Withering Seed","description":"Plants a seed into your target's body reducing its [SC_SKILLTIPS_DEF] by (Buff1-0)% for (Buff1-Time) seconds, and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and reduce target's [SC_SKILLTIPS_DEF] by (Buff0-0)% for (Buff0-Time) seconds. Also, 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578373,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503814,503827,620457,504130]}}],"sourceFamily":"primary:19","icon":"/assets/ui/rom-spells/578373.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-20","classId":"rom-druid","group":"primary","unlockLevel":44,"sourceSkillId":493549,"name":"Mother Nature's Wrath","description":"Inflicts (DMG1) [SC_SKILLTIPS_EARTH] on your target, and (Buff4-Dot) [SC_SKILLTIPS_EARTH] every 2 seconds for (Buff4-Time) seconds. Also restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_EARTH] and (Buff4-Dot) [SC_SKILLTIPS_EARTH] every 2 seconds for (Buff4-Time) seconds. Also 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":65,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":578376,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620214,503827,620450,503819,503999],"components":[{"id":620214,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":22,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620450,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-48,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-48,"damagePowerSkillLevelArg":22,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503819,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":23},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503999,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":44,"prerequisites":[],"sourceSkillId":493549,"name":"Mother Nature's Wrath","description":"Inflicts (DMG1) [SC_SKILLTIPS_EARTH] on your target, and (Buff4-Dot) [SC_SKILLTIPS_EARTH] every 2 seconds for (Buff4-Time) seconds. Also restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_EARTH] and (Buff4-Dot) [SC_SKILLTIPS_EARTH] every 2 seconds for (Buff4-Time) seconds. Also 1 point of Nature's Power will be restored.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":65,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":578376,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620214,503827,620450,503819,503999]}}],"sourceFamily":"primary:20","icon":"/assets/ui/rom-spells/578376.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-21","classId":"rom-druid","group":"primary","unlockLevel":46,"sourceSkillId":493542,"name":"Summon Sandstorm","description":"Summons a large amount of sand and stones causing (DMG1) [SC_SKILLTIPS_EARTH] to multiple targets in range. \nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and cause (DMG0) [SC_SKILLTIPS_EARTH] to all targets in range twice.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578370,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620439,503827,620459,620441],"components":[{"id":620439,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":28,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620459,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":28,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":46,"prerequisites":[],"sourceSkillId":493542,"name":"Summon Sandstorm","description":"Summons a large amount of sand and stones causing (DMG1) [SC_SKILLTIPS_EARTH] to multiple targets in range. \nIf you possess Nature's Power, it will consume 1 point of Nature's Power to enhance abilities and cause (DMG0) [SC_SKILLTIPS_EARTH] to all targets in range twice.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":578370,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620439,503827,620459,620441]}}],"sourceFamily":"primary:21","icon":"/assets/ui/rom-spells/578370.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-22","classId":"rom-druid","group":"primary","unlockLevel":22,"sourceSkillId":493559,"name":"Advanced Rebirth","description":"Through Nature's power and the consumption of an [203606] you can revive your target with 45% less death debt. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[504134],"components":[{"id":504134,"magicFunc":8,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":45},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":493559,"name":"Advanced Rebirth","description":"Through Nature's power and the consumption of an [203606] you can revive your target with 45% less death debt. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[504134]}}],"sourceFamily":"primary:22","icon":"/assets/ui/rom-spells/578365.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-primary-23","classId":"rom-druid","group":"primary","unlockLevel":32,"sourceSkillId":493560,"name":"Supreme Rebirth","description":"Through Nature's power and the consumption of a [203605] you can revive your target with 75% less death debt. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[504135],"components":[{"id":504135,"magicFunc":8,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":75},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":493560,"name":"Supreme Rebirth","description":"Through Nature's power and the consumption of a [203605] you can revive your target with 75% less death debt. (Cannot be used in combat.)","target":"friendly","range":15,"castTimeMs":5000,"cooldownMs":0,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":578365,"sourceEffectType":0,"sourceTarget":15,"componentIds":[504135]}}],"sourceFamily":"primary:23","icon":"/assets/ui/rom-spells/578365.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-0","classId":"rom-druid","group":"general","unlockLevel":1,"sourceSkillId":493528,"name":"Recover","description":"Restores (DMG0) HP to your target and (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.4},"source":{"imageId":578356,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503796,503797],"components":[{"id":503796,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":40,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":40,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503797,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":14,"hateCost":0,"settingFlags":8299,"specialActionFlags":0,"assistType":131,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":493528,"name":"Recover","description":"Restores (DMG0) HP to your target and (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.4},"source":{"imageId":578356,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503796,503797]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/578356.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-1","classId":"rom-druid","group":"general","unlockLevel":4,"sourceSkillId":493535,"name":"Antidote","description":"Cleanses your target from poison.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578363,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503804],"components":[{"id":503804,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":493535,"name":"Antidote","description":"Cleanses your target from poison.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578363,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503804]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/578363.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-2","classId":"rom-druid","group":"general","unlockLevel":8,"sourceSkillId":493531,"name":"Savage Blessing","description":"Increases target's [SC_SKILLTIPS_HIT] and [SC_SKILLTIPS_MAG_HIT] by (Buff0-0)% + (Buff4-0) for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578359,"sourceEffectType":0,"sourceTarget":7,"componentIds":[620454,620455],"components":[{"id":620454,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":1},{"type":199,"value":1}],"abilitySkillLevelArg":9,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493561,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620455,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":16,"value":20},{"type":195,"value":20}],"abilitySkillLevelArg":70,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":493531,"name":"Savage Blessing","description":"Increases target's [SC_SKILLTIPS_HIT] and [SC_SKILLTIPS_MAG_HIT] by (Buff0-0)% + (Buff4-0) for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578359,"sourceEffectType":0,"sourceTarget":7,"componentIds":[620454,620455]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/578359.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-3","classId":"rom-druid","group":"general","unlockLevel":12,"sourceSkillId":493540,"name":"Earth Pulse","description":"The power of Mother Earth strikes the targets in a straight line before you causing (DMG0) Earth damage.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":578368,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620212],"components":[{"id":620212,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":25,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":493540,"name":"Earth Pulse","description":"The power of Mother Earth strikes the targets in a straight line before you causing (DMG0) Earth damage.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":578368,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620212]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/578368.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-4","classId":"rom-druid","group":"passive","unlockLevel":16,"sourceSkillId":493551,"name":"Knowledge of Nature","description":"Increases [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff4-0)% + (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578379,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503821,507208],"components":[{"id":503821,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":5,"value":10}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507208,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":164,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":493551,"name":"Knowledge of Nature","description":"Increases [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff4-0)% + (Buff0-0).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578379,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503821,507208]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/578379.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-general-5","classId":"rom-druid","group":"general","unlockLevel":20,"sourceSkillId":493533,"name":"Mother Earth's Protection","description":"Uses the power of Mother Earth to build a protective shield around your target reducing its suffered magical and physical damage by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578361,"sourceEffectType":0,"sourceTarget":1,"componentIds":[503802,509795],"components":[{"id":503802,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":178,"abilityModifiers":[{"type":143,"value":20}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509795,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268959969,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":20},{"type":143,"value":0}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":493533,"name":"Mother Earth's Protection","description":"Uses the power of Mother Earth to build a protective shield around your target reducing its suffered magical and physical damage by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578361,"sourceEffectType":0,"sourceTarget":1,"componentIds":[503802,509795]}},{"rank":2,"level":40,"prerequisites":[493555],"sourceSkillId":493558,"name":"Mother Earth's Protection","description":"Uses the power of Mother Earth to build a protective shield around your target reducing its suffered magical and physical damage by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578361,"sourceEffectType":0,"sourceTarget":4,"componentIds":[503826,509796],"components":[{"id":503826,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":178,"abilityModifiers":[{"type":143,"value":40}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509796,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268959969,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":40}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/578361.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-0","classId":"rom-warlock","group":"primary","unlockLevel":6,"sourceSkillId":497960,"name":"Perception Extraction","description":"Steals the target's senses and inflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] every second. It also restores (Buff8-Dot) focus every 2 seconds. The effect lasts for (Buff0-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800083,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621701,621446,621655],"components":[{"id":621701,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":26,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":1,"type":0,"base":-6,"skillLevelArg":80},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621446,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":223,"value":9},{"type":226,"value":9}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621655,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":26,"hateCost":0,"settingFlags":75,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":3,"dotBase":2,"dot":{"timeSeconds":2,"type":3,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":497960,"name":"Perception Extraction","description":"Steals the target's senses and inflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] every second. It also restores (Buff8-Dot) focus every 2 seconds. The effect lasts for (Buff0-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800083,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621701,621446,621655]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/800083.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-1","classId":"rom-warlock","group":"primary","unlockLevel":6,"sourceSkillId":497955,"name":"Willpower Blade","description":"|cff9D53E3 Willpower becomes a keen blade, allowing powerful psychic attack skills to be used. |r\nWhen a Warlock has an energy influx of 6 psi, they can choose to release the power of [497955]. Specific skills can only be used in this state, which lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":18000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800374,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501571,621404],"components":[{"id":501571,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498680,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621404,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524355,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":163,"value":2}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":497955,"name":"Willpower Blade","description":"|cff9D53E3 Willpower becomes a keen blade, allowing powerful psychic attack skills to be used. |r\nWhen a Warlock has an energy influx of 6 psi, they can choose to release the power of [497955]. Specific skills can only be used in this state, which lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":18000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800374,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501571,621404]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/800374.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-2","classId":"rom-warlock","group":"primary","unlockLevel":6,"sourceSkillId":497956,"name":"Willpower Construct","description":"|cff6E6DE7 Thoughts are constructed to form solid willpower, allowing powerful psychic support skills to be used. |r\nWhen a Warlock has an energy influx of 6 psi, they can choose to release the power of [497956]. Specific skills can only be used in this state. Lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":18000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800375,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501572,621404],"components":[{"id":501572,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498680,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621404,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524355,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":163,"value":2}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":497956,"name":"Willpower Construct","description":"|cff6E6DE7 Thoughts are constructed to form solid willpower, allowing powerful psychic support skills to be used. |r\nWhen a Warlock has an energy influx of 6 psi, they can choose to release the power of [497956]. Specific skills can only be used in this state. Lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":18000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800375,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501572,621404]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/800375.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-3","classId":"rom-warlock","group":"primary","unlockLevel":10,"sourceSkillId":497962,"name":"Severed Consciousness","description":"[SC_SKILLTIPS_P1]\nSolid willpower is transformed into a keen weapon to continuously attack the target 4 times. Inflicts (DMG0) + (FixDMG-621186) x INT [SC_SKILLTIPS_DARK].\n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":800085,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621186],"components":[{"id":621186,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":497962,"name":"Severed Consciousness","description":"[SC_SKILLTIPS_P1]\nSolid willpower is transformed into a keen weapon to continuously attack the target 4 times. Inflicts (DMG0) + (FixDMG-621186) x INT [SC_SKILLTIPS_DARK].\n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":800085,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621186]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/800085.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-4","classId":"rom-warlock","group":"primary","unlockLevel":10,"sourceSkillId":497963,"name":"Locked Heart","description":"[SC_SKILLTIPS_P2]\nReduces the caster's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% for (Buff0-Time) seconds. Also increases [SC_SKILLTIPS_MOVE] by (Buff0-2)%, but no other skills can be used while in effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800086,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621187],"components":[{"id":621187,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[3,0],"abilityModifiers":[{"type":206,"value":-80},{"type":207,"value":-80},{"type":24,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":497963,"name":"Locked Heart","description":"[SC_SKILLTIPS_P2]\nReduces the caster's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% for (Buff0-Time) seconds. Also increases [SC_SKILLTIPS_MOVE] by (Buff0-2)%, but no other skills can be used while in effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800086,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621187]}}],"sourceFamily":"primary:4","icon":"/assets/ui/rom-spells/800086.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-5","classId":"rom-warlock","group":"primary","unlockLevel":14,"sourceSkillId":497965,"name":"Shield of Solid Mind","description":"Brainpower turns into a protective shield. Repels an amount of damage equal to (Buff0-Shield)% of the caster's healing bonus + 80 points for (Buff0-Time) seconds. The caster will receive the effect of [621190] and [497965] can't be cast on the caster while in effect.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":800088,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621189,621190],"components":[{"id":621189,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":179,"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":4,"effect":0,"point":8,"skillLevelArg":100}},{"id":621190,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":497965,"name":"Shield of Solid Mind","description":"Brainpower turns into a protective shield. Repels an amount of damage equal to (Buff0-Shield)% of the caster's healing bonus + 80 points for (Buff0-Time) seconds. The caster will receive the effect of [621190] and [497965] can't be cast on the caster while in effect.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":800088,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621189,621190]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/800088.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-6","classId":"rom-warlock","group":"primary","unlockLevel":20,"sourceSkillId":498542,"name":"Mind Barrier","description":"[SC_SKILLTIPS_P2]\nTransforms brainpower into a protective shield around a specified area. Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of multiple friendly targets in the area by (Buff0-621196)%. Also increases [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff2-621196)%. The effect lasts (Buff-Time-621682) seconds.","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573079,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621195,621196,621682],"components":[{"id":621195,"magicFunc":6,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621196,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":5},{"type":143,"value":5},{"type":144,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621682,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":9,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":498542,"name":"Mind Barrier","description":"[SC_SKILLTIPS_P2]\nTransforms brainpower into a protective shield around a specified area. Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of multiple friendly targets in the area by (Buff0-621196)%. Also increases [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff2-621196)%. The effect lasts (Buff-Time-621682) seconds.","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":573079,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621195,621196,621682]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/573079.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-7","classId":"rom-warlock","group":"primary","unlockLevel":20,"sourceSkillId":498544,"name":"Ruthless Judgment","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] to the enemy. \nIf the target's HP falls below 20%, you will receive the [621199] state, increasing [SC_SKILLTIPS_MDMG] by (Buff0-621199)% for (Buff-Time-621199) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800093,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621197,621198,621199],"components":[{"id":621197,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-120,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-120,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621198,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621199,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":498544,"name":"Ruthless Judgment","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] to the enemy. \nIf the target's HP falls below 20%, you will receive the [621199] state, increasing [SC_SKILLTIPS_MDMG] by (Buff0-621199)% for (Buff-Time-621199) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800093,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621197,621198,621199]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/800093.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-8","classId":"rom-warlock","group":"primary","unlockLevel":22,"sourceSkillId":498545,"name":"Heart Collection Strike","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] to the target and restores (DMG8) focus. If target's HP is greater than 70%, this skill's critical hit rate will be raised by 50%. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":8000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.81},"source":{"imageId":800094,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621200,621201,621446,621193],"components":[{"id":621200,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-81,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-81,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":50,"hateRate":1},"summonCreatureId":0},{"id":621201,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-81,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-81,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621446,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":223,"value":9},{"type":226,"value":9}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621193,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":50,"fixedValue":0,"attack":{"type":3,"calculationType":4,"damagePower":50,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":498545,"name":"Heart Collection Strike","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] to the target and restores (DMG8) focus. If target's HP is greater than 70%, this skill's critical hit rate will be raised by 50%. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":8000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.81},"source":{"imageId":800094,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621200,621201,621446,621193]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/800094.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-9","classId":"rom-warlock","group":"passive","unlockLevel":24,"sourceSkillId":498546,"name":"Ill Will","description":"Permanently increases dark attribute magic power by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800095,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621267],"components":[{"id":621267,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":50,"value":6}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":498546,"name":"Ill Will","description":"Permanently increases dark attribute magic power by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800095,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621267]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/800095.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-10","classId":"rom-warlock","group":"primary","unlockLevel":26,"sourceSkillId":498547,"name":"Beast's Roar","description":"Summons beasts of evil to surround the caster. Constantly Inflicts (DMG-621271) [SC_SKILLTIPS_DARK] to multiple nearby targets for (Buff0-Time) seconds. Also reduces target's [SC_SKILLTIPS_MOVE] by (Buff0-621269)%. Lasts (Buff-Time-621269) seconds. \n(If the target is a player, effect lasts for (Buff-Time-621543) seconds.) \n[SC_SKILLTIPS_03]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800096,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621268,621271,621269,621543],"components":[{"id":621268,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":-1879048121,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498548,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621271,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":35,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621269,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-20}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621543,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-20}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":498547,"name":"Beast's Roar","description":"Summons beasts of evil to surround the caster. Constantly Inflicts (DMG-621271) [SC_SKILLTIPS_DARK] to multiple nearby targets for (Buff0-Time) seconds. Also reduces target's [SC_SKILLTIPS_MOVE] by (Buff0-621269)%. Lasts (Buff-Time-621269) seconds. \n(If the target is a player, effect lasts for (Buff-Time-621543) seconds.) \n[SC_SKILLTIPS_03]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800096,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621268,621271,621269,621543]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/800096.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-11","classId":"rom-warlock","group":"primary","unlockLevel":28,"sourceSkillId":498549,"name":"Defense Net","description":"Reduces target's [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% for (Buff0-Time) seconds. Also provides immunity to the effects of Helpless, Stun, Root and Slow. \n(Target must be affected by Movement Impairing Effect or Stun for removal to work.) \n[SC_SKILLTIPS_FEAR]\n[SC_SKILLTIPS_LEVEL20]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800097,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621270],"components":[{"id":621270,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":50}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":498549,"name":"Defense Net","description":"Reduces target's [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% for (Buff0-Time) seconds. Also provides immunity to the effects of Helpless, Stun, Root and Slow. \n(Target must be affected by Movement Impairing Effect or Stun for removal to work.) \n[SC_SKILLTIPS_FEAR]\n[SC_SKILLTIPS_LEVEL20]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800097,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621270]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/800097.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-12","classId":"rom-warlock","group":"primary","unlockLevel":30,"sourceSkillId":498550,"name":"Soul Trauma","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] on the enemy. If target is in a [501577] state, the target will be stunned for (Buff8-Time) seconds. \n(If the target is a player, effect lasts for (Buff4-Time) seconds.) \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":800098,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621272,621274,501577,621273],"components":[{"id":621272,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":25,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621274,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621273,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":1,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":498550,"name":"Soul Trauma","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] on the enemy. If target is in a [501577] state, the target will be stunned for (Buff8-Time) seconds. \n(If the target is a player, effect lasts for (Buff4-Time) seconds.) \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":800098,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621272,621274,501577,621273]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/800098.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-13","classId":"rom-warlock","group":"primary","unlockLevel":30,"sourceSkillId":498551,"name":"Otherworldly Whisper","description":"[SC_SKILLTIPS_P2]\nWhispers a chant 5 times to give all nearby party members an [498551] increasing [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by 2% for (Buff0-Time) seconds. \nAlso reduces the caster's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff4-0)%.\n[SC_SKILLTIPS_LEVEL20]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800099,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621275,621276],"components":[{"id":621275,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":2},{"type":171,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621276,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":50},{"type":143,"value":50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":498551,"name":"Otherworldly Whisper","description":"[SC_SKILLTIPS_P2]\nWhispers a chant 5 times to give all nearby party members an [498551] increasing [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by 2% for (Buff0-Time) seconds. \nAlso reduces the caster's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff4-0)%.\n[SC_SKILLTIPS_LEVEL20]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800099,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621275,621276]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/800099.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-14","classId":"rom-warlock","group":"primary","unlockLevel":30,"sourceSkillId":498552,"name":"Knowledge Acquisition","description":"[SC_SKILLTIPS_P1]\nRecovers (Buff0-Dot) Focus every second for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800100,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621277],"components":[{"id":621277,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":75,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":1,"dotType":3,"dotBase":2,"dot":{"timeSeconds":1,"type":3,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":498552,"name":"Knowledge Acquisition","description":"[SC_SKILLTIPS_P1]\nRecovers (Buff0-Dot) Focus every second for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800100,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621277]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/800100.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-15","classId":"rom-warlock","group":"primary","unlockLevel":32,"sourceSkillId":498553,"name":"Puzzlement","description":"Confuses the target's awareness to deal heavy damage. Inflicts (DMG0) [SC_SKILLTIPS_DARK] on target. \n[SC_SKILLTIPS_9_2S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":25000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800101,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621278],"components":[{"id":621278,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":45,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":498553,"name":"Puzzlement","description":"Confuses the target's awareness to deal heavy damage. Inflicts (DMG0) [SC_SKILLTIPS_DARK] on target. \n[SC_SKILLTIPS_9_2S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":25000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800101,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621278]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/800101.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-16","classId":"rom-warlock","group":"primary","unlockLevel":34,"sourceSkillId":498554,"name":"Calm Paradox","description":"Activates party members' latent potential for defense that is buried deep within. Increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-2)%. Also reduces [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. Lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800102,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621279],"components":[{"id":621279,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-5},{"type":171,"value":-5},{"type":135,"value":5},{"type":170,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":498554,"name":"Calm Paradox","description":"Activates party members' latent potential for defense that is buried deep within. Increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-2)%. Also reduces [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. Lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800102,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621279]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/800102.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-17","classId":"rom-warlock","group":"primary","unlockLevel":36,"sourceSkillId":498555,"name":"Surge of Awareness","description":"Activates the latent attack potential of nearby party members. Increases [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. Also reduces [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-2)%. Lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800108,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621280],"components":[{"id":621280,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5},{"type":171,"value":5},{"type":135,"value":-5},{"type":170,"value":-5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":498555,"name":"Surge of Awareness","description":"Activates the latent attack potential of nearby party members. Increases [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. Also reduces [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-2)%. Lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":30000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800108,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621280]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/800108.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-18","classId":"rom-warlock","group":"passive","unlockLevel":36,"sourceSkillId":498556,"name":"Opportune Strike","description":"If target is in a [501577] state, damage inflicted by [498545] or [498553] will be increased by (Buff0-621281)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800109,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501577,621281],"components":[{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621281,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32769,"specialActionFlags":0,"assistType":-1,"clearFlags":12288,"abilityModifiers":[{"type":44,"value":1}],"abilitySkillLevelArg":85,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":498556,"name":"Opportune Strike","description":"If target is in a [501577] state, damage inflicted by [498545] or [498553] will be increased by (Buff0-621281)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800109,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501577,621281]}}],"sourceFamily":"primary:18","icon":"/assets/ui/rom-spells/800109.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-19","classId":"rom-warlock","group":"primary","unlockLevel":38,"sourceSkillId":498558,"name":"Saces' Embrace","description":"Summons the psychic powers of Saces in a designated area. Inflicts (DMG0) [SC_SKILLTIPS_DARK] on multiple targets within range. Also allows friendly targets in range to resist an amount of damage equal to (Buff4-Shield)% of the caster's healing bonus + 80 points for (Buff4-Time) seconds.","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"focus","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":800110,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621284,621285],"components":[{"id":621284,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":25,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621285,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":179,"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":4,"effect":0,"point":4,"skillLevelArg":100}}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":498558,"name":"Saces' Embrace","description":"Summons the psychic powers of Saces in a designated area. Inflicts (DMG0) [SC_SKILLTIPS_DARK] on multiple targets within range. Also allows friendly targets in range to resist an amount of damage equal to (Buff4-Shield)% of the caster's healing bonus + 80 points for (Buff4-Time) seconds.","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"focus","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":800110,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621284,621285]}}],"sourceFamily":"primary:19","icon":"/assets/ui/rom-spells/800110.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-20","classId":"rom-warlock","group":"primary","unlockLevel":40,"sourceSkillId":498560,"name":"Life Weave","description":"[SC_SKILLTIPS_P2]\nResurrects a friendly target. Can be used during battle.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":800111,"sourceEffectType":0,"sourceTarget":15,"componentIds":[621282],"components":[{"id":621282,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":498560,"name":"Life Weave","description":"[SC_SKILLTIPS_P2]\nResurrects a friendly target. Can be used during battle.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":800111,"sourceEffectType":0,"sourceTarget":15,"componentIds":[621282]}}],"sourceFamily":"primary:20","icon":"/assets/ui/rom-spells/800111.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-61","classId":"rom-warlock","group":"primary","unlockLevel":18,"sourceSkillId":498914,"name":"Sublimation Weave Curse","description":"Weaves psychic energy around all party members and raises all attributes by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800090,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621736],"components":[{"id":621736,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":166,"value":2}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":498914,"name":"Sublimation Weave Curse","description":"Weaves psychic energy around all party members and raises all attributes by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800090,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621736]}}],"sourceFamily":"primary:61","icon":"/assets/ui/rom-spells/800090.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-primary-62","classId":"rom-warlock","group":"primary","unlockLevel":2,"sourceSkillId":498935,"name":"Perplexed","description":"Target stands at original location at wit's end for (Buff0-Time) seconds. \n(For players this effect lasts for (Buff1-Time) seconds.)\n(This effect is broken when damage is received.) \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":2000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800081,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621184,622192],"components":[{"id":621184,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"clearFlags":2,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622192,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":101,"effectFlagWords":[67,0],"clearFlags":2,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":498935,"name":"Perplexed","description":"Target stands at original location at wit's end for (Buff0-Time) seconds. \n(For players this effect lasts for (Buff1-Time) seconds.)\n(This effect is broken when damage is received.) \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":2000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800081,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621184,622192]}}],"sourceFamily":"primary:62","icon":"/assets/ui/rom-spells/800081.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-0","classId":"rom-warlock","group":"general","unlockLevel":1,"sourceSkillId":497957,"name":"Psychic Arrows","description":"Inflicts (DMG0) points of [SC_SKILLTIPS_DARK] on the enemy. \n[SC_SKILLTIPS_9_1S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":800079,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501573,621434],"components":[{"id":501573,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":25,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621434,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-0.4,"attack":{"type":0,"calculationType":4,"damagePower":0,"damagePowerSkillLevelArg":0,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":497957,"name":"Psychic Arrows","description":"Inflicts (DMG0) points of [SC_SKILLTIPS_DARK] on the enemy. \n[SC_SKILLTIPS_9_1S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":800079,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501573,621434]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/800079.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-1","classId":"rom-warlock","group":"general","unlockLevel":1,"sourceSkillId":497959,"name":"Weakening Weave Curse","description":"Inflicts (DMG0) dark damage to up to 3 targets and causes them to be [501577] for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":4000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.85},"source":{"imageId":800082,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501576,501577,621434],"components":[{"id":501576,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-85,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-85,"damagePowerSkillLevelArg":35,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621434,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-0.4,"attack":{"type":0,"calculationType":4,"damagePower":0,"damagePowerSkillLevelArg":0,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":497959,"name":"Weakening Weave Curse","description":"Inflicts (DMG0) dark damage to up to 3 targets and causes them to be [501577] for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":4000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.85},"source":{"imageId":800082,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501576,501577,621434]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/800082.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-2","classId":"rom-warlock","group":"general","unlockLevel":4,"sourceSkillId":497958,"name":"Warp Charge","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] on the enemy. Also increases [SC_SKILLTIPS_DPS] by (Buff4-0)% and [SC_SKILLTIPS_CAST] by (Buff4-1)%. Lasts for (Buff4-Time) seconds. \nIf target is in a [501577] state, damage inflicted is increased by (Buff0-501588)%. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800080,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501574,501575,501577,501588],"components":[{"id":501574,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":35,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501575,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-4},{"type":51,"value":-2}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501588,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":12288,"abilityModifiers":[{"type":192,"value":25}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":497958,"name":"Warp Charge","description":"Inflicts (DMG0) [SC_SKILLTIPS_DARK] on the enemy. Also increases [SC_SKILLTIPS_DPS] by (Buff4-0)% and [SC_SKILLTIPS_CAST] by (Buff4-1)%. Lasts for (Buff4-Time) seconds. \nIf target is in a [501577] state, damage inflicted is increased by (Buff0-501588)%. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800080,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501574,501575,501577,501588]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/800080.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-3","classId":"rom-warlock","group":"passive","unlockLevel":8,"sourceSkillId":497961,"name":"Pure Soul","description":"Increases [SC_SKILLTIPS_INT] by (Current [SC_SKILLTIPS_INT] + (Buff0-0)) x ((Buff0-1)%) + (Buff0-0) points.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800084,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621185],"components":[{"id":621185,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":4,"value":11},{"type":163,"value":1}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":497961,"name":"Pure Soul","description":"Increases [SC_SKILLTIPS_INT] by (Current [SC_SKILLTIPS_INT] + (Buff0-0)) x ((Buff0-1)%) + (Buff0-0) points.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800084,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621185]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/800084.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-4","classId":"rom-warlock","group":"general","unlockLevel":12,"sourceSkillId":497964,"name":"Soul Pain","description":"Inflicts torture upon the target's soul, dealing (Buff0-Dot) of [SC_SKILLTIPS_DARK] every second for (Buff0-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800087,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621188,621446],"components":[{"id":621188,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":24,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":-7,"dot":{"timeSeconds":1,"type":0,"base":-7,"skillLevelArg":80},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621446,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":223,"value":9},{"type":226,"value":9}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":497964,"name":"Soul Pain","description":"Inflicts torture upon the target's soul, dealing (Buff0-Dot) of [SC_SKILLTIPS_DARK] every second for (Buff0-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800087,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621188,621446]}}],"sourceFamily":"general:4","icon":"/assets/ui/rom-spells/800087.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-5","classId":"rom-warlock","group":"general","unlockLevel":16,"sourceSkillId":497966,"name":"Surge of Malice","description":"Unleashes malice on the target. Inflicts (DMG0) of [SC_SKILLTIPS_DARK] on a maximum of 3 targets. \nIf target is in a [501577] state, it also reduces [SC_SKILLTIPS_MOVE] by (Buff4-0)%. Lasts for (Buff4-Time) seconds. \n(If the target is a player, this effect lasts for (Buff5-Time) seconds.) \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800089,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621191,621192,501577,621291],"components":[{"id":621191,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":45,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621192,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621291,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":497966,"name":"Surge of Malice","description":"Unleashes malice on the target. Inflicts (DMG0) of [SC_SKILLTIPS_DARK] on a maximum of 3 targets. \nIf target is in a [501577] state, it also reduces [SC_SKILLTIPS_MOVE] by (Buff4-0)%. Lasts for (Buff4-Time) seconds. \n(If the target is a player, this effect lasts for (Buff5-Time) seconds.) \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800089,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621191,621192,501577,621291]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/800089.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-general-6","classId":"rom-warlock","group":"general","unlockLevel":20,"sourceSkillId":498541,"name":"Saces' Scorn","description":"Saces' thin smile strikes fear into the target's heart. Lasts for (Buff0-Time) seconds. \n(If the target is a player, effect lasts for (Buff1-Time) seconds.) \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800091,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621194,621292],"components":[{"id":621194,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":17,"effectFlagWords":[131091,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621292,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":17,"effectFlagWords":[131091,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":498541,"name":"Saces' Scorn","description":"Saces' thin smile strikes fear into the target's heart. Lasts for (Buff0-Time) seconds. \n(If the target is a player, effect lasts for (Buff1-Time) seconds.) \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800091,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621194,621292]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/800091.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-0","classId":"rom-champion","group":"primary","unlockLevel":2,"sourceSkillId":498523,"name":"Forge","description":"Increases caster's [SC_SKILLTIPS_01] by (Buff0-621168)% when normal attacks hit for a (Buff0-Time) second period. Can be stacked a maximum of 5 times and increases Rage by (Buff-Dot-621169).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589473,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621167,621168,621169],"components":[{"id":621167,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"onAttackTrigger":{"rate":100,"rank":0,"id":498524},"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":850077,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621168,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":134,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621169,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":73,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":10,"dot":{"timeSeconds":1,"type":2,"base":10,"skillLevelArg":5},"attackType":2,"damagePower":3,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":2,"prerequisites":[],"sourceSkillId":498523,"name":"Forge","description":"Increases caster's [SC_SKILLTIPS_01] by (Buff0-621168)% when normal attacks hit for a (Buff0-Time) second period. Can be stacked a maximum of 5 times and increases Rage by (Buff-Dot-621169).","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589473,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621167,621168,621169]}},{"rank":2,"level":22,"prerequisites":[498535],"sourceSkillId":498604,"name":"Forge","description":"Normal attack hits increase caster's [SC_SKILLTIPS_01] by (Buff0-621168)% for (Buff0-Time) seconds. Can be stacked 5 times. Also increases rage by (Buff-Dot-621169) points and has a chance of triggering the effect [621252]. The effect lasts for (Buff-Time-621252) seconds.\n[621252]: Increases the damage inflicted by [498529] by (Buff0-621253)%. In addition the next Curse will be transformed into an instant spell.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589473,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621251,621168,621169,621252,621253],"components":[{"id":621251,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"onAttackTrigger":{"rate":100,"rank":0,"id":498590},"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":850077,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621168,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":134,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621169,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":73,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":10,"dot":{"timeSeconds":1,"type":2,"base":10,"skillLevelArg":5},"attackType":2,"damagePower":3,"fixedValue":0,"summonCreatureId":0},{"id":621252,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,524288],"clearFlags":1056,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621253,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":20},{"type":205,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]}}],"sourceFamily":"primary:0","icon":"/assets/ui/rom-spells/589473.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-1","classId":"rom-champion","group":"primary","unlockLevel":4,"sourceSkillId":498564,"name":"Rune Draw","description":"Uses rune power to drag the target to the front and interrupts its spell casting. Also forces it to concentrate on you and you become the one with the most aggro. It also increases your aggro by (Buff0-622322)%.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":40000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589474,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621215,621223,621224,622322],"components":[{"id":621215,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621223,"magicFunc":7,"magicType":5,"effectType":0,"effectTime":5,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621224,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622322,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":498564,"name":"Rune Draw","description":"Uses rune power to drag the target to the front and interrupts its spell casting. Also forces it to concentrate on you and you become the one with the most aggro. It also increases your aggro by (Buff0-622322)%.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":40000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589474,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621215,621223,621224,622322]}}],"sourceFamily":"primary:1","icon":"/assets/ui/rom-spells/589474.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-2","classId":"rom-champion","group":"primary","unlockLevel":10,"sourceSkillId":498529,"name":"Rune Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on target. When it hits, it will restore (Buff4-Dot) rage. \nIf used while in the [621218] state, the amount of aggro caused by this skill will be increased. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":6000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589478,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621176,621218,621175,622327],"components":[{"id":621176,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":10},"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621175,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":622327,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":0},"attackType":2,"damagePower":5,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":10,"prerequisites":[],"sourceSkillId":498529,"name":"Rune Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on target. When it hits, it will restore (Buff4-Dot) rage. \nIf used while in the [621218] state, the amount of aggro caused by this skill will be increased. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":6000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589478,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621176,621218,621175,622327]}}],"sourceFamily":"primary:2","icon":"/assets/ui/rom-spells/589478.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-3","classId":"rom-champion","group":"primary","unlockLevel":14,"sourceSkillId":498531,"name":"Fearless Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target and adds (Buff4-Dot) rage. When target's HP is less than 30%, this skill's damage is increased by (Buff0-621179)%. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589480,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621178,621183,621179],"components":[{"id":621178,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621183,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":3,"dot":{"timeSeconds":1,"type":2,"base":3,"skillLevelArg":5},"attackType":2,"damagePower":3,"fixedValue":0,"summonCreatureId":0},{"id":621179,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":1,"abilityModifiers":[{"type":173,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":14,"prerequisites":[],"sourceSkillId":498531,"name":"Fearless Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target and adds (Buff4-Dot) rage. When target's HP is less than 30%, this skill's damage is increased by (Buff0-621179)%. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589480,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621178,621183,621179]}}],"sourceFamily":"primary:3","icon":"/assets/ui/rom-spells/589480.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-5","classId":"rom-champion","group":"passive","unlockLevel":18,"sourceSkillId":498563,"name":"Runecraft - Fortify","description":"While in a [621218] state, increases [SC_SKILLTIPS_DEF] by (Buff0-621222)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589483,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621218,621222],"components":[{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621222,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":50331649,"specialActionFlags":0,"assistType":-1,"clearFlags":32,"abilityModifiers":[{"type":135,"value":9}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":498563,"name":"Runecraft - Fortify","description":"While in a [621218] state, increases [SC_SKILLTIPS_DEF] by (Buff0-621222)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589483,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621218,621222]}}],"sourceFamily":"primary:5","icon":"/assets/ui/rom-spells/589483.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-6","classId":"rom-champion","group":"primary","unlockLevel":18,"sourceSkillId":498533,"name":"Rune Energy Influx","description":"Converts rage to life. Restores (DMG0) HP. \nIf used while in [621218], then the amount of aggro caused by attacks is increased by (Buff4-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589484,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621181,621182,621218],"components":[{"id":621181,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":2,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621182,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":15}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":5,"fixedValue":0,"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":18,"prerequisites":[],"sourceSkillId":498533,"name":"Rune Energy Influx","description":"Converts rage to life. Restores (DMG0) HP. \nIf used while in [621218], then the amount of aggro caused by attacks is increased by (Buff4-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589484,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621181,621182,621218]}}],"sourceFamily":"primary:6","icon":"/assets/ui/rom-spells/589484.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-7","classId":"rom-champion","group":"passive","unlockLevel":22,"sourceSkillId":498535,"name":"Chain Drive","description":"While Forge Effect is active, all hits landed by normal attacks have a chance to reset the cooldown time of [498529] and increase damage dealt. In addition the next Curse will be transformed into an instant spell.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589486,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":22,"prerequisites":[],"sourceSkillId":498535,"name":"Chain Drive","description":"While Forge Effect is active, all hits landed by normal attacks have a chance to reset the cooldown time of [498529] and increase damage dealt. In addition the next Curse will be transformed into an instant spell.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589486,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"sourceFamily":"primary:7","icon":"/assets/ui/rom-spells/589486.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-8","classId":"rom-champion","group":"primary","unlockLevel":24,"sourceSkillId":498536,"name":"Rune Growth","description":"When used without the [621218] state, [SC_SKILLTIPS_01] is increased by (Buff1-0)% for (Buff0-Time) seconds.\nWhen used while in a Shield Form state, causes a reduction of [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589487,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621208,621218,621209],"components":[{"id":621208,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":206,"value":-5},{"type":207,"value":-5}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621209,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":24,"prerequisites":[],"sourceSkillId":498536,"name":"Rune Growth","description":"When used without the [621218] state, [SC_SKILLTIPS_01] is increased by (Buff1-0)% for (Buff0-Time) seconds.\nWhen used while in a Shield Form state, causes a reduction of [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589487,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621208,621218,621209]}}],"sourceFamily":"primary:8","icon":"/assets/ui/rom-spells/589487.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-9","classId":"rom-champion","group":"primary","unlockLevel":26,"sourceSkillId":498538,"name":"Agitated Whirlpool","description":"[SC_SKILLTIPS_621218]\nForces multiple targets within a radius of 75 to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622323)%.\nWhen it hits, it will reduce [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff8-0)% for (Buff8-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589488,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621213,621212,621214,622323],"components":[{"id":621213,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621212,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621214,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":5,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":5},{"type":142,"value":5}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622323,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":1}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":26,"prerequisites":[],"sourceSkillId":498538,"name":"Agitated Whirlpool","description":"[SC_SKILLTIPS_621218]\nForces multiple targets within a radius of 75 to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622323)%.\nWhen it hits, it will reduce [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff8-0)% for (Buff8-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589488,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621213,621212,621214,622323]}}],"sourceFamily":"primary:9","icon":"/assets/ui/rom-spells/589488.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-10","classId":"rom-champion","group":"primary","unlockLevel":28,"sourceSkillId":498537,"name":"Vacuum Wave","description":"Silences multiple enemies within a radius of 75 for (Buff4-Time) seconds. \n(If the target is a player, state lasts (Buff5-Time) seconds.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589489,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621210,621211,621287],"components":[{"id":621210,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621211,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621287,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":28,"prerequisites":[],"sourceSkillId":498537,"name":"Vacuum Wave","description":"Silences multiple enemies within a radius of 75 for (Buff4-Time) seconds. \n(If the target is a player, state lasts (Buff5-Time) seconds.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589489,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621210,621211,621287]}}],"sourceFamily":"primary:10","icon":"/assets/ui/rom-spells/589489.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-11","classId":"rom-champion","group":"passive","unlockLevel":30,"sourceSkillId":498539,"name":"Last Line of Defense","description":"When used while in a [621218] state and current HP is less than 30%, it reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621230)% \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589490,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621218,621230],"components":[{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621230,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435523,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":2},{"type":143,"value":2}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[],"sourceSkillId":498539,"name":"Last Line of Defense","description":"When used while in a [621218] state and current HP is less than 30%, it reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621230)% \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589490,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621218,621230]}}],"sourceFamily":"primary:11","icon":"/assets/ui/rom-spells/589490.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-12","classId":"rom-champion","group":"primary","unlockLevel":32,"sourceSkillId":498566,"name":"Imprisonment Pulse","description":"Sets up an imprisonment field in a designated area, inflicting (DMG-621231) main hand weapon physical DPS on targets. Also reduces [SC_SKILLTIPS_MOVE] by (Buff0-621232)% for (Buff-Time-621232) seconds. \nReduces target's [SC_SKILLTIPS_MOVE] by a maximum of (Max-Buff0-621232)%. If the target is a player, this state lasts for (Buff-Time-621290) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589491,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621233,621231,621232,621290],"components":[{"id":621233,"magicFunc":6,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621231,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621232,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0},{"id":621290,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":32,"prerequisites":[],"sourceSkillId":498566,"name":"Imprisonment Pulse","description":"Sets up an imprisonment field in a designated area, inflicting (DMG-621231) main hand weapon physical DPS on targets. Also reduces [SC_SKILLTIPS_MOVE] by (Buff0-621232)% for (Buff-Time-621232) seconds. \nReduces target's [SC_SKILLTIPS_MOVE] by a maximum of (Max-Buff0-621232)%. If the target is a player, this state lasts for (Buff-Time-621290) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589491,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621233,621231,621232,621290]}}],"sourceFamily":"primary:12","icon":"/assets/ui/rom-spells/589491.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-13","classId":"rom-champion","group":"primary","unlockLevel":34,"sourceSkillId":498481,"name":"Kinetic Burn","description":"Heat is dispelled 30 times in an instant. Inflicts (DMG0) main hand weapon physical DPS to targets in range. Also inflicts (Buff4-Dot) [SC_SKILLTIPS_FLAME] damage every 2 seconds. Lasts for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589460,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621085,621254],"components":[{"id":621085,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.2,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.2,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621254,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-3,"dot":{"timeSeconds":2,"type":0,"base":-3,"skillLevelArg":45},"attackType":0,"damagePower":-1,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":34,"prerequisites":[],"sourceSkillId":498481,"name":"Kinetic Burn","description":"Heat is dispelled 30 times in an instant. Inflicts (DMG0) main hand weapon physical DPS to targets in range. Also inflicts (Buff4-Dot) [SC_SKILLTIPS_FLAME] damage every 2 seconds. Lasts for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589460,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621085,621254]}}],"sourceFamily":"primary:13","icon":"/assets/ui/rom-spells/589460.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-14","classId":"rom-champion","group":"primary","unlockLevel":36,"sourceSkillId":498568,"name":"Feedback Defense","description":"[SC_SKILLTIPS_621218]\nActivates a protective shield that lasts for (Buff0-Time) seconds. Raises [SC_SKILLTIPS_DEF] by (Buff0-0)% while in effect. Attacks received are reflected and cause (DMG-621235) main hand weapon physical DPS. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589492,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621234,621235],"components":[{"id":621234,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":498569,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0},{"id":621235,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":0}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.02,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.02,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":498568,"name":"Feedback Defense","description":"[SC_SKILLTIPS_621218]\nActivates a protective shield that lasts for (Buff0-Time) seconds. Raises [SC_SKILLTIPS_DEF] by (Buff0-0)% while in effect. Attacks received are reflected and cause (DMG-621235) main hand weapon physical DPS. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589492,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621234,621235]}}],"sourceFamily":"primary:14","icon":"/assets/ui/rom-spells/589492.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-15","classId":"rom-champion","group":"primary","unlockLevel":36,"sourceSkillId":498570,"name":"Overrule","description":"Provides immunity to the effects of Helpless, Stun, Root and Slow. Lasts (Buff0-Time) seconds. \n(Target must be affected by Movement Impairing Effect or Stun for removal to work.) \n[SC_SKILLTIPS_FEAR]\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589510,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621236],"components":[{"id":621236,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":36,"prerequisites":[],"sourceSkillId":498570,"name":"Overrule","description":"Provides immunity to the effects of Helpless, Stun, Root and Slow. Lasts (Buff0-Time) seconds. \n(Target must be affected by Movement Impairing Effect or Stun for removal to work.) \n[SC_SKILLTIPS_FEAR]\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589510,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621236]}}],"sourceFamily":"primary:15","icon":"/assets/ui/rom-spells/589510.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-16","classId":"rom-champion","group":"primary","unlockLevel":38,"sourceSkillId":498571,"name":"Remodeled Body","description":"[SC_SKILLTIPS_621218]\nCounteracts one fatal blow and restores all HP while in effect. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589493,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621237],"components":[{"id":621237,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[32768,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":38,"prerequisites":[],"sourceSkillId":498571,"name":"Remodeled Body","description":"[SC_SKILLTIPS_621218]\nCounteracts one fatal blow and restores all HP while in effect. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589493,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621237]}}],"sourceFamily":"primary:16","icon":"/assets/ui/rom-spells/589493.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-17","classId":"rom-champion","group":"primary","unlockLevel":40,"sourceSkillId":498572,"name":"Rune Overload","description":"Consumes (Buff0-Dot) points rage every second while in effect. Continuously inflicts (DMG-621243) main hand weapon physical DPS to multiple targets in the immediate vicinity. \n(This effect ceases when rage reaches 0.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589494,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621241,621243],"components":[{"id":621241,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":47,"specialActionFlags":0,"assistType":-1,"clearFlags":1152,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":498574,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":2,"dotBase":-15,"dot":{"timeSeconds":1,"type":2,"base":-15,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621243,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[],"sourceSkillId":498572,"name":"Rune Overload","description":"Consumes (Buff0-Dot) points rage every second while in effect. Continuously inflicts (DMG-621243) main hand weapon physical DPS to multiple targets in the immediate vicinity. \n(This effect ceases when rage reaches 0.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589494,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621241,621243]}}],"sourceFamily":"primary:17","icon":"/assets/ui/rom-spells/589494.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-primary-58","classId":"rom-champion","group":"passive","unlockLevel":8,"sourceSkillId":498525,"name":"Finishing Hammer","description":"Increases damage of one-handed and two-handed hammers by (Buff0-0)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589477,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621161],"components":[{"id":621161,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":62,"value":5},{"type":66,"value":5},{"type":66,"value":0}],"abilitySkillLevelArg":28,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":8,"prerequisites":[],"sourceSkillId":498525,"name":"Finishing Hammer","description":"Increases damage of one-handed and two-handed hammers by (Buff0-0)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589477,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621161]}}],"sourceFamily":"primary:58","icon":"/assets/ui/rom-spells/589477.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-0","classId":"rom-champion","group":"general","unlockLevel":1,"sourceSkillId":498521,"name":"Heavy Bash","description":"Inflicts (DMG0) main hand weapon physical DPS on target. There is also a chance it will cause [621164] when it lands a hit. This reduces [SC_SKILLTIPS_01] and [SC_SKILLTIPS_DEF] by 2%. Lasts (Buff4-Time) seconds. Can be stacked max. 3 times. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589471,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621160,621164],"components":[{"id":621160,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.65,"damagePowerSkillLevelArg":5.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621164,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilityModifiers":[{"type":134,"value":-2},{"type":135,"value":-2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":498521,"name":"Heavy Bash","description":"Inflicts (DMG0) main hand weapon physical DPS on target. There is also a chance it will cause [621164] when it lands a hit. This reduces [SC_SKILLTIPS_01] and [SC_SKILLTIPS_DEF] by 2%. Lasts (Buff4-Time) seconds. Can be stacked max. 3 times. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589471,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621160,621164]}}],"sourceFamily":"general:0","icon":"/assets/ui/rom-spells/589471.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-1","classId":"rom-champion","group":"general","unlockLevel":1,"sourceSkillId":498522,"name":"Electrocution","description":"Inflicts (DMG0) main hand weapon physical DPS on target. Also invokes a state of [621166] and interrupts target's spell casting. Lasts (Buff5-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589472,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621165,621396,621166],"components":[{"id":621165,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621396,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilityModifiers":[{"type":226,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621166,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":1,"prerequisites":[],"sourceSkillId":498522,"name":"Electrocution","description":"Inflicts (DMG0) main hand weapon physical DPS on target. Also invokes a state of [621166] and interrupts target's spell casting. Lasts (Buff5-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589472,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621165,621396,621166]}}],"sourceFamily":"general:1","icon":"/assets/ui/rom-spells/589472.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-2","classId":"rom-champion","group":"passive","unlockLevel":4,"sourceSkillId":498527,"name":"Hammer Weapon Proficiency","description":"Hammer weapons can be equipped.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589475,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621173],"components":[{"id":621173,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":89,"value":1},{"type":93,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":4,"prerequisites":[],"sourceSkillId":498527,"name":"Hammer Weapon Proficiency","description":"Hammer weapons can be equipped.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589475,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621173]}}],"sourceFamily":"general:2","icon":"/assets/ui/rom-spells/589475.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-3","classId":"rom-champion","group":"general","unlockLevel":6,"sourceSkillId":498526,"name":"Energy Influx Strike","description":"Adds a Charge Rune to your attacks. Inflicts (DMG0) main hand weapon DPS physical damage on targets. \nIf target is in an [621166] state, this attack lands a critical hit. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589476,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621163,621166,621396,621162],"components":[{"id":621163,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":7,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-12},{"type":135,"value":-12}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":100,"hateRate":1},"summonCreatureId":0},{"id":621166,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621396,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilityModifiers":[{"type":226,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621162,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":7,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-8},{"type":135,"value":-8}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":6,"prerequisites":[],"sourceSkillId":498526,"name":"Energy Influx Strike","description":"Adds a Charge Rune to your attacks. Inflicts (DMG0) main hand weapon DPS physical damage on targets. \nIf target is in an [621166] state, this attack lands a critical hit. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589476,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621163,621166,621396,621162]}}],"sourceFamily":"general:3","icon":"/assets/ui/rom-spells/589476.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-5","classId":"rom-champion","group":"passive","unlockLevel":12,"sourceSkillId":498530,"name":"Runecraft - Diversion","description":"Increases [SC_SKILLTIPS_PARRY] by (Buff0-0) points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589479,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621177],"components":[{"id":621177,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":75}],"abilitySkillLevelArg":15,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":12,"prerequisites":[],"sourceSkillId":498530,"name":"Runecraft - Diversion","description":"Increases [SC_SKILLTIPS_PARRY] by (Buff0-0) points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589479,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621177]}}],"sourceFamily":"general:5","icon":"/assets/ui/rom-spells/589479.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-6","classId":"rom-champion","group":"passive","unlockLevel":16,"sourceSkillId":498532,"name":"Runecraft - Solidify","description":"Increases your stamina. (Current stamina + (Buff0-0) x (Buff0-1)% + (Buff0-0)) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589481,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621180],"components":[{"id":621180,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":3,"value":11},{"type":162,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":16,"prerequisites":[],"sourceSkillId":498532,"name":"Runecraft - Solidify","description":"Increases your stamina. (Current stamina + (Buff0-0) x (Buff0-1)% + (Buff0-0)) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589481,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621180]}}],"sourceFamily":"general:6","icon":"/assets/ui/rom-spells/589481.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-general-7","classId":"rom-champion","group":"general","unlockLevel":20,"sourceSkillId":498534,"name":"Shock Strike","description":"Inflicts (DMG0) main hand weapon physical DPS on multiple targets within a range of 100 in a fan-shaped area in front of you. Also Stuns targets for (Buff4-Time) seconds. \nIf used while in a [621218], then there is an extra increase of aggro caused by this skill.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589485,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621206,621218,621205,621207],"components":[{"id":621206,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":10},"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621205,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621207,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777299,0],"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[],"sourceSkillId":498534,"name":"Shock Strike","description":"Inflicts (DMG0) main hand weapon physical DPS on multiple targets within a range of 100 in a fan-shaped area in front of you. Also Stuns targets for (Buff4-Time) seconds. \nIf used while in a [621218], then there is an extra increase of aggro caused by this skill.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589485,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621206,621218,621205,621207]}}],"sourceFamily":"general:7","icon":"/assets/ui/rom-spells/589485.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-15","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":545920,"sourceSkillId":498528,"name":"Arc Strike","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If target is in the [621166] state, then caster will earn an extra (Buff-Dot-621250) rage. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":5,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589495,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621225,621166,621250],"components":[{"id":621225,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621166,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621250,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":25,"dot":{"timeSeconds":1,"type":2,"base":25,"skillLevelArg":0},"attackType":2,"damagePower":25,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":498528,"name":"Arc Strike","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If target is in the [621166] state, then caster will earn an extra (Buff-Dot-621250) rage. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":5,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589495,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621225,621166,621250]}}],"icon":"/assets/ui/rom-spells/589495.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-20","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":545921,"sourceSkillId":498580,"name":"Rune Aggregation","description":"Using Enrage allows you to increase rage accumulation speed.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589496,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":498580,"name":"Rune Aggregation","description":"Using Enrage allows you to increase rage accumulation speed.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589496,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/589496.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-25","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":545922,"sourceSkillId":498582,"name":"Power Slash","description":"Your slash causes the target to suffer the effects of [621166].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589497,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621166],"components":[{"id":621166,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":498582,"name":"Power Slash","description":"Your slash causes the target to suffer the effects of [621166].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589497,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621166]}}],"icon":"/assets/ui/rom-spells/589497.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-30","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":545923,"sourceSkillId":498584,"name":"Determination Rune","description":"Use the power of this rune to protect yourself. It counteracts an amount of damage equal to (Buff0-Shield)% of Maximum HP for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":589498,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621246],"components":[{"id":621246,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":490363,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":2,"skillLevelArg":28}}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":498584,"name":"Determination Rune","description":"Use the power of this rune to protect yourself. It counteracts an amount of damage equal to (Buff0-Shield)% of Maximum HP for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":589498,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621246]}}],"icon":"/assets/ui/rom-spells/589498.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-35","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":545924,"sourceSkillId":498585,"name":"Eye for an Eye","description":"Temporarily increases parry rate by (Buff0-0)%. Lasts for (Buff0-Time) seconds. \nWhile in effect, successful parries have a chance of resetting [498522] and [498526]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589499,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621247],"components":[{"id":621247,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":227,"value":5}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":498585,"name":"Eye for an Eye","description":"Temporarily increases parry rate by (Buff0-0)%. Lasts for (Buff0-Time) seconds. \nWhile in effect, successful parries have a chance of resetting [498522] and [498526]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589499,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621247]}}],"icon":"/assets/ui/rom-spells/589499.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-40","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":545925,"sourceSkillId":498586,"name":"Superior Suppression","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If your HP ratio is higher than the targets when you land a hit, this skill will also raise [SC_SKILLTIPS_CRI] by (Buff0-621255) points. Lasts for (Buff-Time-621255) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589500,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621248,621249,621255],"components":[{"id":621248,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621249,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621255,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493092,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":498586,"name":"Superior Suppression","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If your HP ratio is higher than the targets when you land a hit, this skill will also raise [SC_SKILLTIPS_CRI] by (Buff0-621255) points. Lasts for (Buff-Time-621255) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589500,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621248,621249,621255]}}],"icon":"/assets/ui/rom-spells/589500.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-45","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":545926,"sourceSkillId":498588,"name":"Runecraft - Charge","description":"There is a chance that [498572] will stun the enemy when it hits.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589508,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621256],"components":[{"id":621256,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":498588,"name":"Runecraft - Charge","description":"There is a chance that [498572] will stun the enemy when it hits.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589508,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621256]}}],"icon":"/assets/ui/rom-spells/589508.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-50","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":545927,"sourceSkillId":498589,"name":"Enhancement Shield","description":"Using the Determination Rune while in a [621218] state increases damage resistance and reduces received damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589509,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621258,621218],"components":[{"id":621258,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621218,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268435607,"specialActionFlags":0,"assistType":187,"clearFlags":48,"abilityModifiers":[{"type":0,"value":10}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":498517,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":498753,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":498589,"name":"Enhancement Shield","description":"Using the Determination Rune while in a [621218] state increases damage resistance and reduces received damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589509,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621258,621218]}}],"icon":"/assets/ui/rom-spells/589509.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-60","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":60,"keyItemId":546853,"sourceSkillId":499850,"name":"Blast of Vengeance","description":"Consumes half of caster's HP and attempts to Taunt all enemies in a range of 200. If the Taunt is successful, the caster will be unable to move for (Buff4-Time) seconds.\n[SC_SKILLTIPS_621218]","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801640,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623390,621685],"components":[{"id":623390,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498583],"sourceSkillId":499850,"name":"Blast of Vengeance","description":"Consumes half of caster's HP and attempts to Taunt all enemies in a range of 200. If the Taunt is successful, the caster will be unable to move for (Buff4-Time) seconds.\n[SC_SKILLTIPS_621218]","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801640,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623390,621685]}}],"icon":"/assets/ui/rom-spells/801640.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warrior-elite-70","classId":"rom-champion","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":70,"keyItemId":546854,"sourceSkillId":499848,"name":"Deadland Protection","description":"Increases caster's [SC_SKILLTIPS_DEF] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [623400] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801641,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623400],"components":[{"id":623400,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":2,"abilityModifiers":[{"type":135,"value":100},{"type":144,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498583],"sourceSkillId":499848,"name":"Deadland Protection","description":"Increases caster's [SC_SKILLTIPS_DEF] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [623400] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801641,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623400]}}],"icon":"/assets/ui/rom-spells/801641.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-15","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":15,"keyItemId":545928,"sourceSkillId":498725,"name":"Vicious Attack","description":"Makes your Shadowstab cause additional damage, but cancels Bleed effects.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581940,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":498725,"name":"Vicious Attack","description":"Makes your Shadowstab cause additional damage, but cancels Bleed effects.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581940,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581940.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-20","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":545929,"sourceSkillId":498726,"name":"Shadow Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on target. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581941,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621470,622365,622364],"components":[{"id":621470,"magicFunc":0,"magicType":5,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":6.2,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":622365,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":53,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622364,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":45},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":498726,"name":"Shadow Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on target. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581941,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621470,622365,622364]}}],"icon":"/assets/ui/rom-spells/581941.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-25","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":545930,"sourceSkillId":498727,"name":"Shadow Drive","description":"When Chain Drive effect is activated, the cooldown time for Shadow Pulse will be reset.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581942,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":498727,"name":"Shadow Drive","description":"When Chain Drive effect is activated, the cooldown time for Shadow Pulse will be reset.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581942,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581942.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-30","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":545931,"sourceSkillId":498728,"name":"Waiting Game","description":"Reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% and reduces received area damage by (Buff0-2)% for (Buff0-Time) seconds. While skill is in effect, attacks won't have Waiting Game effect and Attack Launch effect will be earned. This increases the damage caused by your next attack by (Buff0-621472)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581943,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621471,621472],"components":[{"id":621471,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":12289,"abilityModifiers":[{"type":206,"value":-5},{"type":207,"value":-5},{"type":209,"value":-8}],"abilitySkillLevelArg":6,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498729,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621472,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435523,"specialActionFlags":0,"assistType":-1,"clearFlags":12289,"abilityModifiers":[{"type":173,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":498728,"name":"Waiting Game","description":"Reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)% and reduces received area damage by (Buff0-2)% for (Buff0-Time) seconds. While skill is in effect, attacks won't have Waiting Game effect and Attack Launch effect will be earned. This increases the damage caused by your next attack by (Buff0-621472)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581943,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621471,621472]}}],"icon":"/assets/ui/rom-spells/581943.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-35","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":35,"keyItemId":545932,"sourceSkillId":498731,"name":"Sentence Execution","description":"Enhances Fearless Blow and reduces its cooldown time by 10 seconds. When the target's HP falls below 45%, damage caused by Fearless Blow will be increased.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581944,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":498731,"name":"Sentence Execution","description":"Enhances Fearless Blow and reduces its cooldown time by 10 seconds. When the target's HP falls below 45%, damage caused by Fearless Blow will be increased.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581944,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581944.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-40","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":40,"keyItemId":545933,"sourceSkillId":498737,"name":"Runecraft - Haste","description":"Increases off hand weapon accuracy level by (Buff0-0)% and off hand weapon damage by (Buff0-1)%. \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581945,"sourceEffectType":2,"sourceTarget":6,"componentIds":[621481],"components":[{"id":621481,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":12289,"abilityModifiers":[{"type":36,"value":3},{"type":37,"value":3}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":498737,"name":"Runecraft - Haste","description":"Increases off hand weapon accuracy level by (Buff0-0)% and off hand weapon damage by (Buff0-1)%. \n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581945,"sourceEffectType":2,"sourceTarget":6,"componentIds":[621481]}}],"icon":"/assets/ui/rom-spells/581945.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-45","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":545934,"sourceSkillId":498738,"name":"Disaster Appears","description":"Increases [SC_SKILLTIPS_CRI_POWER] and [SC_SKILLTIPS_DPS] after Shadow Step is used.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581946,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":498738,"name":"Disaster Appears","description":"Increases [SC_SKILLTIPS_CRI_POWER] and [SC_SKILLTIPS_DPS] after Shadow Step is used.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581946,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581946.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-50","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":545935,"sourceSkillId":498730,"name":"Death Arrives","description":"Instantly recovers rage and energy by (Buff4-Dot). Also restores (Buff4-Dot) rage and energy every 5 seconds for (Buff4-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581947,"sourceEffectType":1,"sourceTarget":0,"componentIds":[622191,621485,621486],"components":[{"id":622191,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621485,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":5,"dotType":2,"dotBase":100,"dot":{"timeSeconds":5,"type":2,"base":100,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621486,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":41,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":5,"dotType":4,"dotBase":100,"dot":{"timeSeconds":5,"type":4,"base":100,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":498730,"name":"Death Arrives","description":"Instantly recovers rage and energy by (Buff4-Dot). Also restores (Buff4-Dot) rage and energy every 5 seconds for (Buff4-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581947,"sourceEffectType":1,"sourceTarget":0,"componentIds":[622191,621485,621486]}}],"icon":"/assets/ui/rom-spells/581947.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-60","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":60,"keyItemId":546855,"sourceSkillId":499846,"name":"Smoke Diffusion","description":"Consumes half of caster's HP and lets all party members in range disappear for (Buff-Time-623401) seconds. The caster is unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801642,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623401,623693,621685,623389],"components":[{"id":623401,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623693,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":524288,"specialActionFlags":16,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623389,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498733],"sourceSkillId":499846,"name":"Smoke Diffusion","description":"Consumes half of caster's HP and lets all party members in range disappear for (Buff-Time-623401) seconds. The caster is unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801642,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623401,623693,621685,623389]}}],"icon":"/assets/ui/rom-spells/801642.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-rogue-elite-70","classId":"rom-champion","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":70,"keyItemId":546856,"sourceSkillId":499844,"name":"Shadow Explosion","description":"Increases caster's [SC_SKILLTIPS_01] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [499844] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801643,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623402],"components":[{"id":623402,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":35,"specialActionFlags":0,"assistType":42,"abilityModifiers":[{"type":134,"value":50},{"type":144,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498733],"sourceSkillId":499844,"name":"Shadow Explosion","description":"Increases caster's [SC_SKILLTIPS_01] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [499844] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801643,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623402]}}],"icon":"/assets/ui/rom-spells/801643.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-15","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":545936,"sourceSkillId":498656,"name":"Backlash Armor","description":"For (Buff0-Time) seconds, inflicts (DMG-621344) main hand weapon DPS on targets within range with each successful block and reduces their [SC_SKILLTIPS_DPS] by (Buff0-621346)% for (Buff-Time-621346) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589519,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621345,621344,621346],"components":[{"id":621345,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621344,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621346,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":45}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":498656,"name":"Backlash Armor","description":"For (Buff0-Time) seconds, inflicts (DMG-621344) main hand weapon DPS on targets within range with each successful block and reduces their [SC_SKILLTIPS_DPS] by (Buff0-621346)% for (Buff-Time-621346) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589519,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621345,621344,621346]}}],"icon":"/assets/ui/rom-spells/589519.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-20","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":545937,"sourceSkillId":498658,"name":"Suppression Offensive","description":"Overwhelming attack that inflicts (DMG0) main hand weapon DPS on all enemies near a straight line between the caster and the target. Also reduces current target's weapon damage by (Buff4-0)% for (Buff4-Time). \n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589520,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621347,621348,621411,621355],"components":[{"id":621347,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621348,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":-100},{"type":37,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621411,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":50,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621355,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":2}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":498658,"name":"Suppression Offensive","description":"Overwhelming attack that inflicts (DMG0) main hand weapon DPS on all enemies near a straight line between the caster and the target. Also reduces current target's weapon damage by (Buff4-0)% for (Buff4-Time). \n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589520,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621347,621348,621411,621355]}}],"icon":"/assets/ui/rom-spells/589520.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-25","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":545938,"sourceSkillId":498659,"name":"Endless Rage","description":"Can be used during a successful dodge. Increases rage by (Buff4-Dot) and makes the next attack a critical attack.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589521,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621351,621350],"components":[{"id":621351,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,64],"clearFlags":13313,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621350,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":73,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":10,"dot":{"timeSeconds":1,"type":2,"base":10,"skillLevelArg":0},"attackType":2,"damagePower":20,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":498659,"name":"Endless Rage","description":"Can be used during a successful dodge. Increases rage by (Buff4-Dot) and makes the next attack a critical attack.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589521,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621351,621350]}}],"icon":"/assets/ui/rom-spells/589521.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-30","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":545939,"sourceSkillId":498682,"name":"Key Rescue","description":"Reduces a party member's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%. Lasts for (Buff0-Time) seconds. When this party member is hit during the time of the effect, your current [498564] cooldown time will be reduced by 12 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":17,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589522,"sourceEffectType":0,"sourceTarget":1,"componentIds":[621353],"components":[{"id":621353,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":142,"value":10},{"type":143,"value":10}],"abilitySkillLevelArg":6,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":498913,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":498682,"name":"Key Rescue","description":"Reduces a party member's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-0)%. Lasts for (Buff0-Time) seconds. When this party member is hit during the time of the effect, your current [498564] cooldown time will be reduced by 12 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":17,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589522,"sourceEffectType":0,"sourceTarget":1,"componentIds":[621353]}}],"icon":"/assets/ui/rom-spells/589522.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-35","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":35,"keyItemId":545940,"sourceSkillId":498683,"name":"Bloody Experience","description":"For (Buff0-Time) seconds, the damage that is caused by your next use of [498658] will be converted to your HP and increase your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)%. When the skill hits, it will stun the target for (Buff-Time-621412) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589523,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621355,621412],"components":[{"id":621355,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":2}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621412,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777299,0],"clearFlags":1024,"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":498683,"name":"Bloody Experience","description":"For (Buff0-Time) seconds, the damage that is caused by your next use of [498658] will be converted to your HP and increase your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)%. When the skill hits, it will stun the target for (Buff-Time-621412) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589523,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621355,621412]}}],"icon":"/assets/ui/rom-spells/589523.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-40","classId":"rom-champion","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":545941,"sourceSkillId":498684,"name":"Obstacle Force Field","description":"Each time [498685] hits the target, the target's casting time is extended and skill cost is increased.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589524,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":498684,"name":"Obstacle Force Field","description":"Each time [498685] hits the target, the target's casting time is extended and skill cost is increased.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589524,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/589524.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-45","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":545942,"sourceSkillId":498687,"name":"High-Energy Barrier","description":"Uses energy to protect the target. Resists an amount of damage equal to (Buff0-Shield)% of Maximum HP for (Buff0-Time) seconds. Also increases [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% and [SC_SKILLTIPS_DMG] by (Buff0-0)%. When the effect ends, it deals (DMG-621419) main hand weapon physical DPS on targets in range and roots them for (Buff-Time-621420) seconds.\n[SC_SKILLTIPS_LEVEL50]\n[SC_SKILLTIPS_03]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":589525,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621416,621418,621419,621420],"components":[{"id":621416,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":483,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":173,"value":3},{"type":144,"value":5}],"abilitySkillLevelArg":6,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498688,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":2,"skillLevelArg":28}},{"id":621418,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"clearFlags":1072,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621419,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621420,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":498687,"name":"High-Energy Barrier","description":"Uses energy to protect the target. Resists an amount of damage equal to (Buff0-Shield)% of Maximum HP for (Buff0-Time) seconds. Also increases [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% and [SC_SKILLTIPS_DMG] by (Buff0-0)%. When the effect ends, it deals (DMG-621419) main hand weapon physical DPS on targets in range and roots them for (Buff-Time-621420) seconds.\n[SC_SKILLTIPS_LEVEL50]\n[SC_SKILLTIPS_03]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":589525,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621416,621418,621419,621420]}}],"icon":"/assets/ui/rom-spells/589525.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-50","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":545943,"sourceSkillId":498690,"name":"Rapid Spread","description":"Inflicts (DMG0) main hand weapon physical DPS on target. Also increases [SC_SKILLTIPS_PARRY] by (Buff4-1) and [SC_SKILLTIPS_DOGE] by (Buff4-0) for (Buff4-Time) seconds. \nIf the target is being affected by Suppression Offensive, then this skill will also cause (DMG0) main hand weapon physical DPS on nearby targets. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":36,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589526,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621422,621423],"components":[{"id":621422,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621423,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":17,"value":16},{"type":22,"value":16}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":498690,"name":"Rapid Spread","description":"Inflicts (DMG0) main hand weapon physical DPS on target. Also increases [SC_SKILLTIPS_PARRY] by (Buff4-1) and [SC_SKILLTIPS_DOGE] by (Buff4-0) for (Buff4-Time) seconds. \nIf the target is being affected by Suppression Offensive, then this skill will also cause (DMG0) main hand weapon physical DPS on nearby targets. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":36,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589526,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621422,621423]}}],"icon":"/assets/ui/rom-spells/589526.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-60","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":60,"keyItemId":546857,"sourceSkillId":499842,"name":"Elemental Rampage","description":"Consumes half of caster's HP, attempts to deal a high amount of damage to all enemies in a range of 200 and reduce their resistance by (Buff0-623404) and defense by (Buff1-623404)%. If the damage has been dealt successfully, the caster will not be able to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":801644,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623403,623404,621685,623389],"components":[{"id":623403,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-100,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623404,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":220,"value":-10},{"type":135,"value":-10},{"type":170,"value":-10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623389,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499842,"name":"Elemental Rampage","description":"Consumes half of caster's HP, attempts to deal a high amount of damage to all enemies in a range of 200 and reduce their resistance by (Buff0-623404) and defense by (Buff1-623404)%. If the damage has been dealt successfully, the caster will not be able to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":801644,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623403,623404,621685,623389]}}],"icon":"/assets/ui/rom-spells/801644.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-mage-elite-70","classId":"rom-champion","secondaryClassId":"rom-mage","group":"elite","unlockLevel":70,"keyItemId":546858,"sourceSkillId":499840,"name":"Elemental Defense","description":"Increases caster's [SC_SKILLTIPS_MDEF] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [499840] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801645,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623407],"components":[{"id":623407,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":97,"abilityModifiers":[{"type":170,"value":100},{"type":144,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499840,"name":"Elemental Defense","description":"Increases caster's [SC_SKILLTIPS_MDEF] by (Buff0-0)%. While in effect, any healing received is reduced by (Buff0-1)%.\n(Right click the [499840] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801645,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623407]}}],"icon":"/assets/ui/rom-spells/801645.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-15","classId":"rom-champion","secondaryClassId":"rom-priest","group":"passive","unlockLevel":15,"keyItemId":545944,"sourceSkillId":498712,"name":"Runecraft - Devotion","description":"Extends the effect time of Holy Aura by 1 second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575748,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":498712,"name":"Runecraft - Devotion","description":"Extends the effect time of Holy Aura by 1 second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575748,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575748.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-20","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":545945,"sourceSkillId":498715,"name":"Divine Vengeance","description":"[SC_SKILLTIPS_621218]\nThere is a chance to use this when attacked while in a Shield Form state. Inflicts (DMG0) main hand weapon physical DPS on target and reduces the cooldown time for Holy Aura by (Buff-Time-621676) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575711,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621427,621428,621458,621676],"components":[{"id":621427,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":4},"summonCreatureId":0},{"id":621428,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621458,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":162,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621676,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":498715,"name":"Divine Vengeance","description":"[SC_SKILLTIPS_621218]\nThere is a chance to use this when attacked while in a Shield Form state. Inflicts (DMG0) main hand weapon physical DPS on target and reduces the cooldown time for Holy Aura by (Buff-Time-621676) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575711,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621427,621428,621458,621676]}}],"icon":"/assets/ui/rom-spells/575711.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-25","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":25,"keyItemId":545946,"sourceSkillId":498716,"name":"Rune Energy Consecration","description":"Restores (Buff-Dot-621429)% MP every 2 seconds and restores (Buff-Dot-621453) rage, (Buff-Dot-621455) energy, (Buff-Dot-621456) focus and (Buff-Dot-621430)% MP for all party members within a range of 200. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575712,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621429,621454,621453,621455,621456,621430],"components":[{"id":621429,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":239,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498717,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":850053,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":2,"dotType":6,"dotBase":3,"dot":{"timeSeconds":2,"type":6,"base":3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621454,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":524389,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498718,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621453,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":2,"dotBase":5,"dot":{"timeSeconds":2,"type":2,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621455,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":4,"dotBase":5,"dot":{"timeSeconds":2,"type":4,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621456,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":3,"dotBase":5,"dot":{"timeSeconds":2,"type":3,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621430,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":6,"dotBase":3,"dot":{"timeSeconds":2,"type":6,"base":3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":498716,"name":"Rune Energy Consecration","description":"Restores (Buff-Dot-621429)% MP every 2 seconds and restores (Buff-Dot-621453) rage, (Buff-Dot-621455) energy, (Buff-Dot-621456) focus and (Buff-Dot-621430)% MP for all party members within a range of 200. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575712,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621429,621454,621453,621455,621456,621430]}}],"icon":"/assets/ui/rom-spells/575712.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-30","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":545947,"sourceSkillId":498719,"name":"Salvation Engraving","description":"Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of nearby party members by (Buff0-0)%. Also reduces any aggro, inflicted while in effect, by (Buff0-2)%. Lasts for (Buff0-Time) seconds. \n(This skill has no effect on the caster.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575713,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621457],"components":[{"id":621457,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":5},{"type":143,"value":5},{"type":138,"value":-5}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":498719,"name":"Salvation Engraving","description":"Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of nearby party members by (Buff0-0)%. Also reduces any aggro, inflicted while in effect, by (Buff0-2)%. Lasts for (Buff0-Time) seconds. \n(This skill has no effect on the caster.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575713,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621457]}}],"icon":"/assets/ui/rom-spells/575713.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-35","classId":"rom-champion","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":545948,"sourceSkillId":498720,"name":"Way of Frenzy","description":"When Divine Vengeance hits, this skill increases stamina by an extra (Buff0-621458)%. This skill can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575716,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621458],"components":[{"id":621458,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":162,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":498720,"name":"Way of Frenzy","description":"When Divine Vengeance hits, this skill increases stamina by an extra (Buff0-621458)%. This skill can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575716,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621458]}}],"icon":"/assets/ui/rom-spells/575716.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-40","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":40,"keyItemId":545949,"sourceSkillId":498721,"name":"Light Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on nearby targets and restores (DMG-621459) HP for nearby party members. The higher your stamina, the more HP is restored. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575719,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621460,621461,621459],"components":[{"id":621460,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621461,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621459,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":6,"fixedValue":0.2,"attack":{"type":0,"calculationType":5,"damagePower":6,"damagePowerSkillLevelArg":5,"fixedValue":0.2,"fixedType":8,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":498721,"name":"Light Pulse","description":"Inflicts (DMG0) main hand weapon physical DPS on nearby targets and restores (DMG-621459) HP for nearby party members. The higher your stamina, the more HP is restored. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575719,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621460,621461,621459]}}],"icon":"/assets/ui/rom-spells/575719.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-45","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":45,"keyItemId":545950,"sourceSkillId":498722,"name":"Suicide Advance","description":"Sacrifices the caster's defense to increase the attack of him and his party members. Reduces the caster's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)%. Also increases the [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] of the caster and nearby party members by (Buff4-0)%. Lasts for (Buff0-Time). \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575737,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621462,621463],"components":[{"id":621462,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"clearFlags":1024,"abilityModifiers":[{"type":135,"value":-5},{"type":170,"value":-5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621463,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"clearFlags":1024,"abilityModifiers":[{"type":173,"value":5},{"type":192,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":498722,"name":"Suicide Advance","description":"Sacrifices the caster's defense to increase the attack of him and his party members. Reduces the caster's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)%. Also increases the [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] of the caster and nearby party members by (Buff4-0)%. Lasts for (Buff0-Time). \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575737,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621462,621463]}}],"icon":"/assets/ui/rom-spells/575737.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-50","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":545951,"sourceSkillId":498723,"name":"Holy Attack","description":"Inflicts (DMG0) main hand weapon physical DPS on target and randomly removes a negative magic, curse or poison effect from a party member. \n(Only one of these effects will appear at a time.) \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575747,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621464,621465],"components":[{"id":621464,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621465,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":498723,"name":"Holy Attack","description":"Inflicts (DMG0) main hand weapon physical DPS on target and randomly removes a negative magic, curse or poison effect from a party member. \n(Only one of these effects will appear at a time.) \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":27,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575747,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621464,621465]}}],"icon":"/assets/ui/rom-spells/575747.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-60","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":60,"keyItemId":546859,"sourceSkillId":499838,"name":"Reviving Blast","description":"Consumes half of caster's HP and recovers (DMG-623408) HP of all party members in range. The caster will be unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.6},"source":{"imageId":801646,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623408,621685,623389],"components":[{"id":623408,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":60,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":60,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623389,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499838,"name":"Reviving Blast","description":"Consumes half of caster's HP and recovers (DMG-623408) HP of all party members in range. The caster will be unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.6},"source":{"imageId":801646,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623408,621685,623389]}}],"icon":"/assets/ui/rom-spells/801646.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-priest-elite-70","classId":"rom-champion","secondaryClassId":"rom-priest","group":"elite","unlockLevel":70,"keyItemId":546860,"sourceSkillId":499836,"name":"Righteous Explosion","description":"Casting takes 3 seconds and removes all harmful effects from all party members in range.","target":"self","range":15,"castTimeMs":3000,"cooldownMs":30000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801647,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623412],"components":[{"id":623412,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499836,"name":"Righteous Explosion","description":"Casting takes 3 seconds and removes all harmful effects from all party members in range.","target":"self","range":15,"castTimeMs":3000,"cooldownMs":30000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801647,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623412]}}],"icon":"/assets/ui/rom-spells/801647.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-15","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":15,"keyItemId":545952,"sourceSkillId":498593,"name":"Endless Pulse","description":"Consumes an extra 40% of current HP and increases [SC_SKILLTIPS_DPS] by (Buff0-0)%. Also recovers (Buff0-Dot)% HP every 2 seconds for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589511,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621260],"components":[{"id":621260,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-2}],"abilitySkillLevelArg":5,"dotTime":2,"dotType":5,"dotBase":5,"dot":{"timeSeconds":2,"type":5,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498593,"name":"Endless Pulse","description":"Consumes an extra 40% of current HP and increases [SC_SKILLTIPS_DPS] by (Buff0-0)%. Also recovers (Buff0-Dot)% HP every 2 seconds for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589511,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621260]}}],"icon":"/assets/ui/rom-spells/589511.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-20","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":20,"keyItemId":545953,"sourceSkillId":498595,"name":"Rune Siphon","description":"Inflicts (DMG0) main hand weapon physical DPS and (DMG4) [SC_SKILLTIPS_DARK] to a target. Also restores (DMG8) HP to the caster. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589512,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621262,621263,621264],"components":[{"id":621262,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621263,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":1,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621264,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":20,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":20,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498595,"name":"Rune Siphon","description":"Inflicts (DMG0) main hand weapon physical DPS and (DMG4) [SC_SKILLTIPS_DARK] to a target. Also restores (DMG8) HP to the caster. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":10,"percentage":false},{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589512,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621262,621263,621264]}}],"icon":"/assets/ui/rom-spells/589512.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-25","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":25,"keyItemId":545954,"sourceSkillId":498596,"name":"Psychic Forge","description":"Restores focus while increasing rage. Can be stacked a maximum of 7 times.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589513,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498596,"name":"Psychic Forge","description":"Restores focus while increasing rage. Can be stacked a maximum of 7 times.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":589513,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/589513.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-30","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":30,"keyItemId":545955,"sourceSkillId":498599,"name":"Dark Energy Strike","description":"Inflicts (DMG0) main hand weapon physical DPS and (DMG4) [SC_SKILLTIPS_DARK] on target. Also carries a chance to reset your Rune Siphon's cooldown time. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589514,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621305,621306,621307],"components":[{"id":621305,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621306,"magicFunc":0,"magicType":5,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":1,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621307,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498599,"name":"Dark Energy Strike","description":"Inflicts (DMG0) main hand weapon physical DPS and (DMG4) [SC_SKILLTIPS_DARK] on target. Also carries a chance to reset your Rune Siphon's cooldown time. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":589514,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621305,621306,621307]}}],"icon":"/assets/ui/rom-spells/589514.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-35","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":35,"keyItemId":545956,"sourceSkillId":498600,"name":"Indomitable Spirit","description":"Can only be used when HP is less than 65%. The following 3 Dark Energy Strikes cause double the damage. Also restores (DMG-621310) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589515,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621309,621310],"components":[{"id":621309,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621310,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":2,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":2,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498600,"name":"Indomitable Spirit","description":"Can only be used when HP is less than 65%. The following 3 Dark Energy Strikes cause double the damage. Also restores (DMG-621310) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":589515,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621309,621310]}}],"icon":"/assets/ui/rom-spells/589515.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-40","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":40,"keyItemId":545957,"sourceSkillId":498651,"name":"Heart Collection Rune","description":"Immediately resets the cooldown time for Rune Siphon and increases the damage by (Buff0-621338)% the next time it's used. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589516,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621336,621337,621338],"components":[{"id":621336,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":35,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621337,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621338,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":65,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":2}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498651,"name":"Heart Collection Rune","description":"Immediately resets the cooldown time for Rune Siphon and increases the damage by (Buff0-621338)% the next time it's used. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589516,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621336,621337,621338]}}],"icon":"/assets/ui/rom-spells/589516.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-45","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":45,"keyItemId":545958,"sourceSkillId":498652,"name":"Soul Forge Mystery","description":"Increases [SC_SKILLTIPS_CRI] by (Buff0-0) for (Buff0-Time) seconds. If critical attack occurs while in effect, it increases dark attribute magic power by (Buff0-621341)% for (Buff-Time-621341) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-621342)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589517,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621339,621341,621342],"components":[{"id":621339,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621341,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":50,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621342,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":498652,"name":"Soul Forge Mystery","description":"Increases [SC_SKILLTIPS_CRI] by (Buff0-0) for (Buff0-Time) seconds. If critical attack occurs while in effect, it increases dark attribute magic power by (Buff0-621341)% for (Buff-Time-621341) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-621342)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589517,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621339,621341,621342]}}],"icon":"/assets/ui/rom-spells/589517.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-50","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":545959,"sourceSkillId":498655,"name":"Dark Energy Punishment","description":"Consumes (Buff0-Dot)% HP every second and increases [SC_SKILLTIPS_01] by (Buff0-0)% and [SC_SKILLTIPS_02] by (Buff0-1)%. \n(This state ends when HP has been exhausted.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"health","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589518,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621343],"components":[{"id":621343,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":65643,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":134,"value":5},{"type":171,"value":5}],"abilitySkillLevelArg":10,"dotTime":1,"dotType":5,"dotBase":-3,"dot":{"timeSeconds":1,"type":5,"base":-3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498655,"name":"Dark Energy Punishment","description":"Consumes (Buff0-Dot)% HP every second and increases [SC_SKILLTIPS_01] by (Buff0-0)% and [SC_SKILLTIPS_02] by (Buff0-1)%. \n(This state ends when HP has been exhausted.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"health","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":589518,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621343]}}],"icon":"/assets/ui/rom-spells/589518.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-60","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":60,"keyItemId":546861,"sourceSkillId":499833,"name":"Blast of Remorse","description":"Consumes half of caster's HP and knocks down all enemies in range for (Buff-Time-623413) seconds. If any enemy has been Knocked down successfully, the caster will be unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801648,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623413,621685,623389],"components":[{"id":623413,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4179,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623389,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":499833,"name":"Blast of Remorse","description":"Consumes half of caster's HP and knocks down all enemies in range for (Buff-Time-623413) seconds. If any enemy has been Knocked down successfully, the caster will be unable to move for (Buff-Time-623389) seconds.\n(Can only be used in a Shield Form state.)","target":"self","range":15,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":50,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801648,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623413,621685,623389]}}],"icon":"/assets/ui/rom-spells/801648.png","iconResolution":"native-interface-fdb"},{"id":"rom-champion-rom-warlock-elite-70","classId":"rom-champion","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":70,"keyItemId":546862,"sourceSkillId":499831,"name":"Psychic Rampage","description":"Increases caster's critical hit rate by (Buff0-0). While in effect, any healing received is reduced by (Buff0-2)%.\n(Right click the [499831] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801649,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623414],"components":[{"id":623414,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":2500},{"type":20,"value":2500},{"type":144,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499831,"name":"Psychic Rampage","description":"Increases caster's critical hit rate by (Buff0-0). While in effect, any healing received is reduced by (Buff0-2)%.\n(Right click the [499831] icon to stop effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801649,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623414]}}],"icon":"/assets/ui/rom-spells/801649.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-15","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"passive","unlockLevel":15,"keyItemId":545968,"sourceSkillId":498760,"name":"Wild Slash","description":"Increases damage caused by Slash and changes to consume HP. After it hits, Bleed effect can also increase [SC_SKILLTIPS_DPS] by (Buff0-621575)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800160,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621575],"components":[{"id":621575,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":23,"value":-1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498760,"name":"Wild Slash","description":"Increases damage caused by Slash and changes to consume HP. After it hits, Bleed effect can also increase [SC_SKILLTIPS_DPS] by (Buff0-621575)%. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800160,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621575]}}],"icon":"/assets/ui/rom-spells/800160.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-20","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":545969,"sourceSkillId":498762,"name":"Blood Rune Weapon","description":"[SC_SKILLTIPS_HP5]\nIncreases [SC_SKILLTIPS_01] by (Buff0-0)% and [SC_SKILLTIPS_CRI] by (Buff4-0) for (Buff0-Time) times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800161,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621590,621591,621594],"components":[{"id":621590,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":6,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498781,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621591,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":18,"value":25}],"abilitySkillLevelArg":7,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621594,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498762,"name":"Blood Rune Weapon","description":"[SC_SKILLTIPS_HP5]\nIncreases [SC_SKILLTIPS_01] by (Buff0-0)% and [SC_SKILLTIPS_CRI] by (Buff4-0) for (Buff0-Time) times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800161,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621590,621591,621594]}}],"icon":"/assets/ui/rom-spells/800161.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-25","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":25,"keyItemId":545970,"sourceSkillId":498763,"name":"Bloody Slash","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) + (FixDMG0) x STR main hand weapon physical DPS on target. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800162,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621592],"components":[{"id":621592,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498763,"name":"Bloody Slash","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) + (FixDMG0) x STR main hand weapon physical DPS on target. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800162,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621592]}}],"icon":"/assets/ui/rom-spells/800162.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-30","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":30,"keyItemId":545971,"sourceSkillId":498764,"name":"Unbridled Rage","description":"[SC_SKILLTIPS_HP5]\nIncreases [SC_SKILLTIPS_STR] by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800163,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621593],"components":[{"id":621593,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":161,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498764,"name":"Unbridled Rage","description":"[SC_SKILLTIPS_HP5]\nIncreases [SC_SKILLTIPS_STR] by (Buff0-0)% for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800163,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621593]}}],"icon":"/assets/ui/rom-spells/800163.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-35","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":35,"keyItemId":545972,"sourceSkillId":498817,"name":"Bloody Battle","description":"|cffFF5755Can be used while in a Blood Rune Weapon state.|r\nThis skill can be used 6 seconds after a critical attack. Recovers 25% of caster's lost HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800164,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621598],"components":[{"id":621598,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498817,"name":"Bloody Battle","description":"|cffFF5755Can be used while in a Blood Rune Weapon state.|r\nThis skill can be used 6 seconds after a critical attack. Recovers 25% of caster's lost HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800164,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621598]}}],"icon":"/assets/ui/rom-spells/800164.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-40","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":40,"keyItemId":545973,"sourceSkillId":498820,"name":"Fearless Rune","description":"Provides immunity to all magical damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800165,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621599],"components":[{"id":621599,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498820,"name":"Fearless Rune","description":"Provides immunity to all magical damage for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800165,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621599]}}],"icon":"/assets/ui/rom-spells/800165.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-45","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":45,"keyItemId":545974,"sourceSkillId":498821,"name":"Stifling Attack","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) main hand weapon physical DPS + (FixDMG0) x STR damage on the target and reduces the target's [SC_SKILLTIPS_DEF] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"health","amount":31,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800166,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621615,621616],"components":[{"id":621615,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621616,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":-8}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0.2,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498821,"name":"Stifling Attack","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) main hand weapon physical DPS + (FixDMG0) x STR damage on the target and reduces the target's [SC_SKILLTIPS_DEF] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"health","amount":31,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800166,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621615,621616]}}],"icon":"/assets/ui/rom-spells/800166.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-50","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"elite","unlockLevel":50,"keyItemId":545975,"sourceSkillId":498822,"name":"Vendetta Blow","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) main hand weapon physical DPS + (FixDMG0) x STR damage on a target. The more HP you lose, the more damage this skill inflicts. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800167,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621618],"components":[{"id":621618,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498822,"name":"Vendetta Blow","description":"[SC_SKILLTIPS_HP5]\nInflicts (DMG0) main hand weapon physical DPS + (FixDMG0) x STR damage on a target. The more HP you lose, the more damage this skill inflicts. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":27,"percentage":false},{"resource":"health","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800167,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621618]}}],"icon":"/assets/ui/rom-spells/800167.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-60","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"passive","unlockLevel":60,"keyItemId":546746,"sourceSkillId":499823,"name":"Enhanced Shock","description":"Causes [499824] to Slow down target for (Buff-Time-623420) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801616,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623420],"components":[{"id":623420,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":499823,"name":"Enhanced Shock","description":"Causes [499824] to Slow down target for (Buff-Time-623420) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801616,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623420]}}],"icon":"/assets/ui/rom-spells/801616.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-champion-elite-70","classId":"rom-warrior","secondaryClassId":"rom-champion","group":"passive","unlockLevel":70,"keyItemId":546747,"sourceSkillId":499804,"name":"Blood Whirlwind","description":"A [623422] effect will be added to [499822]. Each time an enemy is hit, the caster recovers (DMG-623423) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801617,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623422,623423],"components":[{"id":623422,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623423,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":3,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":3,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":499804,"name":"Blood Whirlwind","description":"A [623422] effect will be added to [499822]. Each time an enemy is hit, the caster recovers (DMG-623423) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801617,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623422,623423]}}],"icon":"/assets/ui/rom-spells/801617.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-15","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":541885,"sourceSkillId":491328,"name":"Skull Breaker","description":"Precise strike at the enemy's head that causes (DMG0) main hand weapon DPS and has a 50% chance of lowering the target's accuracy by (Buff4-0)%.\n(Accuracy for players is decreased by (Buff5-0)%.)\n(This skill decreases the target's accuracy by a maximum of (Max-Buff0-501864)%).","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575211,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620362,501864,503843],"components":[{"id":620362,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501864,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":197,"value":-10}],"abilitySkillLevelArg":6.6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":503843,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":197,"value":-10}],"abilitySkillLevelArg":6.6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491328,"name":"Skull Breaker","description":"Precise strike at the enemy's head that causes (DMG0) main hand weapon DPS and has a 50% chance of lowering the target's accuracy by (Buff4-0)%.\n(Accuracy for players is decreased by (Buff5-0)%.)\n(This skill decreases the target's accuracy by a maximum of (Max-Buff0-501864)%).","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575211,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620362,501864,503843]}}],"icon":"/assets/ui/rom-spells/575211.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-20","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":20,"keyItemId":541915,"sourceSkillId":491452,"name":"Stun Shot","description":"Causes your target to be Stunned for (Buff0-Time) seconds. (Requires ranged weapon.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575240,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501858,503842,502719],"components":[{"id":501858,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":4,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":503842,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":4,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":491452,"name":"Stun Shot","description":"Causes your target to be Stunned for (Buff0-Time) seconds. (Requires ranged weapon.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575240,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501858,503842,502719]}}],"icon":"/assets/ui/rom-spells/575240.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-25","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":25,"keyItemId":541945,"sourceSkillId":491458,"name":"Moon Cleave Perfection","description":"Reduces your Moon Cleave rage cost by 10 points and cool down by 20 seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575732,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":491458,"name":"Moon Cleave Perfection","description":"Reduces your Moon Cleave rage cost by 10 points and cool down by 20 seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575732,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575732.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-30","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":541975,"sourceSkillId":491451,"name":"Aim for the Wound","description":"Inflict (DMG0) ranged weapon DPS. You have a chance of gaining an additional (Buff4-Dot) points of rage. (Requires ranged weapon.)\n(This skill generates a maximum of an additional (Max-Buff-Dot-501859) points of rage.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575239,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501857,501859],"components":[{"id":501857,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501859,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":1048585,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":12},"attackType":2,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":491451,"name":"Aim for the Wound","description":"Inflict (DMG0) ranged weapon DPS. You have a chance of gaining an additional (Buff4-Dot) points of rage. (Requires ranged weapon.)\n(This skill generates a maximum of an additional (Max-Buff-Dot-501859) points of rage.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575239,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501857,501859]}}],"icon":"/assets/ui/rom-spells/575239.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-35","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":542006,"sourceSkillId":492615,"name":"Sword Breath","description":"Sword breath pierces the target, inflicting (DMG0) main hand weapon DPS and with each hit also has a chance of increasing rage by (Buff4-Dot) points.\n(This skill generates a maximum of an additional (Max-Buff-Dot-502888) points of rage.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576990,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502887,502888],"components":[{"id":502887,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502888,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":1048585,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":8},"attackType":2,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":492615,"name":"Sword Breath","description":"Sword breath pierces the target, inflicting (DMG0) main hand weapon DPS and with each hit also has a chance of increasing rage by (Buff4-Dot) points.\n(This skill generates a maximum of an additional (Max-Buff-Dot-502888) points of rage.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576990,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502887,502888]}}],"icon":"/assets/ui/rom-spells/576990.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-40","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":40,"keyItemId":542036,"sourceSkillId":498032,"name":"Calm","description":"When Skull Breaker fails you have the opportunity to enter a state of calm in order to increase accuracy by (Buff0-620337)%. Effective for (Buff-Time-620337) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577572,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620337],"components":[{"id":620337,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":498032,"name":"Calm","description":"When Skull Breaker fails you have the opportunity to enter a state of calm in order to increase accuracy by (Buff0-620337)%. Effective for (Buff-Time-620337) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577572,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620337]}}],"icon":"/assets/ui/rom-spells/577572.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-45","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":542066,"sourceSkillId":492959,"name":"Waiting Game","description":"When you successfully use Aim for the Wound or hit the target with a Moon Cleave your physical attack power instantly increases.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577641,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":492959,"name":"Waiting Game","description":"When you successfully use Aim for the Wound or hit the target with a Moon Cleave your physical attack power instantly increases.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577641,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577641.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-50","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":542096,"sourceSkillId":493247,"name":"The Final Battle","description":"Inflicts (DMG0) main hand weapon DPS. If target's HP is lower than 30%, it will inflict (DMG1) main hand weapon DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577771,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503508,620363],"components":[{"id":503508,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620363,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493247,"name":"The Final Battle","description":"Inflicts (DMG0) main hand weapon DPS. If target's HP is lower than 30%, it will inflict (DMG1) main hand weapon DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577771,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503508,620363]}}],"icon":"/assets/ui/rom-spells/577771.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-60","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546730,"sourceSkillId":499473,"name":"Battle Focus","description":"Increases [SC_SKILLTIPS_HITP] when your [499625] hits, and recovers (Buff-Dot-622988) Focus. Lasts for (Buff-Time-620365). \n([SC_SKILLTIPS_CD_1] (Buff-Time-622989) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801259,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622988,620365,622989],"components":[{"id":622988,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":73,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":1,"dotType":3,"dotBase":20,"dot":{"timeSeconds":1,"type":3,"base":20,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620365,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"summonCreatureId":0},{"id":622989,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499473,"name":"Battle Focus","description":"Increases [SC_SKILLTIPS_HITP] when your [499625] hits, and recovers (Buff-Dot-622988) Focus. Lasts for (Buff-Time-620365). \n([SC_SKILLTIPS_CD_1] (Buff-Time-622989) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801259,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622988,620365,622989]}}],"icon":"/assets/ui/rom-spells/801259.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-scout-elite-70","classId":"rom-warrior","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546731,"sourceSkillId":499475,"name":"Blood Battle","description":"Increases your [499998|Blood Arrow's] [SC_SKILLTIPS_POWER] at the same time.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801307,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499475,"name":"Blood Battle","description":"Increases your [499998|Blood Arrow's] [SC_SKILLTIPS_POWER] at the same time.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801307,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801307.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-15","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":15,"keyItemId":541886,"sourceSkillId":491460,"name":"Shadowstab Perfection","description":"You no longer need to have a dagger equipped to gain the Bleed bonus of the Shadowstab skill. Bleed duration is increased by 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575733,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":491460,"name":"Shadowstab Perfection","description":"You no longer need to have a dagger equipped to gain the Bleed bonus of the Shadowstab skill. Bleed duration is increased by 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575733,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575733.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-20","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":20,"keyItemId":541916,"sourceSkillId":491463,"name":"Speed Up","description":"Increases your movement speed by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576384,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501869],"components":[{"id":501869,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":3}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":491463,"name":"Speed Up","description":"Increases your movement speed by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576384,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501869]}}],"icon":"/assets/ui/rom-spells/576384.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-25","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":25,"keyItemId":541946,"sourceSkillId":491329,"name":"Blood Dance","description":"Attack the enemy with full strength and spill his blood! Causes (DMG0) main hand weapon DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"health","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575212,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501800],"components":[{"id":501800,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":4.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":491329,"name":"Blood Dance","description":"Attack the enemy with full strength and spill his blood! Causes (DMG0) main hand weapon DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"health","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575212,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501800]}}],"icon":"/assets/ui/rom-spells/575212.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-30","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":541976,"sourceSkillId":491330,"name":"Frenzied Attack","description":"For (Buff0-Time) seconds you go into a Frenzy. During this time, your [SC_SKILLTIPS_CRI] for all kinds of attacks is increased by (Buff0-1). All Slow and Root effects are removed, but [SC_SKILLTIPS_DEF] is reduced by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575213,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501801],"components":[{"id":501801,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":-50},{"type":18,"value":700}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":491330,"name":"Frenzied Attack","description":"For (Buff0-Time) seconds you go into a Frenzy. During this time, your [SC_SKILLTIPS_CRI] for all kinds of attacks is increased by (Buff0-1). All Slow and Root effects are removed, but [SC_SKILLTIPS_DEF] is reduced by (Buff0-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575213,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501801]}}],"icon":"/assets/ui/rom-spells/575213.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-35","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542007,"sourceSkillId":492619,"name":"Keen Attack","description":"If the target is Vulnerable, two quick attacks cause (DMG0) main hand weapon DPS. Your critical damage will be increased by (Buff8-0)% for (Buff8-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576991,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502883,501520,623524],"components":[{"id":502883,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":128,"abilityModifiers":[{"type":135,"value":25},{"type":22,"value":5},{"type":17,"value":5},{"type":144,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501520,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0},{"id":623524,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":492619,"name":"Keen Attack","description":"If the target is Vulnerable, two quick attacks cause (DMG0) main hand weapon DPS. Your critical damage will be increased by (Buff8-0)% for (Buff8-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576991,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502883,501520,623524]}}],"icon":"/assets/ui/rom-spells/576991.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-40","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":542037,"sourceSkillId":492911,"name":"Splitting Chop","description":"When the target is Weakened, inflicts (DMG0) main hand weapon DPS to the target and decreases the target's [SC_SKILLTIPS_DEF] by (Buff4-0)% for (Buff4-Time) seconds.\n(This skill decreases the target's [SC_SKILLTIPS_DEF] by a maximum of (Max-Buff0-503161)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577574,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503160,503161,502923],"components":[{"id":503160,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503161,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":135,"value":-2}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502923,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":492911,"name":"Splitting Chop","description":"When the target is Weakened, inflicts (DMG0) main hand weapon DPS to the target and decreases the target's [SC_SKILLTIPS_DEF] by (Buff4-0)% for (Buff4-Time) seconds.\n(This skill decreases the target's [SC_SKILLTIPS_DEF] by a maximum of (Max-Buff0-503161)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577574,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503160,503161,502923]}}],"icon":"/assets/ui/rom-spells/577574.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-45","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":542067,"sourceSkillId":492997,"name":"Frenzied Heart","description":"When you enter Frenzied Attack state, your physical critical damage is increased.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577642,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":492997,"name":"Frenzied Heart","description":"When you enter Frenzied Attack state, your physical critical damage is increased.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577642,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577642.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-50","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":50,"keyItemId":542097,"sourceSkillId":493248,"name":"Exhaustion","description":"Lowers the rage required by your Whirlwind by 20 points, and shortens cooldown by 10 seconds. Also when you use a Probing Attack, there is an additional chance that it will lower the target's energy, focus, rage, and mana. (This effect can only be used on players.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577772,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":493248,"name":"Exhaustion","description":"Lowers the rage required by your Whirlwind by 20 points, and shortens cooldown by 10 seconds. Also when you use a Probing Attack, there is an additional chance that it will lower the target's energy, focus, rage, and mana. (This effect can only be used on players.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577772,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577772.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-60","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546732,"sourceSkillId":499483,"name":"Attack Launch","description":"Stops your [499484] from reducing [SC_SKILLTIPS_DEF].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801260,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499483,"name":"Attack Launch","description":"Stops your [499484] from reducing [SC_SKILLTIPS_DEF].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801260,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801260.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-rogue-elite-70","classId":"rom-warrior","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":70,"keyItemId":546733,"sourceSkillId":499997,"name":"Desperate Measures","description":"When activated, it will prevent death once and restore full HP within (Buff0-Time) seconds. After death is averted, the caster will experience a Weakened state for (Buff-Time-622951) seconds. This will cause (Buff-Dot-622951)% HP damage for every second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801308,"sourceEffectType":0,"sourceTarget":0,"componentIds":[622949,622950,622951],"components":[{"id":622949,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[32768,0],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":499995,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622950,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":0,"summonCreatureId":0},{"id":622951,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":65610,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":1,"dotType":5,"dotBase":-15,"dot":{"timeSeconds":1,"type":5,"base":-15,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499997,"name":"Desperate Measures","description":"When activated, it will prevent death once and restore full HP within (Buff0-Time) seconds. After death is averted, the caster will experience a Weakened state for (Buff-Time-622951) seconds. This will cause (Buff-Dot-622951)% HP damage for every second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801308,"sourceEffectType":0,"sourceTarget":0,"componentIds":[622949,622950,622951]}}],"icon":"/assets/ui/rom-spells/801308.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-15","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541887,"sourceSkillId":491474,"name":"Electrical Rage","description":"Causes (DMG0) main hand weapon DPS and puts High Voltage on the caster. [SC_SKILLTIPS_02] is increased by (Buff7-0)% for (Buff7-Time) seconds. High Voltage stacks up to 3 times.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":15,"percentage":false},{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575246,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501880,501884,501882,501881],"components":[{"id":501880,"magicFunc":0,"magicType":3,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501884,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435523,"specialActionFlags":0,"assistType":13,"abilityModifiers":[{"type":171,"value":15}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":501882,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435523,"specialActionFlags":0,"assistType":13,"abilityModifiers":[{"type":171,"value":10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":501881,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435523,"specialActionFlags":0,"assistType":13,"abilityModifiers":[{"type":171,"value":5}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491474,"name":"Electrical Rage","description":"Causes (DMG0) main hand weapon DPS and puts High Voltage on the caster. [SC_SKILLTIPS_02] is increased by (Buff7-0)% for (Buff7-Time) seconds. High Voltage stacks up to 3 times.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":15,"percentage":false},{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575246,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501880,501884,501882,501881]}}],"icon":"/assets/ui/rom-spells/575246.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-20","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":541917,"sourceSkillId":491477,"name":"Lightning's Touch","description":"Your weapon strikes the enemy with a flash of lightning, dealing (DMG0) points of Wind damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":575247,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501883],"components":[{"id":501883,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":45,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":491477,"name":"Lightning's Touch","description":"Your weapon strikes the enemy with a flash of lightning, dealing (DMG0) points of Wind damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.5},"source":{"imageId":575247,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501883]}}],"icon":"/assets/ui/rom-spells/575247.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-25","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":541947,"sourceSkillId":491331,"name":"Sense of Danger","description":"Lowers the damage you receive by (Buff0-0)% for (Buff0-Time) Seconds. Can only be activated when HP is below 30%. (Does not lower critical damage received)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575214,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501802,509772],"components":[{"id":501802,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435683,"specialActionFlags":0,"assistType":178,"abilityModifiers":[{"type":143,"value":10},{"type":142,"value":0}],"abilitySkillLevelArg":17,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509772,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268959969,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":143,"value":0},{"type":142,"value":10}],"abilitySkillLevelArg":17,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491331,"name":"Sense of Danger","description":"Lowers the damage you receive by (Buff0-0)% for (Buff0-Time) Seconds. Can only be activated when HP is below 30%. (Does not lower critical damage received)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575214,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501802,509772]}}],"icon":"/assets/ui/rom-spells/575214.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-30","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":541977,"sourceSkillId":491332,"name":"Thunder Sword","description":"Fires 4 sword shaped thunder bolts at the target inflicting (DMG0) points of Wind damage.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":575215,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501803],"components":[{"id":501803,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":35,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491332,"name":"Thunder Sword","description":"Fires 4 sword shaped thunder bolts at the target inflicting (DMG0) points of Wind damage.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":575215,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501803]}}],"icon":"/assets/ui/rom-spells/575215.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-35","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":35,"keyItemId":542008,"sourceSkillId":492618,"name":"Electric Attack","description":"For (Buff0-Time) seconds, your normal attacks additionally cause (Buff0-0) Wind damage.\n[SC_SKILLTIPS_492618]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576992,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502886],"components":[{"id":502886,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":187,"value":100}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":492618,"name":"Electric Attack","description":"For (Buff0-Time) seconds, your normal attacks additionally cause (Buff0-0) Wind damage.\n[SC_SKILLTIPS_492618]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576992,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502886]}}],"icon":"/assets/ui/rom-spells/576992.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-40","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":40,"keyItemId":542038,"sourceSkillId":492913,"name":"Lava Weapon","description":"Adds (Buff0-0) Fire damage to your normal attacks for (Buff0-Time) seconds. (The value of this damage varies considerably.)\n[SC_SKILLTIPS_492618]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577575,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503163],"components":[{"id":503163,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":186,"value":70}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":492913,"name":"Lava Weapon","description":"Adds (Buff0-0) Fire damage to your normal attacks for (Buff0-Time) seconds. (The value of this damage varies considerably.)\n[SC_SKILLTIPS_492618]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577575,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503163]}}],"icon":"/assets/ui/rom-spells/577575.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-45","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"passive","unlockLevel":45,"keyItemId":542068,"sourceSkillId":493000,"name":"Power Control","description":"Causes your Electric Attack to additionally increase your physical accuracy and your Lava Weapon to raise your physical critical hit rate.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577643,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":493000,"name":"Power Control","description":"Causes your Electric Attack to additionally increase your physical accuracy and your Lava Weapon to raise your physical critical hit rate.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577643,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577643.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-50","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"passive","unlockLevel":50,"keyItemId":542098,"sourceSkillId":499486,"name":"Wind Bastion","description":"When you use [499487], a defensive wind will protect you, lowering the physical damage inflicted upon you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577773,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":499486,"name":"Wind Bastion","description":"When you use [499487], a defensive wind will protect you, lowering the physical damage inflicted upon you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577773,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577773.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-60","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"elite","unlockLevel":60,"keyItemId":546734,"sourceSkillId":490062,"name":"Lightning Burn Weapon","description":"A special power that controls wind and fire. Instills flame and electricity in your weapon, but their power is reduced by 25%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500162,500163],"components":[{"id":500162,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":110,"clearFlags":1024,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":490063,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500163,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":490062,"name":"Lightning Burn Weapon","description":"A special power that controls wind and fire. Instills flame and electricity in your weapon, but their power is reduced by 25%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[500162,500163]}}],"icon":"/assets/ui/rom-spells/801261.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-mage-elite-70","classId":"rom-warrior","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546735,"sourceSkillId":499485,"name":"Possessed by Anger","description":"Makes your [499994] stackable and have an extra [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] bonus increase.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801309,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499485,"name":"Possessed by Anger","description":"Makes your [499994] stackable and have an extra [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] bonus increase.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801309,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801309.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-15","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":15,"keyItemId":541888,"sourceSkillId":491466,"name":"Defender's Roar","description":"Increases your and your party members' [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"health","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575244,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501872,506365],"components":[{"id":501872,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":120,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":102,"abilityModifiers":[{"type":8,"value":300}],"abilitySkillLevelArg":10,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495381,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":506365,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":120,"hateCost":-10,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491466,"name":"Defender's Roar","description":"Increases your and your party members' [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"health","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575244,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501872,506365]}}],"icon":"/assets/ui/rom-spells/575244.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-20","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":541918,"sourceSkillId":491469,"name":"Interrupting Strike","description":"Interrupts target's casting and causes (DMG0) points of damage. (The interrupted spell will enter a cooldown phase. If the interrupted spell has no cooldown, all spells will enter a cooldown time of 3 seconds.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":575556,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501875,502703],"components":[{"id":501875,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":30,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-16.4,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-16.4,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502703,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":491469,"name":"Interrupting Strike","description":"Interrupts target's casting and causes (DMG0) points of damage. (The interrupted spell will enter a cooldown phase. If the interrupted spell has no cooldown, all spells will enter a cooldown time of 3 seconds.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.164},"source":{"imageId":575556,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501875,502703]}}],"icon":"/assets/ui/rom-spells/575556.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-25","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":25,"keyItemId":541948,"sourceSkillId":491471,"name":"Magic Barrier Perfection","description":"Your Magic Barrier now also decreases the [SC_SKILLTIPS_MDMG] received.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575735,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":491471,"name":"Magic Barrier Perfection","description":"Your Magic Barrier now also decreases the [SC_SKILLTIPS_MDMG] received.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575735,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575735.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-30","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":541978,"sourceSkillId":492332,"name":"Bloodlust","description":"Convert 10% of your HP into 30 points of rage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"health","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575736,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501873],"components":[{"id":501873,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":18,"abilityModifiers":[{"type":8,"value":150}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":30,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":30,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":492332,"name":"Bloodlust","description":"Convert 10% of your HP into 30 points of rage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"health","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575736,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501873]}}],"icon":"/assets/ui/rom-spells/575736.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-35","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":35,"keyItemId":542009,"sourceSkillId":492617,"name":"Opportunity","description":"When the target is Weakened, (DMG0) main hand weapon DPS is dealt to the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576993,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502884,502923],"components":[{"id":502884,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.4,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":6,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502923,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":492617,"name":"Opportunity","description":"When the target is Weakened, (DMG0) main hand weapon DPS is dealt to the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576993,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502884,502923]}}],"icon":"/assets/ui/rom-spells/576993.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-40","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":40,"keyItemId":542039,"sourceSkillId":492912,"name":"Blood Retention","description":"When you use Bloodlust, you'll gain 3 rage points every 2 seconds for 10 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577576,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":492912,"name":"Blood Retention","description":"When you use Bloodlust, you'll gain 3 rage points every 2 seconds for 10 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577576,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577576.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-45","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542069,"sourceSkillId":492998,"name":"Morale Boost","description":"Causes your Berserk to increase the [SC_SKILLTIPS_DMG] of nearby party members' next four attacks for 30 seconds. Disappears after four attacks or 30 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577644,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":492998,"name":"Morale Boost","description":"Causes your Berserk to increase the [SC_SKILLTIPS_DMG] of nearby party members' next four attacks for 30 seconds. Disappears after four attacks or 30 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577644,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577644.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-50","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":542099,"sourceSkillId":493249,"name":"Barbarian Battle Cry","description":"Causes multiple targets within a radius of 80 to fear your power, and lowers their [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-0)% for (Buff0-Time) seconds. If the target has been inflicted with Fear, your Slash and Probing Attack will cause additional damage.","target":"self","range":8,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577774,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503511],"components":[{"id":503511,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":1,"abilityModifiers":[{"type":173,"value":-2},{"type":44,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":493249,"name":"Barbarian Battle Cry","description":"Causes multiple targets within a radius of 80 to fear your power, and lowers their [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-0)% for (Buff0-Time) seconds. If the target has been inflicted with Fear, your Slash and Probing Attack will cause additional damage.","target":"self","range":8,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577774,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503511]}}],"icon":"/assets/ui/rom-spells/577774.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-60","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":60,"keyItemId":546736,"sourceSkillId":499488,"name":"Combat Expertise","description":"Stops your [499489] from reducing [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801262,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499488,"name":"Combat Expertise","description":"Stops your [499489] from reducing [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801262,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801262.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-priest-elite-70","classId":"rom-warrior","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546737,"sourceSkillId":499490,"name":"Blood Fury Battle Cry","description":"When you use [499992] it will carry an additional increase of [SC_SKILLTIPS_DPS] by (Buff1-622956)% and [SC_SKILLTIPS_CRI] by (Buff0-622956) points. Lasts for 15 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801310,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622956],"components":[{"id":622956,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":18,"value":30},{"type":23,"value":-1}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499490,"name":"Blood Fury Battle Cry","description":"When you use [499992] it will carry an additional increase of [SC_SKILLTIPS_DPS] by (Buff1-622956)% and [SC_SKILLTIPS_CRI] by (Buff0-622956) points. Lasts for 15 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801310,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622956]}}],"icon":"/assets/ui/rom-spells/801310.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-15","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"elite","unlockLevel":15,"keyItemId":541889,"sourceSkillId":491333,"name":"Throw Shield","description":"Throws your shield at the target causing (DMG0) main hand weapon DPS + (FixDMG-620344) x (shield's defense value) damage.\n(Must have a shield equipped)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575216,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620344],"components":[{"id":620344,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":491333,"name":"Throw Shield","description":"Throws your shield at the target causing (DMG0) main hand weapon DPS + (FixDMG-620344) x (shield's defense value) damage.\n(Must have a shield equipped)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575216,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620344]}}],"icon":"/assets/ui/rom-spells/575216.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-20","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"elite","unlockLevel":20,"keyItemId":541919,"sourceSkillId":491480,"name":"Blocking Stance","description":"Increases your chance to parry by (Buff0-0) points for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575558,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502007],"components":[{"id":502007,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":491480,"name":"Blocking Stance","description":"Increases your chance to parry by (Buff0-0) points for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575558,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502007]}}],"icon":"/assets/ui/rom-spells/575558.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-25","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"elite","unlockLevel":25,"keyItemId":541949,"sourceSkillId":491334,"name":"Ignore Pain","description":"Immune to Helpless, Stun, Root and Slow for (Buff0-Time) seconds.\n(Effect can only be removed if target has Movement Impairing Effect or Stun)\n\n[SC_SKILLTIPS_FEAR]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575217,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501805],"components":[{"id":501805,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":491334,"name":"Ignore Pain","description":"Immune to Helpless, Stun, Root and Slow for (Buff0-Time) seconds.\n(Effect can only be removed if target has Movement Impairing Effect or Stun)\n\n[SC_SKILLTIPS_FEAR]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575217,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501805]}}],"icon":"/assets/ui/rom-spells/575217.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-30","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541979,"sourceSkillId":491484,"name":"Shield Bash","description":"Immediately strike at the target with your shield causing (DMG0) main hand weapon DPS + (FixDMG-620345) x (shield's defense value) damage and restore you (DMG4) rage.\n(Must have a shield equipped)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575557,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620345,502012],"components":[{"id":620345,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.55,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.55,"damagePowerSkillLevelArg":6,"fixedValue":-0.1,"fixedType":12,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502012,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":30,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":5,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":5,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491484,"name":"Shield Bash","description":"Immediately strike at the target with your shield causing (DMG0) main hand weapon DPS + (FixDMG-620345) x (shield's defense value) damage and restore you (DMG4) rage.\n(Must have a shield equipped)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575557,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620345,502012]}}],"icon":"/assets/ui/rom-spells/575557.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-35","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":35,"keyItemId":542010,"sourceSkillId":492661,"name":"Heroic Surprise Attack","description":"Your Surprise Attack generates additional rage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576994,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492661,"name":"Heroic Surprise Attack","description":"Your Surprise Attack generates additional rage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576994,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/576994.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-40","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":40,"keyItemId":542040,"sourceSkillId":492914,"name":"Concentrated Precision","description":"Increases [SC_SKILLTIPS_HIT] by (Buff0-0) and allows you to equip plate armor.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577577,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620374],"components":[{"id":620374,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":16,"value":10},{"type":99,"value":1}],"abilitySkillLevelArg":10.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":492914,"name":"Concentrated Precision","description":"Increases [SC_SKILLTIPS_HIT] by (Buff0-0) and allows you to equip plate armor.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577577,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620374]}}],"icon":"/assets/ui/rom-spells/577577.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-45","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":45,"keyItemId":542070,"sourceSkillId":493003,"name":"Fierce Attack","description":"When you hit the target with your Throw Shield, instantly decreases your target's [SC_SKILLTIPS_CRI_PASSIVE] for (Buff-Time-503253) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503312)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577645,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503253,503312],"components":[{"id":503253,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":1342177474,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":182,"value":-22}],"abilitySkillLevelArg":12.5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493053,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503312,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493003,"name":"Fierce Attack","description":"When you hit the target with your Throw Shield, instantly decreases your target's [SC_SKILLTIPS_CRI_PASSIVE] for (Buff-Time-503253) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503312)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577645,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503253,503312]}}],"icon":"/assets/ui/rom-spells/577645.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-50","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":50,"keyItemId":542100,"sourceSkillId":493251,"name":"Resist","description":"In Blocking Stance you will receive less physical damage, and there is an additional chance that your rage will increase.\n([SC_SKILLTIPS_CD_1](Buff-Time-503572)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577775,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503572],"components":[{"id":503572,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493251,"name":"Resist","description":"In Blocking Stance you will receive less physical damage, and there is an additional chance that your rage will increase.\n([SC_SKILLTIPS_CD_1](Buff-Time-503572)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577775,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503572]}}],"icon":"/assets/ui/rom-spells/577775.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-60","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546738,"sourceSkillId":499491,"name":"Whirlwind Battle Technique","description":"Reduces your [499989|Whirlwind's] rage by 25 and cooldown time by 15 seconds. If a shield is equipped then it increases aggro.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801263,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499491,"name":"Whirlwind Battle Technique","description":"Reduces your [499989|Whirlwind's] rage by 25 and cooldown time by 15 seconds. If a shield is equipped then it increases aggro.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801263,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801263.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-knight-elite-70","classId":"rom-warrior","secondaryClassId":"rom-knight","group":"passive","unlockLevel":70,"keyItemId":546739,"sourceSkillId":499492,"name":"Bullseye","description":"Makes your [499988] hits cause an additional Stun effect for (Buff-Time-622972) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801311,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622972],"components":[{"id":622972,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":2,"hateCost":0,"settingFlags":1342701634,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":499492,"name":"Bullseye","description":"Makes your [499988] hits cause an additional Stun effect for (Buff-Time-622972) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801311,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622972]}}],"icon":"/assets/ui/rom-spells/801311.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-15","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":15,"keyItemId":543016,"sourceSkillId":494031,"name":"Savage Strike","description":"Increases your [SC_SKILLTIPS_01] after you hit a target with a Surprise Attack.\n([SC_SKILLTIPS_CD_1](Buff-Time-506367)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579101,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506367],"components":[{"id":506367,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494031,"name":"Savage Strike","description":"Increases your [SC_SKILLTIPS_01] after you hit a target with a Surprise Attack.\n([SC_SKILLTIPS_CD_1](Buff-Time-506367)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579101,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506367]}}],"icon":"/assets/ui/rom-spells/579101.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-20","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":20,"keyItemId":543024,"sourceSkillId":494032,"name":"Attack Weakener","description":"Use when the target is Vulnerable to inflict (DMG0) main hand weapon DPS and reduce target's physical attack by (Buff4-0)% for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579102,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620346,504584,501520],"components":[{"id":620346,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504584,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501520,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494032,"name":"Attack Weakener","description":"Use when the target is Vulnerable to inflict (DMG0) main hand weapon DPS and reduce target's physical attack by (Buff4-0)% for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579102,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620346,504584,501520]}}],"icon":"/assets/ui/rom-spells/579102.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-25","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":25,"keyItemId":543032,"sourceSkillId":494033,"name":"Mental Bestiary","description":"Understand the structure of organisms, increasing the damage of your Slash attacks on vulnerable beasts and humanoid monsters.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579103,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494033,"name":"Mental Bestiary","description":"Understand the structure of organisms, increasing the damage of your Slash attacks on vulnerable beasts and humanoid monsters.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579103,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579103.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-30","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":30,"keyItemId":543040,"sourceSkillId":494324,"name":"Savage Whirlwind","description":"Harness primal natural forces to launch an attack. Inflicts (DMG0) main hand weapon DPS on target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579879,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503952],"components":[{"id":503952,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494324,"name":"Savage Whirlwind","description":"Harness primal natural forces to launch an attack. Inflicts (DMG0) main hand weapon DPS on target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579879,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503952]}}],"icon":"/assets/ui/rom-spells/579879.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-35","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":35,"keyItemId":543048,"sourceSkillId":494374,"name":"Wild Howl","description":"Upon hitting the target your Savage Whirlwind can temporary increase your own and your party members' [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG].\n([SC_SKILLTIPS_CD_1](Buff-Time-505168)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579880,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505168],"components":[{"id":505168,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494374,"name":"Wild Howl","description":"Upon hitting the target your Savage Whirlwind can temporary increase your own and your party members' [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG].\n([SC_SKILLTIPS_CD_1](Buff-Time-505168)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579880,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505168]}}],"icon":"/assets/ui/rom-spells/579880.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-40","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":40,"keyItemId":543056,"sourceSkillId":499495,"name":"Awakening of the Wild","description":"Renders you immune to Root and Slow effects for (Buff0-Time) seconds, and makes your next attack a critical attack.\n(Effect can only be removed if target has Movement Impairing Effect)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579881,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623004,623005],"components":[{"id":623004,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623005,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,64],"clearFlags":1057,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":499495,"name":"Awakening of the Wild","description":"Renders you immune to Root and Slow effects for (Buff0-Time) seconds, and makes your next attack a critical attack.\n(Effect can only be removed if target has Movement Impairing Effect)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579881,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623004,623005]}}],"icon":"/assets/ui/rom-spells/579881.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-45","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":45,"keyItemId":543064,"sourceSkillId":494624,"name":"Battle Creed","description":"Increases your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)% for (Buff0-Time) seconds. While the effect lasts, when you hit a target with Slash or Probing Attack, your attacks generate (Buff0-505845)% less aggro for (Buff-Time-505845) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-505846)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581098,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505208,505845,505846],"components":[{"id":505208,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505845,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":-15}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494972,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505846,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":494624,"name":"Battle Creed","description":"Increases your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)% for (Buff0-Time) seconds. While the effect lasts, when you hit a target with Slash or Probing Attack, your attacks generate (Buff0-505845)% less aggro for (Buff-Time-505845) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-505846)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581098,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505208,505845,505846]}}],"icon":"/assets/ui/rom-spells/581098.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-50","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543072,"sourceSkillId":494625,"name":"Air Tremor","description":"Coalesces the power within the surrounding atmosphere in your body and then releases it in an instant, inflicting (DMG0) main hand weapon DPS to all targets within a radius of 80.","target":"self","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581099,"sourceEffectType":1,"sourceTarget":0,"componentIds":[505209],"components":[{"id":505209,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494625,"name":"Air Tremor","description":"Coalesces the power within the surrounding atmosphere in your body and then releases it in an instant, inflicting (DMG0) main hand weapon DPS to all targets within a radius of 80.","target":"self","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581099,"sourceEffectType":1,"sourceTarget":0,"componentIds":[505209]}}],"icon":"/assets/ui/rom-spells/581099.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-60","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":60,"keyItemId":546740,"sourceSkillId":499493,"name":"Visceral Impact","description":"Makes your [499987] hits cause an additional reduction of [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801264,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499493,"name":"Visceral Impact","description":"Makes your [499987] hits cause an additional reduction of [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801264,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801264.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warden-elite-70","classId":"rom-warrior","secondaryClassId":"rom-warden","group":"passive","unlockLevel":70,"keyItemId":546741,"sourceSkillId":499494,"name":"Barbaric Execution","description":"Makes it possible for your [499986] hits to inflict an additional Stun effect for (Buff-Time-622974) seconds. The higher the level of [499986], the longer the effect works. Also increases critical hit rate by 50% against enemies with less than 30% HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801312,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622974],"components":[{"id":622974,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499494,"name":"Barbaric Execution","description":"Makes it possible for your [499986] hits to inflict an additional Stun effect for (Buff-Time-622974) seconds. The higher the level of [499986], the longer the effect works. Also increases critical hit rate by 50% against enemies with less than 30% HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801312,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622974]}}],"icon":"/assets/ui/rom-spells/801312.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-15","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543017,"sourceSkillId":494034,"name":"Rose Vine","description":"When the sharp rose vines entwine your weapon, your standard attacks cause your target to bleed, inflicting (Buff-Dot-504585) points of blood damage every 2 seconds for (Buff-Time-504585) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504712)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579104,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504543,504585,504712],"components":[{"id":504543,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"onAttackTrigger":{"rate":100,"rank":0,"id":495278},"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504585,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":1342185674,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494210,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":2,"dotType":0,"dotBase":-20,"dot":{"timeSeconds":2,"type":0,"base":-20,"skillLevelArg":10},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504712,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":268443648,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494034,"name":"Rose Vine","description":"When the sharp rose vines entwine your weapon, your standard attacks cause your target to bleed, inflicting (Buff-Dot-504585) points of blood damage every 2 seconds for (Buff-Time-504585) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504712)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579104,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504543,504585,504712]}}],"icon":"/assets/ui/rom-spells/579104.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-20","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":20,"keyItemId":543025,"sourceSkillId":494035,"name":"Tremor","description":"Use when target is Weakened to cause fierce tremors that inflict (DMG0) main hand weapon DPS. Each successful hit has a chance of reducing the target's [SC_SKILLTIPS_HIT] by (Buff4-0) points for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-506417)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579105,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504544,504586,502923,506417],"components":[{"id":504544,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504586,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":1073742018,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":16,"value":-6}],"abilitySkillLevelArg":12,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495409,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502923,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":70,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506417,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":494035,"name":"Tremor","description":"Use when target is Weakened to cause fierce tremors that inflict (DMG0) main hand weapon DPS. Each successful hit has a chance of reducing the target's [SC_SKILLTIPS_HIT] by (Buff4-0) points for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-506417)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579105,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504544,504586,502923,506417]}}],"icon":"/assets/ui/rom-spells/579105.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-25","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":25,"keyItemId":543033,"sourceSkillId":494036,"name":"Guardian's Pledge","description":"Temporarily increases you and your party members' [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0). Also raises [SC_SKILLTIPS_CRI_PASSIVE] by (Buff8-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579106,"sourceEffectType":1,"sourceTarget":0,"componentIds":[504545,506227,506228],"components":[{"id":504545,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":8,"value":40}],"abilitySkillLevelArg":22,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495287,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506227,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1}],"abilitySkillLevelArg":13,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506228,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":182,"value":22}],"abilitySkillLevelArg":12.5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494036,"name":"Guardian's Pledge","description":"Temporarily increases you and your party members' [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0). Also raises [SC_SKILLTIPS_CRI_PASSIVE] by (Buff8-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579106,"sourceEffectType":1,"sourceTarget":0,"componentIds":[504545,506227,506228]}}],"icon":"/assets/ui/rom-spells/579106.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-30","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":30,"keyItemId":543041,"sourceSkillId":494325,"name":"Redemption","description":"When you use your Probing Attack, physical and magical accuracy for all party members in a range of 100 will be increased by (Buff0-620359) for (Buff-Time-620359) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579882,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620359],"components":[{"id":620359,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":32,"abilityModifiers":[{"type":16,"value":10},{"type":195,"value":10}],"abilitySkillLevelArg":46,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494340,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494325,"name":"Redemption","description":"When you use your Probing Attack, physical and magical accuracy for all party members in a range of 100 will be increased by (Buff0-620359) for (Buff-Time-620359) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579882,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620359]}}],"icon":"/assets/ui/rom-spells/579882.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-35","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":35,"keyItemId":543049,"sourceSkillId":494376,"name":"Remove Magic","description":"Cleanses harmful magical effects from your target.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579883,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504903],"components":[{"id":504903,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":494376,"name":"Remove Magic","description":"Cleanses harmful magical effects from your target.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579883,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504903]}}],"icon":"/assets/ui/rom-spells/579883.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-40","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":40,"keyItemId":543057,"sourceSkillId":494377,"name":"Recovery of Life","description":"Your Whirlwind's cooldown time is reduced by 10 seconds, and the required rage is reduced by 10. Upon hitting the target, rage requirement for the skill is immediately decreased.\n([SC_SKILLTIPS_CD_1](Buff-Time-506368)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579884,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506368],"components":[{"id":506368,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494377,"name":"Recovery of Life","description":"Your Whirlwind's cooldown time is reduced by 10 seconds, and the required rage is reduced by 10. Upon hitting the target, rage requirement for the skill is immediately decreased.\n([SC_SKILLTIPS_CD_1](Buff-Time-506368)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579884,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506368]}}],"icon":"/assets/ui/rom-spells/579884.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-45","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":45,"keyItemId":543065,"sourceSkillId":494626,"name":"Resistance","description":"When you are attacked when you have the Berserk buff active, you will be able to completely resist the next attack.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581100,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494626,"name":"Resistance","description":"When you are attacked when you have the Berserk buff active, you will be able to completely resist the next attack.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581100,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581100.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-50","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"elite","unlockLevel":50,"keyItemId":543073,"sourceSkillId":494627,"name":"Stifle","description":"When the target is Vulnerable and is not able to respond in time your attack will deal him (DMG0) main hand weapon DPS. Additionally the next 10 times physical damage is dealt to the target it will be increased by 20%. Starting with the first attack the Stifle effect will gradually decrease by 2% with the overall time span being (Buff-Time-505906) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581101,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505680,501520,505906],"components":[{"id":505680,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501520,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":532480,"specialActionFlags":0,"assistType":69,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-55.35,"fixedValue":0,"summonCreatureId":0},{"id":505906,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":32834,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":494627,"name":"Stifle","description":"When the target is Vulnerable and is not able to respond in time your attack will deal him (DMG0) main hand weapon DPS. Additionally the next 10 times physical damage is dealt to the target it will be increased by 20%. Starting with the first attack the Stifle effect will gradually decrease by 2% with the overall time span being (Buff-Time-505906) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581101,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505680,501520,505906]}}],"icon":"/assets/ui/rom-spells/581101.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-60","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546742,"sourceSkillId":499496,"name":"Revival Slash","description":"When targets are hit by your [499497], there is a chance that you will receive a [493528] effect. However, the healing effect is reduced. \n(Can't be re-triggered while [493528] is in effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801265,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499496,"name":"Revival Slash","description":"When targets are hit by your [499497], there is a chance that you will receive a [493528] effect. However, the healing effect is reduced. \n(Can't be re-triggered while [493528] is in effect.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801265,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801265.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-druid-elite-70","classId":"rom-warrior","secondaryClassId":"rom-druid","group":"passive","unlockLevel":70,"keyItemId":546743,"sourceSkillId":499498,"name":"Irresistible Force","description":"When you use [499499] and a target is hit, there is a chance you will achieve a [499498] effect. This effect will increase your inflicted damage and lasts for (Buff-Time-623013) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-623014) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801313,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623013,623014],"components":[{"id":623013,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":195,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":2},{"type":205,"value":2}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623014,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499498,"name":"Irresistible Force","description":"When you use [499499] and a target is hit, there is a chance you will achieve a [499498] effect. This effect will increase your inflicted damage and lasts for (Buff-Time-623013) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-623014) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801313,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623013,623014]}}],"icon":"/assets/ui/rom-spells/801313.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-15","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":15,"keyItemId":545960,"sourceSkillId":498706,"name":"Rage Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If target is attacking you, the skill will increase your rage by (DMG4). If nothing is attacking then it will restore (DMG5) points of your focus. \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800120,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621447,621448,621449],"components":[{"id":621447,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621448,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":15,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":15,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621449,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":15,"fixedValue":0,"attack":{"type":3,"calculationType":4,"damagePower":15,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498706,"name":"Rage Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target. If target is attacking you, the skill will increase your rage by (DMG4). If nothing is attacking then it will restore (DMG5) points of your focus. \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800120,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621447,621448,621449]}}],"icon":"/assets/ui/rom-spells/800120.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-20","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":20,"keyItemId":545961,"sourceSkillId":498707,"name":"Psychic Whirlwind","description":"Inflicts (DMG0) main hand weapon physical DPS on targets nearby the designated target. If target is in a Weakened state, then skill will cause extra damage. \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800129,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621476,501577,621480,621478],"components":[{"id":621476,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621480,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621478,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498707,"name":"Psychic Whirlwind","description":"Inflicts (DMG0) main hand weapon physical DPS on targets nearby the designated target. If target is in a Weakened state, then skill will cause extra damage. \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800129,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621476,501577,621480,621478]}}],"icon":"/assets/ui/rom-spells/800129.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-25","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":25,"keyItemId":545962,"sourceSkillId":498734,"name":"Divine Battle Spirit","description":"Earns (Buff0-Dot) rage every second for (Buff0-Time). \n(Effect disappears after you cross the line or change areas.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800130,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621477],"components":[{"id":621477,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"clearFlags":1072,"abilitySkillLevelArg":0,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":5},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498734,"name":"Divine Battle Spirit","description":"Earns (Buff0-Dot) rage every second for (Buff0-Time). \n(Effect disappears after you cross the line or change areas.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800130,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621477]}}],"icon":"/assets/ui/rom-spells/800130.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-30","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":30,"keyItemId":545963,"sourceSkillId":498735,"name":"Psychic Battle Cry","description":"Earns Psychic Torrent state. \nWhen you use an elite skill that inflicts area damage, party members in the damage area will earn Spirit Shield Protection. This effect will resist an amount of damage equal to (Buff-Shield-621479)% of the caster's healing bonus for (Buff-Time-621479) seconds. Shield can be stacked a maximum of 3 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":8000},"source":{"imageId":800131,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621478,621479],"components":[{"id":621478,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621479,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":33123,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":4,"effect":0,"point":50,"skillLevelArg":100}}]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498735,"name":"Psychic Battle Cry","description":"Earns Psychic Torrent state. \nWhen you use an elite skill that inflicts area damage, party members in the damage area will earn Spirit Shield Protection. This effect will resist an amount of damage equal to (Buff-Shield-621479)% of the caster's healing bonus for (Buff-Time-621479) seconds. Shield can be stacked a maximum of 3 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":8000},"source":{"imageId":800131,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621478,621479]}}],"icon":"/assets/ui/rom-spells/800131.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-35","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":35,"keyItemId":545964,"sourceSkillId":498739,"name":"Psychic Ghost Step","description":"Charges the target and inflicts (DMG0) main hand weapon physical DPS on nearby targets. If Divine Battle Spirit is in effect then additional damage is inflicted on most targets. \n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800132,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621483,621484,621477,621480],"components":[{"id":621483,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.3,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621484,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4163,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.2,"fixedValue":0,"summonCreatureId":0},{"id":621477,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"clearFlags":1072,"abilitySkillLevelArg":0,"dotTime":1,"dotType":2,"dotBase":5,"dot":{"timeSeconds":1,"type":2,"base":5,"skillLevelArg":5},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621480,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498739,"name":"Psychic Ghost Step","description":"Charges the target and inflicts (DMG0) main hand weapon physical DPS on nearby targets. If Divine Battle Spirit is in effect then additional damage is inflicted on most targets. \n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800132,"sourceEffectType":1,"sourceTarget":6,"componentIds":[621483,621484,621477,621480]}}],"icon":"/assets/ui/rom-spells/800132.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-40","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":40,"keyItemId":545965,"sourceSkillId":498740,"name":"Spirit-Cracking Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target and carries a Spirit Wound state. Every 2 seconds, this state inflicts (Buff4-Dot) physical damage on the target and increases the caster's rage by (Buff8-Dot). Lasts for (Buff4-Time). \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800133,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621487,621488,621489],"components":[{"id":621487,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621488,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-4,"dot":{"timeSeconds":2,"type":0,"base":-4,"skillLevelArg":45},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621489,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":75,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":2,"dotBase":4,"dot":{"timeSeconds":2,"type":2,"base":4,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498740,"name":"Spirit-Cracking Blow","description":"Inflicts (DMG0) main hand weapon physical DPS on target and carries a Spirit Wound state. Every 2 seconds, this state inflicts (Buff4-Dot) physical damage on the target and increases the caster's rage by (Buff8-Dot). Lasts for (Buff4-Time). \n[SC_SKILLTIPS_03]","target":"hostile","range":7.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800133,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621487,621488,621489]}}],"icon":"/assets/ui/rom-spells/800133.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-45","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":45,"keyItemId":545966,"sourceSkillId":498741,"name":"Lightning Spell","description":"Inflicts (DMG0) main hand weapon physical DPS on targets in range. Also increases [SC_SKILLTIPS_MOVE] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":7.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579904,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621490,621491,621480,621478],"components":[{"id":621490,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621491,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621480,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621478,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":498741,"name":"Lightning Spell","description":"Inflicts (DMG0) main hand weapon physical DPS on targets in range. Also increases [SC_SKILLTIPS_MOVE] by (Buff4-0)% for (Buff4-Time) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":7.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579904,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621490,621491,621480,621478]}}],"icon":"/assets/ui/rom-spells/579904.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-50","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":545967,"sourceSkillId":498742,"name":"Spirit Blade Storm","description":"Summons a Spirit Blade Storm that engulfs targets in range. Inflicts (DMG-621497) main hand weapon physical DPS for 6 seconds. Also reduces [SC_SKILLTIPS_MOVE] by (Buff0-621498)% for (Buff-Time-621498) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800204,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621496,621480,621478,621497,621498],"components":[{"id":621496,"magicFunc":6,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621480,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621478,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621497,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.2,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.2,"damagePowerSkillLevelArg":6.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621498,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498742,"name":"Spirit Blade Storm","description":"Summons a Spirit Blade Storm that engulfs targets in range. Inflicts (DMG-621497) main hand weapon physical DPS for 6 seconds. Also reduces [SC_SKILLTIPS_MOVE] by (Buff0-621498)% for (Buff-Time-621498) seconds. \n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800204,"sourceEffectType":1,"sourceTarget":0,"componentIds":[621496,621480,621478,621497,621498]}}],"icon":"/assets/ui/rom-spells/800204.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-60","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":60,"keyItemId":546744,"sourceSkillId":499827,"name":"Speed Slash","description":"There is a chance that [499828] will reset the cooldown timer of [498739].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801614,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":499827,"name":"Speed Slash","description":"There is a chance that [499828] will reset the cooldown timer of [498739].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801614,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801614.png","iconResolution":"native-interface-fdb"},{"id":"rom-warrior-rom-warlock-elite-70","classId":"rom-warrior","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":70,"keyItemId":546745,"sourceSkillId":499806,"name":"Excellent Combat Training","description":"The cooldown time of [499825] is reduced to 10 seconds, and each time [499826] hits a target, the cooldown time of [498742] is reduced by 3 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801615,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499806,"name":"Excellent Combat Training","description":"The cooldown time of [499825] is reduced to 10 seconds, and each time [499826] hits a target, the cooldown time of [498742] is reduced by 3 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801615,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801615.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-15","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":541890,"sourceSkillId":491337,"name":"Battle Instinct","description":"Temporarily increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575220,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501821,506361],"components":[{"id":501821,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":6,"value":20}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495379,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506361,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":165,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491337,"name":"Battle Instinct","description":"Temporarily increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575220,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501821,506361]}}],"icon":"/assets/ui/rom-spells/575220.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-20","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":541920,"sourceSkillId":491488,"name":"Master of Survival","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575705,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501889,506369],"components":[{"id":501889,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":8,"value":50}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":506369,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":491488,"name":"Master of Survival","description":"Increases [SC_SKILLTIPS_HP] by (current [SC_SKILLTIPS_HP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575705,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501889,506369]}}],"icon":"/assets/ui/rom-spells/575705.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-25","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":541950,"sourceSkillId":491489,"name":"Enhanced Throat Attack","description":"Your Throat Attack can cause an additional 4 seconds of Silence to the target, and also increases the range of Throat Attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575575,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":491489,"name":"Enhanced Throat Attack","description":"Your Throat Attack can cause an additional 4 seconds of Silence to the target, and also increases the range of Throat Attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575575,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575575.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-30","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":541980,"sourceSkillId":491491,"name":"Mental Focus","description":"Recovers (Buff0-Dot) focus points every 5 seconds for a total of (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575704,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501892],"components":[{"id":501892,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":120,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":40,"abilitySkillLevelArg":5,"dotTime":5,"dotType":3,"dotBase":5,"dot":{"timeSeconds":5,"type":3,"base":5,"skillLevelArg":11.2},"attackType":3,"damagePower":5,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":491491,"name":"Mental Focus","description":"Recovers (Buff0-Dot) focus points every 5 seconds for a total of (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575704,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501892]}}],"icon":"/assets/ui/rom-spells/575704.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-35","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542011,"sourceSkillId":492620,"name":"Target Lock","description":"Physical damage received by the target is increased by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576995,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502920],"components":[{"id":502920,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":492620,"name":"Target Lock","description":"Physical damage received by the target is increased by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576995,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502920]}}],"icon":"/assets/ui/rom-spells/576995.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-40","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":40,"keyItemId":542041,"sourceSkillId":492915,"name":"Gale","description":"Increases damage of Combo Shot and prevents you from being interrupted by an attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577578,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492915,"name":"Gale","description":"Increases damage of Combo Shot and prevents you from being interrupted by an attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577578,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577578.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-45","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":542071,"sourceSkillId":493006,"name":"Accurate Targeting","description":"When your Shot hits a target, it instantly increases your [SC_SKILLTIPS_01]. Effective for (Buff-Time-503255) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503254)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577646,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503255,503254],"components":[{"id":503255,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":12,"value":50}],"abilitySkillLevelArg":11,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493054,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"summonCreatureId":0},{"id":503254,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":493006,"name":"Accurate Targeting","description":"When your Shot hits a target, it instantly increases your [SC_SKILLTIPS_01]. Effective for (Buff-Time-503255) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503254)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577646,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503255,503254]}}],"icon":"/assets/ui/rom-spells/577646.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-50","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":542101,"sourceSkillId":493252,"name":"Recover Vitality","description":"Upon hitting a target with Snipe or Piercing Arrow, there is an additional chance that you will gain rage points. Also, upon hitting a target with Snipe, there is an additional chance of canceling beneficial effects on the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577776,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":493252,"name":"Recover Vitality","description":"Upon hitting a target with Snipe or Piercing Arrow, there is an additional chance that you will gain rage points. Also, upon hitting a target with Snipe, there is an additional chance of canceling beneficial effects on the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577776,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577776.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-60","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546748,"sourceSkillId":499511,"name":"Vital Reflection","description":"Increases damage inflicted by your [499512] on targets that have less than 30% HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801266,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499511,"name":"Vital Reflection","description":"Increases damage inflicted by your [499512] on targets that have less than 30% HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801266,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801266.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warrior-elite-70","classId":"rom-scout","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546749,"sourceSkillId":499513,"name":"Breathing Obstruction","description":"If a target uses a skill in the time allotted after being hit by your [490442], then that skills cooldown time will be increased by an extra (Buff-Time-623057) seconds. If the skill doesn't have a cooldown time then the cooldown times for all skills will be (Buff-Time-623060) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801382,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623057,623060],"components":[{"id":623057,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623060,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499513,"name":"Breathing Obstruction","description":"If a target uses a skill in the time allotted after being hit by your [490442], then that skills cooldown time will be increased by an extra (Buff-Time-623057) seconds. If the skill doesn't have a cooldown time then the cooldown times for all skills will be (Buff-Time-623060) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801382,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623057,623060]}}],"icon":"/assets/ui/rom-spells/801382.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-15","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":541891,"sourceSkillId":491493,"name":"Weak Spot","description":"Aiming at the target's weak spot inflicts (DMG0) ranged weapon DPS. Also increases your [SC_SKILLTIPS_CRI] by (Buff4-0) for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575572,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501894,501895],"components":[{"id":501894,"magicFunc":0,"magicType":4,"effectType":1,"effectTime":-1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":34,"abilityModifiers":[{"type":18,"value":5}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501895,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":34,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":491493,"name":"Weak Spot","description":"Aiming at the target's weak spot inflicts (DMG0) ranged weapon DPS. Also increases your [SC_SKILLTIPS_CRI] by (Buff4-0) for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575572,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501894,501895]}}],"icon":"/assets/ui/rom-spells/575572.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-20","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":541921,"sourceSkillId":491336,"name":"Blinding Powder","description":"Prevents your target from attacking for (Buff0-Time) seconds. \n(For players this effect lasts for (Buff1-Time) seconds.)\n(Effect will be removed when target is attacked)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575219,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501820,503840,502719],"components":[{"id":501820,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":126,"effectFlagWords":[2099,0],"clearFlags":2,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503840,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[51,0],"clearFlags":2,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":491336,"name":"Blinding Powder","description":"Prevents your target from attacking for (Buff0-Time) seconds. \n(For players this effect lasts for (Buff1-Time) seconds.)\n(Effect will be removed when target is attacked)","target":"hostile","range":10,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575219,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501820,503840,502719]}}],"icon":"/assets/ui/rom-spells/575219.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-25","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":541951,"sourceSkillId":492342,"name":"Lasso Master","description":"Your lasso now hinders the target from movement and attacks.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575561,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":492342,"name":"Lasso Master","description":"Your lasso now hinders the target from movement and attacks.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575561,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575561.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-30","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":541981,"sourceSkillId":491496,"name":"Sapping Arrow","description":"Decreases the target's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575576,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501897],"components":[{"id":501897,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":30,"settingFlags":66,"specialActionFlags":0,"assistType":114,"abilityModifiers":[{"type":170,"value":-1},{"type":135,"value":-1}],"abilitySkillLevelArg":28,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":491496,"name":"Sapping Arrow","description":"Decreases the target's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575576,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501897]}}],"icon":"/assets/ui/rom-spells/575576.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-35","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542012,"sourceSkillId":492621,"name":"Deadly Poison Bite","description":"The deadly poison on your arrow inflicts (DMG0) ranged weapon DPS. When the target is under the effect of [501690], Deadly Poison Bite will also cause (DMG4) ranged weapon DPS.","target":"hostile","range":16,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576996,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502890,620183,501690],"components":[{"id":502890,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620183,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.4,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501690,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":492621,"name":"Deadly Poison Bite","description":"The deadly poison on your arrow inflicts (DMG0) ranged weapon DPS. When the target is under the effect of [501690], Deadly Poison Bite will also cause (DMG4) ranged weapon DPS.","target":"hostile","range":16,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576996,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502890,620183,501690]}}],"icon":"/assets/ui/rom-spells/576996.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-40","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":40,"keyItemId":542042,"sourceSkillId":492916,"name":"Exploiting Shot","description":"When your Shot makes a critical hit, you increase your targets received Physical Damage by (Buff0-503169)%. Lasts (Buff-Time-503169) seconds. \n(This skill increases the target's received Physical Damage by a maximum of (Max-Buff0-503169)%.)\n([SC_SKILLTIPS_CD_1](Buff-Time-503453)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577579,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503169,503453],"components":[{"id":503169,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":1342177506,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":-2}],"abilitySkillLevelArg":14,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493245,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503453,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":492916,"name":"Exploiting Shot","description":"When your Shot makes a critical hit, you increase your targets received Physical Damage by (Buff0-503169)%. Lasts (Buff-Time-503169) seconds. \n(This skill increases the target's received Physical Damage by a maximum of (Max-Buff0-503169)%.)\n([SC_SKILLTIPS_CD_1](Buff-Time-503453)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577579,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503169,503453]}}],"icon":"/assets/ui/rom-spells/577579.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-45","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":542072,"sourceSkillId":493007,"name":"Deadly Counterattack","description":"When your Piercing Arrow hits the target, it instantly increases your [SC_SKILLTIPS_CRI].\n([SC_SKILLTIPS_CD_1](Buff-Time-503299)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577647,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503299],"components":[{"id":503299,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.65,"fixedValue":-20,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":493007,"name":"Deadly Counterattack","description":"When your Piercing Arrow hits the target, it instantly increases your [SC_SKILLTIPS_CRI].\n([SC_SKILLTIPS_CD_1](Buff-Time-503299)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577647,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503299]}}],"icon":"/assets/ui/rom-spells/577647.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-50","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":50,"keyItemId":542102,"sourceSkillId":493253,"name":"Poisonous Spit","description":"Keeps your Reflected Shot from losing reflective damage. Also, with every successful hit of your Reflected Shot or Combo Shot, the target will be poisoned if you are carrying Poison Powder.\n([SC_SKILLTIPS_CD_1](Buff-Time-503521)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577777,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503521],"components":[{"id":503521,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":493253,"name":"Poisonous Spit","description":"Keeps your Reflected Shot from losing reflective damage. Also, with every successful hit of your Reflected Shot or Combo Shot, the target will be poisoned if you are carrying Poison Powder.\n([SC_SKILLTIPS_CD_1](Buff-Time-503521)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577777,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503521]}}],"icon":"/assets/ui/rom-spells/577777.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-60","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546750,"sourceSkillId":499534,"name":"Master Reflected Shot","description":"Makes your [499535] fire 2 additional shots. Also increases damage from each [499535].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801267,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499534,"name":"Master Reflected Shot","description":"Makes your [499535] fire 2 additional shots. Also increases damage from each [499535].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801267,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801267.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-rogue-elite-70","classId":"rom-scout","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546751,"sourceSkillId":499536,"name":"Meridian Attack","description":"Makes your [499537] cause an additional decrease in the target's [SC_SKILLTIPS_MDMG]. Also prolongs the effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801315,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499536,"name":"Meridian Attack","description":"Makes your [499537] cause an additional decrease in the target's [SC_SKILLTIPS_MDMG]. Also prolongs the effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801315,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801315.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-15","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541892,"sourceSkillId":491507,"name":"Purifying Arrow","description":"Removes curses and harmful effects from target.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575564,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501908],"components":[{"id":501908,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-5,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491507,"name":"Purifying Arrow","description":"Removes curses and harmful effects from target.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575564,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501908]}}],"icon":"/assets/ui/rom-spells/575564.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-20","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":541922,"sourceSkillId":499538,"name":"Blazing Energy","description":"When activated, power of your Fire based spells increases by (Buff0-0)% and area damage increases by (Buff0-1)%. This effect lasts (Buff0-Time) seconds. If you shoot while this is in effect, there is a chance of casting Fireball automatically.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575706,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501907],"components":[{"id":501907,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":47,"value":2},{"type":208,"value":3}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-5,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":499538,"name":"Blazing Energy","description":"When activated, power of your Fire based spells increases by (Buff0-0)% and area damage increases by (Buff0-1)%. This effect lasts (Buff0-Time) seconds. If you shoot while this is in effect, there is a chance of casting Fireball automatically.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575706,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501907]}}],"icon":"/assets/ui/rom-spells/575706.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-25","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":541952,"sourceSkillId":491509,"name":"Ignite","description":"Inflicts ((DMG0), based on the DPS of the ranged weapon, + (FixDMG-501910) x intelligence) [SC_SKILLTIPS_FLAME] to multiple targets within range.\n\n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575699,"sourceEffectType":0,"sourceTarget":16,"componentIds":[501910],"components":[{"id":501910,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.35,"fixedValue":-0.2,"attack":{"type":0,"calculationType":3,"damagePower":-0.35,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491509,"name":"Ignite","description":"Inflicts ((DMG0), based on the DPS of the ranged weapon, + (FixDMG-501910) x intelligence) [SC_SKILLTIPS_FLAME] to multiple targets within range.\n\n[SC_SKILLTIPS_03]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575699,"sourceEffectType":0,"sourceTarget":16,"componentIds":[501910]}}],"icon":"/assets/ui/rom-spells/575699.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-30","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":541982,"sourceSkillId":491510,"name":"Gone with the Wind","description":"Wind magic makes the caster invisible for (Buff0-Time) seconds, clearing aggro and ending combat.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":575709,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501909,501567],"components":[{"id":501909,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501567,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":16,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491510,"name":"Gone with the Wind","description":"Wind magic makes the caster invisible for (Buff0-Time) seconds, clearing aggro and ending combat.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":575709,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501909,501567]}}],"icon":"/assets/ui/rom-spells/575709.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-35","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":35,"keyItemId":542013,"sourceSkillId":492623,"name":"Cursed Arrow","description":"Puts a poisonous curse on your arrow to inflict (DMG0) damage on the target, based on the DPS of the ranged weapon. After a hit, Healing effects on the target are reduced by (Buff4-0)% for (Buff4-Time) seconds.\n(Received healing of players is reduced by (Buff5-0)% for (Buff5-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50] \n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576997,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502880,502892,504248],"components":[{"id":502880,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502892,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504248,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":492623,"name":"Cursed Arrow","description":"Puts a poisonous curse on your arrow to inflict (DMG0) damage on the target, based on the DPS of the ranged weapon. After a hit, Healing effects on the target are reduced by (Buff4-0)% for (Buff4-Time) seconds.\n(Received healing of players is reduced by (Buff5-0)% for (Buff5-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50] \n[SC_SKILLTIPS_03]","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":576997,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502880,502892,504248]}}],"icon":"/assets/ui/rom-spells/576997.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-40","classId":"rom-scout","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":542043,"sourceSkillId":492918,"name":"Prairie Fire","description":"Increases damage of Ignite and has a chance of triggering Root on your opponent.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577581,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":492918,"name":"Prairie Fire","description":"Increases damage of Ignite and has a chance of triggering Root on your opponent.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577581,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577581.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-45","classId":"rom-scout","secondaryClassId":"rom-mage","group":"passive","unlockLevel":45,"keyItemId":542073,"sourceSkillId":493013,"name":"Wilderness Campaign","description":"When your Combo Shot makes a successful hit, it instantly increases the [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] of all nearby party members.\n([SC_SKILLTIPS_CD_1](Buff-Time-503292)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577648,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503292],"components":[{"id":503292,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":493013,"name":"Wilderness Campaign","description":"When your Combo Shot makes a successful hit, it instantly increases the [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] of all nearby party members.\n([SC_SKILLTIPS_CD_1](Buff-Time-503292)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577648,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503292]}}],"icon":"/assets/ui/rom-spells/577648.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-50","classId":"rom-scout","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":542103,"sourceSkillId":493255,"name":"Aggro Transfer","description":"Using Shot while Aggro Transfer is in effect triggers Secret Hatred, which lasts for (Buff-Time-503574) seconds. While Secret Hatred is in effect, you can transfer your aggro to a party member through the power of the wind.\nAggro Transfer is in effect for (Buff0-Time) seconds, during this time this party member will receive (Buff0-Dot) MP every 2 seconds. \n(In order to transfer aggro to a party member your target needs to be within a range of 500.)\n(Cannot be cast on yourself.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577778,"sourceEffectType":0,"sourceTarget":1,"componentIds":[501912,501911,503574],"components":[{"id":501912,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1048683,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":1,"dotBase":3,"dot":{"timeSeconds":2,"type":1,"base":3,"skillLevelArg":30},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501911,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503574,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":-100,"settingFlags":268435651,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1073741824,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":491512,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":493255,"name":"Aggro Transfer","description":"Using Shot while Aggro Transfer is in effect triggers Secret Hatred, which lasts for (Buff-Time-503574) seconds. While Secret Hatred is in effect, you can transfer your aggro to a party member through the power of the wind.\nAggro Transfer is in effect for (Buff0-Time) seconds, during this time this party member will receive (Buff0-Dot) MP every 2 seconds. \n(In order to transfer aggro to a party member your target needs to be within a range of 500.)\n(Cannot be cast on yourself.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577778,"sourceEffectType":0,"sourceTarget":1,"componentIds":[501912,501911,503574]}}],"icon":"/assets/ui/rom-spells/577778.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-60","classId":"rom-scout","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546752,"sourceSkillId":499539,"name":"Cross-Domain Discipline","description":"Allows you to equip a staff. When hitting a target with your [499540], there is a chance that it will carry ((DMG-623064) + (FixDMG-623064) * INT) wind damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801268,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623062,623064],"components":[{"id":623062,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":91,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623064,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499539,"name":"Cross-Domain Discipline","description":"Allows you to equip a staff. When hitting a target with your [499540], there is a chance that it will carry ((DMG-623064) + (FixDMG-623064) * INT) wind damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801268,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623062,623064]}}],"icon":"/assets/ui/rom-spells/801268.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-mage-elite-70","classId":"rom-scout","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546753,"sourceSkillId":499548,"name":"Wind Return","description":"Earns you a [499548] effect after your [499549] effect wears off. Increases [SC_SKILLTIPS_01] by (Buff0-623070)% and [SC_SKILLTIPS_02] by (Buff1-623070)%. Also recovers (Buff-Dot-623083) HP every two seconds. Lasts (Buff-Time-623070) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801316,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623070,623083],"components":[{"id":623070,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1},{"type":171,"value":1}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623083,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":20,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499548,"name":"Wind Return","description":"Earns you a [499548] effect after your [499549] effect wears off. Increases [SC_SKILLTIPS_01] by (Buff0-623070)% and [SC_SKILLTIPS_02] by (Buff1-623070)%. Also recovers (Buff-Dot-623083) HP every two seconds. Lasts (Buff-Time-623070) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801316,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623070,623083]}}],"icon":"/assets/ui/rom-spells/801316.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-15","classId":"rom-scout","secondaryClassId":"rom-priest","group":"elite","unlockLevel":15,"keyItemId":541893,"sourceSkillId":491504,"name":"Purifying Shot","description":"Removes harmful effects from target.","target":"friendly","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575574,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501904],"components":[{"id":501904,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":-30,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491504,"name":"Purifying Shot","description":"Removes harmful effects from target.","target":"friendly","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575574,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501904]}}],"icon":"/assets/ui/rom-spells/575574.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-20","classId":"rom-scout","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":541923,"sourceSkillId":491513,"name":"Mana Arrows","description":"Casting Mana Arrow to the party members of your range of 50 absorbs all damage equal to (Buff0-Shield)% of the targets' max HP for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":575562,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620186],"components":[{"id":620186,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":5,"skillLevelArg":3}}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":491513,"name":"Mana Arrows","description":"Casting Mana Arrow to the party members of your range of 50 absorbs all damage equal to (Buff0-Shield)% of the targets' max HP for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":575562,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620186]}}],"icon":"/assets/ui/rom-spells/575562.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-25","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":25,"keyItemId":541953,"sourceSkillId":492344,"name":"Sniper","description":"Reduces casting time of Snipe by 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575563,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":492344,"name":"Sniper","description":"Reduces casting time of Snipe by 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575563,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575563.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-30","classId":"rom-scout","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":541983,"sourceSkillId":491335,"name":"Spiritual Leader","description":"Raises the speed of physical attacks and spell casting of you and your party members by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":30,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575218,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501819],"components":[{"id":501819,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":25,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":9,"abilityModifiers":[{"type":23,"value":-2},{"type":51,"value":-2}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":491335,"name":"Spiritual Leader","description":"Raises the speed of physical attacks and spell casting of you and your party members by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":30,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575218,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501819]}}],"icon":"/assets/ui/rom-spells/575218.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-35","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":542014,"sourceSkillId":492622,"name":"Vampiric Transformation","description":"Transforms the blood drawn by your Vampire Arrows into heals for your own group members.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576998,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":492622,"name":"Vampiric Transformation","description":"Transforms the blood drawn by your Vampire Arrows into heals for your own group members.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576998,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/576998.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-40","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":40,"keyItemId":542044,"sourceSkillId":492917,"name":"Target Neck","description":"Extends the range of your Neck Strike, but requires long range weapons.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577582,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":492917,"name":"Target Neck","description":"Extends the range of your Neck Strike, but requires long range weapons.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577582,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577582.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-45","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542074,"sourceSkillId":493010,"name":"Drums of War","description":"Each time you hit your target with a Shot, it instantly increases the [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] of party members near you. Effective for (Buff-Time-503258) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503310)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577649,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503258,503310],"components":[{"id":503258,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":1342177379,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20},{"type":20,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503310,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":493010,"name":"Drums of War","description":"Each time you hit your target with a Shot, it instantly increases the [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] of party members near you. Effective for (Buff-Time-503258) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503310)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577649,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503258,503310]}}],"icon":"/assets/ui/rom-spells/577649.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-50","classId":"rom-scout","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":542104,"sourceSkillId":493254,"name":"Aggro Lead","description":"Using Shot while Aggro Lead is in effect triggers Secret Hatred, which lasts for (Buff-Time-503574) seconds. While Secret Hatred is in effect, you can transfer your aggro to a party member through the power of the wind.\nAggro Lead is in effect for (Buff0-Time) seconds, during this time [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] suffered by this party member are decreased by (Buff0-0)%. (Cannot be cast on yourself.)\n(In order to transfer aggro to a party member your target needs to be within a range of 500.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577779,"sourceEffectType":0,"sourceTarget":1,"componentIds":[501901,509801,501900,503574],"components":[{"id":501901,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":2},{"type":142,"value":0}],"abilitySkillLevelArg":8,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":509801,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":268959969,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":0},{"type":142,"value":2}],"abilitySkillLevelArg":8,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497698,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501900,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503574,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":-100,"settingFlags":268435651,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1073741824,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":491512,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":493254,"name":"Aggro Lead","description":"Using Shot while Aggro Lead is in effect triggers Secret Hatred, which lasts for (Buff-Time-503574) seconds. While Secret Hatred is in effect, you can transfer your aggro to a party member through the power of the wind.\nAggro Lead is in effect for (Buff0-Time) seconds, during this time [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] suffered by this party member are decreased by (Buff0-0)%. (Cannot be cast on yourself.)\n(In order to transfer aggro to a party member your target needs to be within a range of 500.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577779,"sourceEffectType":0,"sourceTarget":1,"componentIds":[501901,509801,501900,503574]}}],"icon":"/assets/ui/rom-spells/577779.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-60","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":60,"keyItemId":546754,"sourceSkillId":499552,"name":"Revival Engraving","description":"Increases your companions' [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-623087)%, reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MDMG] by (Buff1-623087)% after a target is hit by your [490443]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801269,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623087],"components":[{"id":623087,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":144,"value":3},{"type":142,"value":3},{"type":143,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499552,"name":"Revival Engraving","description":"Increases your companions' [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-623087)%, reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MDMG] by (Buff1-623087)% after a target is hit by your [490443]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801269,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623087]}}],"icon":"/assets/ui/rom-spells/801269.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-priest-elite-70","classId":"rom-scout","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546755,"sourceSkillId":499555,"name":"Screen Attack","description":"Causes an additional (Buff0-623089)% increase in damage inflicted by your and your friendly targets' [499578]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801317,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623089],"components":[{"id":623089,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":2},{"type":192,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499555,"name":"Screen Attack","description":"Causes an additional (Buff0-623089)% increase in damage inflicted by your and your friendly targets' [499578]. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801317,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623089]}}],"icon":"/assets/ui/rom-spells/801317.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-15","classId":"rom-scout","secondaryClassId":"rom-knight","group":"elite","unlockLevel":15,"keyItemId":541894,"sourceSkillId":491516,"name":"Repelling Arrow","description":"Repelling your target Roots it for (Buff4-Time) seconds and inflicts (DMG0) ranged weapon DPS.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575573,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502016,502013,503847],"components":[{"id":502016,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":2,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502013,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilityModifiers":[{"type":0,"value":-60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503847,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilityModifiers":[{"type":0,"value":-60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":491516,"name":"Repelling Arrow","description":"Repelling your target Roots it for (Buff4-Time) seconds and inflicts (DMG0) ranged weapon DPS.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575573,"sourceEffectType":1,"sourceTarget":6,"componentIds":[502016,502013,503847]}}],"icon":"/assets/ui/rom-spells/575573.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-20","classId":"rom-scout","secondaryClassId":"rom-knight","group":"elite","unlockLevel":20,"keyItemId":541924,"sourceSkillId":499558,"name":"Healing Shot","description":"Fires one Shot at the target causing (DMG0) ranged weapon DPS. When it hits, it will also heal the party member with the lowest maximum HP by (DMG-501888) + (FixDMG-501888) x (ranged weapon damage).","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575703,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620194,623090,501888],"components":[{"id":620194,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623090,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501888,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":23,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0.2,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":18,"fixedValue":0.2,"fixedType":3,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":499558,"name":"Healing Shot","description":"Fires one Shot at the target causing (DMG0) ranged weapon DPS. When it hits, it will also heal the party member with the lowest maximum HP by (DMG-501888) + (FixDMG-501888) x (ranged weapon damage).","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575703,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620194,623090,501888]}}],"icon":"/assets/ui/rom-spells/575703.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-25","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":25,"keyItemId":541954,"sourceSkillId":492346,"name":"Enhanced Armor Perfection","description":"Enhanced Armor now lasts (Buff-Time-501823) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575568,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501823],"components":[{"id":501823,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":2,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":492346,"name":"Enhanced Armor Perfection","description":"Enhanced Armor now lasts (Buff-Time-501823) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575568,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501823]}}],"icon":"/assets/ui/rom-spells/575568.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-30","classId":"rom-scout","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541984,"sourceSkillId":491519,"name":"Mana Conversion","description":"Converts mana into (DMG0) focus points.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":5,"percentage":true},{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575701,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502019],"components":[{"id":502019,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":10,"fixedValue":0,"attack":{"type":3,"calculationType":4,"damagePower":10,"damagePowerSkillLevelArg":18,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491519,"name":"Mana Conversion","description":"Converts mana into (DMG0) focus points.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":5,"percentage":true},{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575701,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502019]}}],"icon":"/assets/ui/rom-spells/575701.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-35","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":35,"keyItemId":542015,"sourceSkillId":492624,"name":"Mana Recovery","description":"Gives your Healing Shots an additional chance of recovering mana.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576999,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492624,"name":"Mana Recovery","description":"Gives your Healing Shots an additional chance of recovering mana.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":576999,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/576999.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-40","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":40,"keyItemId":542045,"sourceSkillId":490431,"name":"Armor-Piercing Arrow","description":"Extends the range of your Disarmament. The damage caused is increased according to the DPS of the ranged weapon. (Requires ranged weapon.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577583,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":490431,"name":"Armor-Piercing Arrow","description":"Extends the range of your Disarmament. The damage caused is increased according to the DPS of the ranged weapon. (Requires ranged weapon.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577583,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577583.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-45","classId":"rom-scout","secondaryClassId":"rom-knight","group":"elite","unlockLevel":45,"keyItemId":542075,"sourceSkillId":493016,"name":"Escape Danger","description":"For (Buff0-Time) seconds you are immune against Helpless, Stun, Root, and Slow effects.\n(Effect can only be removed if target has Movement Impairing Effect or Stun)\n[SC_SKILLTIPS_FEAR]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577650,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503261],"components":[{"id":503261,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493016,"name":"Escape Danger","description":"For (Buff0-Time) seconds you are immune against Helpless, Stun, Root, and Slow effects.\n(Effect can only be removed if target has Movement Impairing Effect or Stun)\n[SC_SKILLTIPS_FEAR]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577650,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503261]}}],"icon":"/assets/ui/rom-spells/577650.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-50","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":50,"keyItemId":542105,"sourceSkillId":493256,"name":"Spirit Meld","description":"Keeps your Reflected Shots from losing reflective damage. Also, with every successful hit of your Reflected Shot, it boosts the [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] of party members within a radius of 100.\n([SC_SKILLTIPS_CD_1](Buff-Time-503563)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577780,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503563],"components":[{"id":503563,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493256,"name":"Spirit Meld","description":"Keeps your Reflected Shots from losing reflective damage. Also, with every successful hit of your Reflected Shot, it boosts the [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] of party members within a radius of 100.\n([SC_SKILLTIPS_CD_1](Buff-Time-503563)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577780,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503563]}}],"icon":"/assets/ui/rom-spells/577780.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-60","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546756,"sourceSkillId":499561,"name":"Blessed Quiver","description":"Reduces your [499562] cooldown time by 4 seconds. Also increases your [499562] critical hit rate. When your [499562] is a critical attack, it will definitely trigger a [492624].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801270,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499561,"name":"Blessed Quiver","description":"Reduces your [499562] cooldown time by 4 seconds. Also increases your [499562] critical hit rate. When your [499562] is a critical attack, it will definitely trigger a [492624].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801270,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801270.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-knight-elite-70","classId":"rom-scout","secondaryClassId":"rom-knight","group":"passive","unlockLevel":70,"keyItemId":546757,"sourceSkillId":499564,"name":"Transformation Torrent","description":"When you use [499565], it affects all companions in a range of 90 by recovering Energy, Rage, and Focus.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801318,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":499564,"name":"Transformation Torrent","description":"When you use [499565], it affects all companions in a range of 90 by recovering Energy, Rage, and Focus.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801318,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801318.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-15","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":15,"keyItemId":543018,"sourceSkillId":494037,"name":"Thorn Arrow","description":"Use it when you have a Briar Shield to turn the thorns that surround you into thorn arrows that attack your target inflicting (DMG0) ranged weapon DPS. (The Briar Shield will not disappear.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579107,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504546],"components":[{"id":504546,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.8,"damagePowerSkillLevelArg":5.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494037,"name":"Thorn Arrow","description":"Use it when you have a Briar Shield to turn the thorns that surround you into thorn arrows that attack your target inflicting (DMG0) ranged weapon DPS. (The Briar Shield will not disappear.)","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579107,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504546]}}],"icon":"/assets/ui/rom-spells/579107.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-20","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":20,"keyItemId":543026,"sourceSkillId":494038,"name":"Entling Offering","description":"For (Buff0-Time) seconds, each time your Shot hits a target, the target will also take ranged damage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579108,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504547],"components":[{"id":504547,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494038,"name":"Entling Offering","description":"For (Buff0-Time) seconds, each time your Shot hits a target, the target will also take ranged damage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579108,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504547]}}],"icon":"/assets/ui/rom-spells/579108.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-25","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":25,"keyItemId":543034,"sourceSkillId":494039,"name":"Hidden Peril","description":"You attack your target using the forest for cover, inflicting (DMG0) ranged weapon DPS on the target. There is a chance of reducing the casting time of Snipe to 1 second the next time you cast it.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579109,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504548,504588],"components":[{"id":504548,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504588,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494039,"name":"Hidden Peril","description":"You attack your target using the forest for cover, inflicting (DMG0) ranged weapon DPS on the target. There is a chance of reducing the casting time of Snipe to 1 second the next time you cast it.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579109,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504548,504588]}}],"icon":"/assets/ui/rom-spells/579109.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-30","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":30,"keyItemId":543042,"sourceSkillId":494326,"name":"Charged Power","description":"Your Charged Chop can be activated from a distance, but cooldown is changed to 15 seconds and it also causes a Knockdown effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579885,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494326,"name":"Charged Power","description":"Your Charged Chop can be activated from a distance, but cooldown is changed to 15 seconds and it also causes a Knockdown effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579885,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579885.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-35","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":35,"keyItemId":543050,"sourceSkillId":494378,"name":"Natural Care","description":"Permanently increases the amount of healing you receive by (Buff0-0)%, and also increases your ranged weapon damage by (Buff4-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579886,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504905,505169],"components":[{"id":504905,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":144,"value":1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505169,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":52,"value":1}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494378,"name":"Natural Care","description":"Permanently increases the amount of healing you receive by (Buff0-0)%, and also increases your ranged weapon damage by (Buff4-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579886,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504905,505169]}}],"icon":"/assets/ui/rom-spells/579886.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-40","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":40,"keyItemId":543058,"sourceSkillId":494379,"name":"Hide Scent","description":"While merged with your surrounding, all enemies will lose interest in you allowing you to leave combat for (Buff0-Time) seconds and erasing all aggro. Additionally, your next Hidden Peril damage is increased by (Buff0-505194)% for (Buff4-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":579887,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504906,505193,501567,505194],"components":[{"id":504906,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505193,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501567,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":16,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505194,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":8193,"abilityModifiers":[{"type":173,"value":20}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":494379,"name":"Hide Scent","description":"While merged with your surrounding, all enemies will lose interest in you allowing you to leave combat for (Buff0-Time) seconds and erasing all aggro. Additionally, your next Hidden Peril damage is increased by (Buff0-505194)% for (Buff4-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":579887,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504906,505193,501567,505194]}}],"icon":"/assets/ui/rom-spells/579887.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-45","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":45,"keyItemId":543066,"sourceSkillId":494628,"name":"Wind Attack","description":"Your Combo Shots cannot be interrupted by damage. Also, when you make a critical hit it will additionally decrease the target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE].\n([SC_SKILLTIPS_CD_1](Buff-Time-507327)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581102,"sourceEffectType":2,"sourceTarget":0,"componentIds":[507327],"components":[{"id":507327,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":494628,"name":"Wind Attack","description":"Your Combo Shots cannot be interrupted by damage. Also, when you make a critical hit it will additionally decrease the target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE].\n([SC_SKILLTIPS_CD_1](Buff-Time-507327)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581102,"sourceEffectType":2,"sourceTarget":0,"componentIds":[507327]}}],"icon":"/assets/ui/rom-spells/581102.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-50","classId":"rom-scout","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543074,"sourceSkillId":494629,"name":"Gryphon Bash","description":"Like a mighty gryphon using its sharp claws to attack an enemy, it shoots a fierce arrow, causing (DMG0) ranged weapon DPS. When the target is struck, it may also damage all targets within a radius of 80.\n(This skill has a fairly high chance to make a critical hit.)","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581103,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620195],"components":[{"id":620195,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":10,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494629,"name":"Gryphon Bash","description":"Like a mighty gryphon using its sharp claws to attack an enemy, it shoots a fierce arrow, causing (DMG0) ranged weapon DPS. When the target is struck, it may also damage all targets within a radius of 80.\n(This skill has a fairly high chance to make a critical hit.)","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581103,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620195]}}],"icon":"/assets/ui/rom-spells/581103.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-60","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":60,"keyItemId":546758,"sourceSkillId":499571,"name":"Deep Roots","description":"Increases the distance of your [499573] reflected shot to 180. Also each reflected shot has a a chance to root the enemy for (Buff-Time-623114) seconds. \n(When the reflected shot target is a player, the rooting effect is reduced.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801271,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623114],"components":[{"id":623114,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499571,"name":"Deep Roots","description":"Increases the distance of your [499573] reflected shot to 180. Also each reflected shot has a a chance to root the enemy for (Buff-Time-623114) seconds. \n(When the reflected shot target is a player, the rooting effect is reduced.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801271,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623114]}}],"icon":"/assets/ui/rom-spells/801271.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-warden-elite-70","classId":"rom-scout","secondaryClassId":"rom-warden","group":"passive","unlockLevel":70,"keyItemId":546759,"sourceSkillId":499575,"name":"Forest Guidance","description":"When a target is hit by your [499576], it causes a (Buff0-623117)% increase in [SC_SKILLTIPS_DMG] received by the enemy. Lasts for (Buff-Time-623117) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801319,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623117],"components":[{"id":623117,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":143,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499575,"name":"Forest Guidance","description":"When a target is hit by your [499576], it causes a (Buff0-623117)% increase in [SC_SKILLTIPS_DMG] received by the enemy. Lasts for (Buff-Time-623117) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801319,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623117]}}],"icon":"/assets/ui/rom-spells/801319.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-15","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543019,"sourceSkillId":494040,"name":"Curse Breaker","description":"Removes target's cursed status. (Requires ranged weapon.)","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579110,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504549],"components":[{"id":504549,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494040,"name":"Curse Breaker","description":"Removes target's cursed status. (Requires ranged weapon.)","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579110,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504549]}}],"icon":"/assets/ui/rom-spells/579110.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-20","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":20,"keyItemId":543027,"sourceSkillId":499583,"name":"Snake Poison Arrow","description":"Turns your magic into poisonous snakes, inflicting (DMG0) ranged weapon DPS and (Buff4-Dot) poison every 2 seconds for (Buff4-Time) seconds. When the target is affected by Vampire Arrows, it will stun the target for (Buff8-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579111,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504550,504590,504589,501690],"components":[{"id":504550,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504590,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-11,"dot":{"timeSeconds":2,"type":0,"base":-11,"skillLevelArg":24},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504589,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777331,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501690,"magicFunc":1,"magicType":5,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":499583,"name":"Snake Poison Arrow","description":"Turns your magic into poisonous snakes, inflicting (DMG0) ranged weapon DPS and (Buff4-Dot) poison every 2 seconds for (Buff4-Time) seconds. When the target is affected by Vampire Arrows, it will stun the target for (Buff8-Time) seconds.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579111,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504550,504590,504589,501690]}}],"icon":"/assets/ui/rom-spells/579111.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-25","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":25,"keyItemId":543035,"sourceSkillId":494042,"name":"Unbinding Magic","description":"Removes Root and Slow from target's body. (Requires ranged weapon)\n(Effective only when the Movement Impairing Effect on the target is displayed.)","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579112,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504551],"components":[{"id":504551,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494042,"name":"Unbinding Magic","description":"Removes Root and Slow from target's body. (Requires ranged weapon)\n(Effective only when the Movement Impairing Effect on the target is displayed.)","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579112,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504551]}}],"icon":"/assets/ui/rom-spells/579112.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-30","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":30,"keyItemId":543043,"sourceSkillId":494327,"name":"Elven Eye","description":"Temporarily increases critical physical hit rate by (Buff0-0) points for (Buff0-Time) seconds. Every second costs (Buff0-Dot)% mana.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579888,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504719],"components":[{"id":504719,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":34,"clearFlags":2048,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":22,"dotTime":2,"dotType":6,"dotBase":-5,"dot":{"timeSeconds":2,"type":6,"base":-5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494327,"name":"Elven Eye","description":"Temporarily increases critical physical hit rate by (Buff0-0) points for (Buff0-Time) seconds. Every second costs (Buff0-Dot)% mana.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579888,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504719]}}],"icon":"/assets/ui/rom-spells/579888.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-35","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":35,"keyItemId":543051,"sourceSkillId":494380,"name":"Devour Blood","description":"A successful hit of your Vampire Arrows restores MP to party members in a range of 100.\n([SC_SKILLTIPS_CD_1](Buff-Time-506370)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579889,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506370],"components":[{"id":506370,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":494380,"name":"Devour Blood","description":"A successful hit of your Vampire Arrows restores MP to party members in a range of 100.\n([SC_SKILLTIPS_CD_1](Buff-Time-506370)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579889,"sourceEffectType":2,"sourceTarget":0,"componentIds":[506370]}}],"icon":"/assets/ui/rom-spells/579889.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-40","classId":"rom-scout","secondaryClassId":"rom-druid","group":"elite","unlockLevel":40,"keyItemId":543059,"sourceSkillId":494529,"name":"Focus","description":"For (Buff-Time-504908) seconds 50% of your wisdom will be converted into [SC_SKILLTIPS_01].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579890,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505273,504908],"components":[{"id":505273,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504908,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":268435559,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":12,"value":1}],"abilitySkillLevelArg":100,"triggers":{"onTimeMagicId":494681,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494529,"name":"Focus","description":"For (Buff-Time-504908) seconds 50% of your wisdom will be converted into [SC_SKILLTIPS_01].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579890,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505273,504908]}}],"icon":"/assets/ui/rom-spells/579890.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-45","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":45,"keyItemId":543067,"sourceSkillId":494919,"name":"Archer Blessing","description":"When your shot hits a target, the damage received from the next attack for 3 party members or pets is reduced.\n([SC_SKILLTIPS_CD_1](Buff-Time-505718)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581104,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505718],"components":[{"id":505718,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494919,"name":"Archer Blessing","description":"When your shot hits a target, the damage received from the next attack for 3 party members or pets is reduced.\n([SC_SKILLTIPS_CD_1](Buff-Time-505718)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581104,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505718]}}],"icon":"/assets/ui/rom-spells/581104.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-50","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":50,"keyItemId":543075,"sourceSkillId":499584,"name":"Ancestor's Blessing","description":"Permanently reduces the damage you receive by (Buff0-0)% and when you strike a target with Piercing Arrow, the aggro caused by the next action of the party member with the second most aggro will be reduced.\n([SC_SKILLTIPS_CD_1](Buff-Time-503954)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581105,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505684,503954],"components":[{"id":505684,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":1},{"type":143,"value":1}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503954,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":499584,"name":"Ancestor's Blessing","description":"Permanently reduces the damage you receive by (Buff0-0)% and when you strike a target with Piercing Arrow, the aggro caused by the next action of the party member with the second most aggro will be reduced.\n([SC_SKILLTIPS_CD_1](Buff-Time-503954)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581105,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505684,503954]}}],"icon":"/assets/ui/rom-spells/581105.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-60","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546760,"sourceSkillId":499587,"name":"Efficiency Guidance","description":"When your [499592] is triggered, it recovers (DMG-623151) of your companions' Rage, Focus, and Energy. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801272,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623151],"components":[{"id":623151,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":2,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":2,"damagePowerSkillLevelArg":28,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499587,"name":"Efficiency Guidance","description":"When your [499592] is triggered, it recovers (DMG-623151) of your companions' Rage, Focus, and Energy. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801272,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623151]}}],"icon":"/assets/ui/rom-spells/801272.png","iconResolution":"native-interface-fdb"},{"id":"rom-scout-rom-druid-elite-70","classId":"rom-scout","secondaryClassId":"rom-druid","group":"passive","unlockLevel":70,"keyItemId":546761,"sourceSkillId":499594,"name":"Soul Blessing","description":"When your [494919] is triggered, it affects your entire party and has an enhanced effect.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801320,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499594,"name":"Soul Blessing","description":"When your [494919] is triggered, it affects your entire party and has an enhanced effect.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801320,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801320.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-15","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":15,"keyItemId":541895,"sourceSkillId":491526,"name":"Throwing Mastery","description":"Your Throw can now Slow the target for 5 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575245,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491526,"name":"Throwing Mastery","description":"Your Throw can now Slow the target for 5 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575245,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575245.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-20","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":541925,"sourceSkillId":491527,"name":"One-Hand Axe Mastery","description":"One-hand axe damage increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575734,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620315],"components":[{"id":620315,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":61,"value":5}],"abilitySkillLevelArg":26,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":491527,"name":"One-Hand Axe Mastery","description":"One-hand axe damage increases by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575734,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620315]}}],"icon":"/assets/ui/rom-spells/575734.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-25","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":541955,"sourceSkillId":492349,"name":"Whirlwind Mastery","description":"Reduces the cost of Whirlwind by 20 rage and decreases cooldown by 20 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575738,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":492349,"name":"Whirlwind Mastery","description":"Reduces the cost of Whirlwind by 20 rage and decreases cooldown by 20 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575738,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575738.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-30","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":541985,"sourceSkillId":491339,"name":"Death's Touch","description":"For (Buff8-Time) seconds causes (DMG4) main hand weapon DPS + (FixDMG4) x Dexterity physical damage to your target, reduces healing effects received by the target by (Buff0-0)% and increases your [SC_SKILLTIPS_01] by (Buff8-0)%.\n(This skill reduces the target's received healing by a maximum of (Max-Buff0-501815)%.)\n(Received healing of players is reduced by (Buff1-0)% for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575222,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501815,506383,620285,506222],"components":[{"id":501815,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":48,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506383,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":48,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620285,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":7,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":506222,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":491339,"name":"Death's Touch","description":"For (Buff8-Time) seconds causes (DMG4) main hand weapon DPS + (FixDMG4) x Dexterity physical damage to your target, reduces healing effects received by the target by (Buff0-0)% and increases your [SC_SKILLTIPS_01] by (Buff8-0)%.\n(This skill reduces the target's received healing by a maximum of (Max-Buff0-501815)%.)\n(Received healing of players is reduced by (Buff1-0)% for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575222,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501815,506383,620285,506222]}}],"icon":"/assets/ui/rom-spells/575222.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-35","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542016,"sourceSkillId":492625,"name":"Poisonous Infection","description":"While Poisonous, each successful hit can poison the target inflicting (Buff4-Dot) poison damage every 2 seconds. Additionally (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage is dealt to the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577000,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620287,502894,500715],"components":[{"id":620287,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":7.5,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502894,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":113,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-12,"dot":{"timeSeconds":2,"type":0,"base":-12,"skillLevelArg":35},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":500715,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":106,"onAttackTrigger":{"rate":50,"rank":0,"id":490357},"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":492625,"name":"Poisonous Infection","description":"While Poisonous, each successful hit can poison the target inflicting (Buff4-Dot) poison damage every 2 seconds. Additionally (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage is dealt to the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577000,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620287,502894,500715]}}],"icon":"/assets/ui/rom-spells/577000.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-40","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":542046,"sourceSkillId":492920,"name":"Poison Spray","description":"Can be used when the target is Poisoned from a Poisonous Infection to spread the poison to nearby targets and cause (DMG-503223) damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":2},"source":{"imageId":577591,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503222,503223],"components":[{"id":503222,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503223,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-200,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492920,"name":"Poison Spray","description":"Can be used when the target is Poisoned from a Poisonous Infection to spread the poison to nearby targets and cause (DMG-503223) damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":2},"source":{"imageId":577591,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503222,503223]}}],"icon":"/assets/ui/rom-spells/577591.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-45","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":45,"keyItemId":542076,"sourceSkillId":493017,"name":"Decay","description":"Can be used when Poisonous. It causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage and increases your [SC_SKILLTIPS_CRI] by (Buff8-0) and [SC_SKILLTIPS_CRI_POWER] by (Buff4-0)%. Effective for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503309)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577651,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620288,503263,506231,503309],"components":[{"id":620288,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.85,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.85,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503263,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":1}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493179,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506231,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503309,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":493017,"name":"Decay","description":"Can be used when Poisonous. It causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage and increases your [SC_SKILLTIPS_CRI] by (Buff8-0) and [SC_SKILLTIPS_CRI_POWER] by (Buff4-0)%. Effective for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503309)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577651,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620288,503263,506231,503309]}}],"icon":"/assets/ui/rom-spells/577651.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-50","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":542106,"sourceSkillId":493257,"name":"Reclaim Energy","description":"When you use Shadowstab, you have a chance of recovering energy. When you use Poisonous Infection, there is a chance that your rage will increase.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577781,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":493257,"name":"Reclaim Energy","description":"When you use Shadowstab, you have a chance of recovering energy. When you use Poisonous Infection, there is a chance that your rage will increase.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577781,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577781.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-60","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546762,"sourceSkillId":499476,"name":"Toxic Splash","description":"Makes [499477] trigger a [493296] effect that causes damage and poisons all surrounding enemies.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801273,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499476,"name":"Toxic Splash","description":"Makes [499477] trigger a [493296] effect that causes damage and poisons all surrounding enemies.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801273,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801273.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warrior-elite-70","classId":"rom-rogue","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546763,"sourceSkillId":499480,"name":"Poison Battle Technique","description":"If target hit by your [499481] has a [499476] effect, then extra damage is inflicted.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801321,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499480,"name":"Poison Battle Technique","description":"If target hit by your [499481] has a [499476] effect, then extra damage is inflicted.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801321,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801321.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-15","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":15,"keyItemId":545984,"sourceSkillId":498826,"name":"Confusion Mechanism","description":"Creates a Confusion Mechanism near the target. This mechanism forces the target to attack it and reduces the target's [SC_SKILLTIPS_DEF] by (Buff0-621600)% and [SC_SKILLTIPS_MDEF] by (Buff0-621600)% in the process. Confusion Mechanism exists for 3 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800184,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623430,621601,621653,621600],"components":[{"id":623430,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[262144,0],"abilityModifiers":[{"type":135,"value":-5},{"type":170,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621601,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621600,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[262144,0],"abilityModifiers":[{"type":135,"value":-5},{"type":170,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498826,"name":"Confusion Mechanism","description":"Creates a Confusion Mechanism near the target. This mechanism forces the target to attack it and reduces the target's [SC_SKILLTIPS_DEF] by (Buff0-621600)% and [SC_SKILLTIPS_MDEF] by (Buff0-621600)% in the process. Confusion Mechanism exists for 3 seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800184,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623430,621601,621653,621600]}}],"icon":"/assets/ui/rom-spells/800184.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-20","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":545985,"sourceSkillId":498828,"name":"Foot Mechanism","description":"Creates a Foot Mechanism under the caster's feet. When a a friendly target hits the mechanism, it will increase [SC_SKILLTIPS_MOVE] by (Buff0-621605)% for (Buff-Time-621605) seconds. This mechanism will affect a maximum of 6 friendly targets or last for 30 seconds then disappear.","target":"self","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800185,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623432,621604,621653,621605],"components":[{"id":623432,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621604,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621605,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498828,"name":"Foot Mechanism","description":"Creates a Foot Mechanism under the caster's feet. When a a friendly target hits the mechanism, it will increase [SC_SKILLTIPS_MOVE] by (Buff0-621605)% for (Buff-Time-621605) seconds. This mechanism will affect a maximum of 6 friendly targets or last for 30 seconds then disappear.","target":"self","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800185,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623432,621604,621653,621605]}}],"icon":"/assets/ui/rom-spells/800185.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-25","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":25,"keyItemId":545986,"sourceSkillId":498830,"name":"Stepping Mechanism","description":"Creates a Stepping Mechanism under the caster's feet. When a target passes through the mechanism, it will activate and create a Slow area which reduces the [SC_SKILLTIPS_MOVE] of targets in the area by (Buff0-621608)%. This mechanism lasts for 10 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800186,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623429,621606,621653,621608],"components":[{"id":623429,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621606,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621608,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":2,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498830,"name":"Stepping Mechanism","description":"Creates a Stepping Mechanism under the caster's feet. When a target passes through the mechanism, it will activate and create a Slow area which reduces the [SC_SKILLTIPS_MOVE] of targets in the area by (Buff0-621608)%. This mechanism lasts for 10 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800186,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623429,621606,621653,621608]}}],"icon":"/assets/ui/rom-spells/800186.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-30","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":30,"keyItemId":545987,"sourceSkillId":498833,"name":"Silent Rune Bomb","description":"Drops a Silent Rune Bomb that inflicts (DMG0) main hand weapon [SC_SKILLTIPS_NONE] DPS on targets in the area. Also carries a Silenced effect for (Buff4-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800187,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621609,621610,621653],"components":[{"id":621609,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621610,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":22,"effectFlagWords":[1,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498833,"name":"Silent Rune Bomb","description":"Drops a Silent Rune Bomb that inflicts (DMG0) main hand weapon [SC_SKILLTIPS_NONE] DPS on targets in the area. Also carries a Silenced effect for (Buff4-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800187,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621609,621610,621653]}}],"icon":"/assets/ui/rom-spells/800187.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-35","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":35,"keyItemId":545988,"sourceSkillId":498834,"name":"Pulse Rune Bomb","description":"Drops a Pulse Rune Bomb that inflicts (DMG0) main hand weapon [SC_SKILLTIPS_NONE] DPS on targets in the area. Also carries a Stunned effect for (Buff4-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800188,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621609,621611,621653],"components":[{"id":621609,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621611,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498834,"name":"Pulse Rune Bomb","description":"Drops a Pulse Rune Bomb that inflicts (DMG0) main hand weapon [SC_SKILLTIPS_NONE] DPS on targets in the area. Also carries a Stunned effect for (Buff4-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800188,"sourceEffectType":1,"sourceTarget":16,"componentIds":[621609,621611,621653]}}],"icon":"/assets/ui/rom-spells/800188.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-40","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"passive","unlockLevel":40,"keyItemId":545989,"sourceSkillId":498836,"name":"Mechanism Activation Spike","description":"Each time an elite skill is used , your next normal attack will cause extra damage. Lasts for (Buff-Time-621613) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800189,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621613],"components":[{"id":621613,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":181,"value":100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498836,"name":"Mechanism Activation Spike","description":"Each time an elite skill is used , your next normal attack will cause extra damage. Lasts for (Buff-Time-621613) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800189,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621613]}}],"icon":"/assets/ui/rom-spells/800189.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-45","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":45,"keyItemId":545990,"sourceSkillId":498837,"name":"Burying Mechanism","description":"Creates a Burying Mechanism under the caster's feet. When a target passes through the mechanism, it activates and increases the damage received by the target by (Buff0-621651)%. It also reduces the target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE] by (Buff2-621651) for (Buff-Time-621651) seconds. This mechanism lasts for 25 seconds. \n\n(Only one mechanism can exist at a time.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800190,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623431,621614,621653,621651],"components":[{"id":623431,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621614,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621651,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":-10},{"type":143,"value":-10},{"type":183,"value":-100},{"type":182,"value":-100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498837,"name":"Burying Mechanism","description":"Creates a Burying Mechanism under the caster's feet. When a target passes through the mechanism, it activates and increases the damage received by the target by (Buff0-621651)%. It also reduces the target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE] by (Buff2-621651) for (Buff-Time-621651) seconds. This mechanism lasts for 25 seconds. \n\n(Only one mechanism can exist at a time.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800190,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623431,621614,621653,621651]}}],"icon":"/assets/ui/rom-spells/800190.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-50","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"passive","unlockLevel":50,"keyItemId":545991,"sourceSkillId":498839,"name":"Nerve Gear","description":"Every time an elite skill is used, it increases [SC_SKILLTIPS_DPS] by (Buff0-621652)% and [SC_SKILLTIPS_DOGEP] by (Buff1-621652)% for (Buff-Time-621652) seconds. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800191,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621652],"components":[{"id":621652,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-5},{"type":198,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498839,"name":"Nerve Gear","description":"Every time an elite skill is used, it increases [SC_SKILLTIPS_DPS] by (Buff0-621652)% and [SC_SKILLTIPS_DOGEP] by (Buff1-621652)% for (Buff-Time-621652) seconds. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800191,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621652]}}],"icon":"/assets/ui/rom-spells/800191.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-60","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"passive","unlockLevel":60,"keyItemId":546778,"sourceSkillId":499817,"name":"Guidance Feedback","description":"Each time the mechanism is triggered it reduces the cooldown time of all mechanism skills to 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801620,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":499817,"name":"Guidance Feedback","description":"Each time the mechanism is triggered it reduces the cooldown time of all mechanism skills to 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801620,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801620.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-champion-elite-70","classId":"rom-rogue","secondaryClassId":"rom-champion","group":"elite","unlockLevel":70,"keyItemId":546779,"sourceSkillId":499816,"name":"Electrocution Mechanism","description":"Creates a mechanism at the casting location that continuously releases electrical shocks to enemies within a range of 60 at a maximum of three targets per second. The electrical shocks inflict (DMG-623471) main hand weapon DPS for (Buff-Time-623479) seconds.\n[SC_SKILLTIPS_03]\n(Affected targets will be in a state of Electrocution)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801621,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623470,621653,623471,623479],"components":[{"id":623470,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621653,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498835,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623471,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":8388608,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-5,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623479,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":5,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":499815,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":499816,"name":"Electrocution Mechanism","description":"Creates a mechanism at the casting location that continuously releases electrical shocks to enemies within a range of 60 at a maximum of three targets per second. The electrical shocks inflict (DMG-623471) main hand weapon DPS for (Buff-Time-623479) seconds.\n[SC_SKILLTIPS_03]\n(Affected targets will be in a state of Electrocution)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":45000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801621,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623470,621653,623471,623479]}}],"icon":"/assets/ui/rom-spells/801621.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-15","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":15,"keyItemId":541896,"sourceSkillId":491530,"name":"Deadly Shot","description":"Increases your Shot's critical hit rate by 30%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575565,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491530,"name":"Deadly Shot","description":"Increases your Shot's critical hit rate by 30%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575565,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575565.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-20","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":541926,"sourceSkillId":491532,"name":"Slit Throat","description":"Your Throat Attack now also Silences the target for 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575739,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":491532,"name":"Slit Throat","description":"Your Throat Attack now also Silences the target for 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575739,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575739.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-25","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":541956,"sourceSkillId":491528,"name":"Energy Thief","description":"Every normal attack restores 20 points of energy. This effect will last (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575560,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501924],"components":[{"id":501924,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"onAttackTrigger":{"rate":100,"rank":1,"id":491529},"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":491528,"name":"Energy Thief","description":"Every normal attack restores 20 points of energy. This effect will last (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575560,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501924]}}],"icon":"/assets/ui/rom-spells/575560.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-30","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":541986,"sourceSkillId":491525,"name":"Combat Master","description":"Raises your [SC_SKILLTIPS_CRI] by (Buff0-0) and enhances [SC_SKILLTIPS_CRI_POWER] by (Buff4-0)% for (Buff0-Time) seconds.\n(This skill increases [SC_SKILLTIPS_CRI_POWER] by a maximum of (Max-Buff0-506223)%.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575566,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501921,506223],"components":[{"id":501921,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":34,"abilityModifiers":[{"type":18,"value":25}],"abilitySkillLevelArg":15.3,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495281,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506223,"magicFunc":1,"magicType":4,"effectType":1,"effectTime":900,"hateCost":-10,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":491525,"name":"Combat Master","description":"Raises your [SC_SKILLTIPS_CRI] by (Buff0-0) and enhances [SC_SKILLTIPS_CRI_POWER] by (Buff4-0)% for (Buff0-Time) seconds.\n(This skill increases [SC_SKILLTIPS_CRI_POWER] by a maximum of (Max-Buff0-506223)%.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575566,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501921,506223]}}],"icon":"/assets/ui/rom-spells/575566.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-35","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":542017,"sourceSkillId":492626,"name":"Substitute","description":"Conjures a substitute for you for (Buff0-Time) seconds to take 1 physical attack for you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":20000},"source":{"imageId":577001,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620305],"components":[{"id":620305,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":1,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":492626,"name":"Substitute","description":"Conjures a substitute for you for (Buff0-Time) seconds to take 1 physical attack for you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":20000},"source":{"imageId":577001,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620305]}}],"icon":"/assets/ui/rom-spells/577001.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-40","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":542047,"sourceSkillId":492922,"name":"Tongue Poison","description":"Using [492922] on your target causes the target's Casting Time to increase by (Buff0-0)% for (Buff0-Time) seconds.\n(Casting time of players increases by (Buff1-0)% for (Buff1-Time) seconds.)\n(Consumes one poison bottle.)","target":"hostile","range":12,"castTimeMs":1000,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577594,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503180,504246],"components":[{"id":503180,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504246,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":492922,"name":"Tongue Poison","description":"Using [492922] on your target causes the target's Casting Time to increase by (Buff0-0)% for (Buff0-Time) seconds.\n(Casting time of players increases by (Buff1-0)% for (Buff1-Time) seconds.)\n(Consumes one poison bottle.)","target":"hostile","range":12,"castTimeMs":1000,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577594,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503180,504246]}}],"icon":"/assets/ui/rom-spells/577594.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-45","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":542077,"sourceSkillId":493019,"name":"Coerce","description":"The energy cost for using Low Blow is reduced by 5. When your target's HP drops below 30%, using Low Blow on your target will increase the damage of your physical attack by (Buff0-503264)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577652,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503264],"components":[{"id":503264,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":8192,"abilityModifiers":[{"type":173,"value":2}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":493019,"name":"Coerce","description":"The energy cost for using Low Blow is reduced by 5. When your target's HP drops below 30%, using Low Blow on your target will increase the damage of your physical attack by (Buff0-503264)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577652,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503264]}}],"icon":"/assets/ui/rom-spells/577652.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-50","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":50,"keyItemId":542107,"sourceSkillId":493258,"name":"Wraith Attack","description":"Your Shadowstab will damage 2 targets at once. However, damage done to the second target will be half.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577782,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493258,"name":"Wraith Attack","description":"Your Shadowstab will damage 2 targets at once. However, damage done to the second target will be half.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577782,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577782.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-60","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546764,"sourceSkillId":499611,"name":"Paralysis Attack","description":"Transforms your [490347] to arrow use.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801274,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499611,"name":"Paralysis Attack","description":"Transforms your [490347] to arrow use.","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801274,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801274.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-scout-elite-70","classId":"rom-rogue","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546765,"sourceSkillId":499482,"name":"Shadow Figure","description":"Summons a real [499501] on the spot when a [499501] is used. The [499501] exists for (Buff-Time-620305) seconds and maintains a [499503] with a range of 70. After it is attacked 5 times it will blow up, causing damage and [503174] for (Buff-Time-503174) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801322,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620305,503174],"components":[{"id":620305,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":1,"skillLevelArg":0}},{"id":503174,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[67,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499482,"name":"Shadow Figure","description":"Summons a real [499501] on the spot when a [499501] is used. The [499501] exists for (Buff-Time-620305) seconds and maintains a [499503] with a range of 70. After it is attacked 5 times it will blow up, causing damage and [503174] for (Buff-Time-503174) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801322,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620305,503174]}}],"icon":"/assets/ui/rom-spells/801322.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-15","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541897,"sourceSkillId":491178,"name":"Enchanted Throw","description":"Enchants your projectile weapons so that every normal attack will carry additional [490309] damage. \n(Launching during an attack will consume one projectile weapon.)\n(This effect is mutually exclusive with [490329].)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801383,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501279,501274],"components":[{"id":501279,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":163,"specialActionFlags":0,"assistType":106,"onAttackTrigger":{"rate":100,"rank":0,"id":492506},"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":491185,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501274,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":35,"specialActionFlags":0,"assistType":106,"onAttackTrigger":{"rate":100,"rank":0,"id":492506},"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491178,"name":"Enchanted Throw","description":"Enchants your projectile weapons so that every normal attack will carry additional [490309] damage. \n(Launching during an attack will consume one projectile weapon.)\n(This effect is mutually exclusive with [490329].)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801383,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501279,501274]}}],"icon":"/assets/ui/rom-spells/801383.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-20","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":541927,"sourceSkillId":491180,"name":"Enlivened Blade","description":"Launches an enchanted projectile at the specified area and causes (DMG0) main hand weapon DPS + (FixDMG0) * [SC_SKILLTIPS_THROWDMG] physical damage to a maximum of 5 enemies in the area. If the attack causes damage to more than 3 enemies, then the skill's cooldown time is reduced by half. \n(Consumes one projectile weapon.)","target":"self","range":20,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801359,"sourceEffectType":1,"sourceTarget":16,"componentIds":[501276,502598],"components":[{"id":501276,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-1,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":7,"fixedValue":-1,"fixedType":4,"fixedDamageSkillLevelArg":7,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502598,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"effectFlagWords":[2,0],"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":491180,"name":"Enlivened Blade","description":"Launches an enchanted projectile at the specified area and causes (DMG0) main hand weapon DPS + (FixDMG0) * [SC_SKILLTIPS_THROWDMG] physical damage to a maximum of 5 enemies in the area. If the attack causes damage to more than 3 enemies, then the skill's cooldown time is reduced by half. \n(Consumes one projectile weapon.)","target":"self","range":20,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801359,"sourceEffectType":1,"sourceTarget":16,"componentIds":[501276,502598]}}],"icon":"/assets/ui/rom-spells/801359.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-25","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"passive","unlockLevel":25,"keyItemId":541957,"sourceSkillId":491181,"name":"Evil Intent","description":"Enables you to use [491182] in a battle, but it will have a 90 second cooldown time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801384,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491181,"name":"Evil Intent","description":"Enables you to use [491182] in a battle, but it will have a 90 second cooldown time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801384,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801384.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-30","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":541987,"sourceSkillId":491183,"name":"Day of Rain","description":"Launches a projectile at all surrounding enemies and causes (DMG0) projectile DPS + (FixDMG0) x [SC_SKILLTIPS_THROWDMG] physical damage. Every time [490309] is used, the skill's cooldown time can be reduced by 1 second. If [491178] is used in conjunction, then it only has a 50% hit rate. \n(Consumes 2 projectiles.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":25000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801363,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501278,502598],"components":[{"id":501278,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":-1,"attack":{"type":0,"calculationType":2,"damagePower":-1,"damagePowerSkillLevelArg":7,"fixedValue":-1,"fixedType":4,"fixedDamageSkillLevelArg":7,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502598,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"effectFlagWords":[2,0],"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491183,"name":"Day of Rain","description":"Launches a projectile at all surrounding enemies and causes (DMG0) projectile DPS + (FixDMG0) x [SC_SKILLTIPS_THROWDMG] physical damage. Every time [490309] is used, the skill's cooldown time can be reduced by 1 second. If [491178] is used in conjunction, then it only has a 50% hit rate. \n(Consumes 2 projectiles.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":25000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801363,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501278,502598]}}],"icon":"/assets/ui/rom-spells/801363.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-35","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":542018,"sourceSkillId":491184,"name":"Vengeance Sting","description":"If you are attacked while [491178] is in effect, this will inflict (DMG-502595) main hand weapon DPS + (FixDMG-502595) * [SC_SKILLTIPS_THROWDMG] physical damage to your attacker. You will also receive a [502596] effect which reduces received [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-502596)%. Lasts (Buff-Time-502596) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801385,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502595,502596],"components":[{"id":502595,"magicFunc":0,"magicType":0,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-1,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":7,"fixedValue":-1,"fixedType":4,"fixedDamageSkillLevelArg":7,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0},{"id":502596,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":10},{"type":143,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":491184,"name":"Vengeance Sting","description":"If you are attacked while [491178] is in effect, this will inflict (DMG-502595) main hand weapon DPS + (FixDMG-502595) * [SC_SKILLTIPS_THROWDMG] physical damage to your attacker. You will also receive a [502596] effect which reduces received [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-502596)%. Lasts (Buff-Time-502596) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801385,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502595,502596]}}],"icon":"/assets/ui/rom-spells/801385.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-40","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":542048,"sourceSkillId":491186,"name":"Life Rope Throw","description":"Reduces the interval time of [491187] to 0.5 seconds and increases the number of throws to 4. \nConsumes four projectile weapons each time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801386,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":491186,"name":"Life Rope Throw","description":"Reduces the interval time of [491187] to 0.5 seconds and increases the number of throws to 4. \nConsumes four projectile weapons each time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801386,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801386.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-45","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":542078,"sourceSkillId":498024,"name":"Create Opportunity","description":"Increase [SC_SKILLTIPS_CRI] by (Buff0-0) for (Buff0-Time) seconds, and there is a chance to stun the target for (Buff-Time-503267) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577653,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620301,503267],"components":[{"id":620301,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"onAttackTrigger":{"rate":100,"rank":5,"id":490851},"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503267,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":4,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777331,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":498024,"name":"Create Opportunity","description":"Increase [SC_SKILLTIPS_CRI] by (Buff0-0) for (Buff0-Time) seconds, and there is a chance to stun the target for (Buff-Time-503267) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577653,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620301,503267]}}],"icon":"/assets/ui/rom-spells/577653.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-50","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"passive","unlockLevel":50,"keyItemId":542108,"sourceSkillId":491188,"name":"Disabling Blade","description":"Renders enemies that are being attacked by [491180] and [491183] unable to carry out physical attacks and use physical skills, and slows their [SC_SKILLTIPS_MOVE] by (Buff0-502598)% for a period of time. Lasts for (Buff-Time-502598) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801387,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502598],"components":[{"id":502598,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"effectFlagWords":[2,0],"abilityModifiers":[{"type":24,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":491188,"name":"Disabling Blade","description":"Renders enemies that are being attacked by [491180] and [491183] unable to carry out physical attacks and use physical skills, and slows their [SC_SKILLTIPS_MOVE] by (Buff0-502598)% for a period of time. Lasts for (Buff-Time-502598) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801387,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502598]}}],"icon":"/assets/ui/rom-spells/801387.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-60","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":60,"keyItemId":546766,"sourceSkillId":497206,"name":"Instant Shadow","description":"This effect can be triggered after you do a dodge maneuver. It quickly conceals you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":15,"percentage":false},{"resource":"mana","amount":6,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801275,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502597],"components":[{"id":502597,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":52,"effectFlagWords":[16896,0],"clearFlags":11,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":497206,"name":"Instant Shadow","description":"This effect can be triggered after you do a dodge maneuver. It quickly conceals you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":15,"percentage":false},{"resource":"mana","amount":6,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801275,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502597]}}],"icon":"/assets/ui/rom-spells/801275.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-mage-elite-70","classId":"rom-rogue","secondaryClassId":"rom-mage","group":"elite","unlockLevel":70,"keyItemId":546767,"sourceSkillId":497205,"name":"Illusion Blade Dance","description":"After this is cast, you enter a [491189] state that lasts for (Buff-Time-502599) seconds. It will also cause (DMG-502577) projectile DPS + (FixDMG-502577) x [SC_SKILLTIPS_THROWDMG] physical damage to surrounding enemies every 2 seconds. While in effect, it also increases [SC_SKILLTIPS_DPS] by (Buff0-0)% and critical damage by (Buff0-1)%. \n(Consumes 10 projectiles.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801323,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502599,502577],"components":[{"id":502599,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":103,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-2},{"type":19,"value":5}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":491189,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502577,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":-1,"attack":{"type":0,"calculationType":2,"damagePower":-1,"damagePowerSkillLevelArg":7,"fixedValue":-1,"fixedType":4,"fixedDamageSkillLevelArg":7,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":497205,"name":"Illusion Blade Dance","description":"After this is cast, you enter a [491189] state that lasts for (Buff-Time-502599) seconds. It will also cause (DMG-502577) projectile DPS + (FixDMG-502577) x [SC_SKILLTIPS_THROWDMG] physical damage to surrounding enemies every 2 seconds. While in effect, it also increases [SC_SKILLTIPS_DPS] by (Buff0-0)% and critical damage by (Buff0-1)%. \n(Consumes 10 projectiles.) \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":801323,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502599,502577]}}],"icon":"/assets/ui/rom-spells/801323.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-15","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"elite","unlockLevel":15,"keyItemId":541898,"sourceSkillId":491536,"name":"Quickness Aura","description":"Your and your party members' dodge rate raises by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575559,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501932],"components":[{"id":501932,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":31,"abilityModifiers":[{"type":198,"value":2}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491536,"name":"Quickness Aura","description":"Your and your party members' dodge rate raises by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":25,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575559,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501932]}}],"icon":"/assets/ui/rom-spells/575559.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-20","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":20,"keyItemId":541928,"sourceSkillId":491539,"name":"Wound Tear","description":"Raises your Wound Attack's critical hit rate by 30%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575740,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":491539,"name":"Wound Tear","description":"Raises your Wound Attack's critical hit rate by 30%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575740,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575740.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-25","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":25,"keyItemId":541958,"sourceSkillId":491537,"name":"Shadow Walker","description":"You can use Sneak Attack during battle. The energy cost is reduced by 10, but the cooldown is increased by 10 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575741,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":491537,"name":"Shadow Walker","description":"You can use Sneak Attack during battle. The energy cost is reduced by 10, but the cooldown is increased by 10 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":20000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575741,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575741.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-30","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":541988,"sourceSkillId":491540,"name":"Fearless","description":"Immune to Fear effect for the next (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575742,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501933],"components":[{"id":501933,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":17,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":491540,"name":"Fearless","description":"Immune to Fear effect for the next (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575742,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501933]}}],"icon":"/assets/ui/rom-spells/575742.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-35","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"elite","unlockLevel":35,"keyItemId":542019,"sourceSkillId":492627,"name":"Kick","description":"Kicks the targets shinbone causing (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage . Due to great pain the target's movement speed is lowered by (Buff4-0)% for (Buff4-Time) seconds.\n(Movement speed of players is lowered by (Buff5-0)% for (Buff5-Time) seconds.)\n(This skill lowers the movement speed by a maximum of (Max-Buff0-502896)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577003,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620293,502896,503852],"components":[{"id":620293,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502896,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503852,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":492627,"name":"Kick","description":"Kicks the targets shinbone causing (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage . Due to great pain the target's movement speed is lowered by (Buff4-0)% for (Buff4-Time) seconds.\n(Movement speed of players is lowered by (Buff5-0)% for (Buff5-Time) seconds.)\n(This skill lowers the movement speed by a maximum of (Max-Buff0-502896)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":15000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577003,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620293,502896,503852]}}],"icon":"/assets/ui/rom-spells/577003.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-40","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"elite","unlockLevel":40,"keyItemId":542049,"sourceSkillId":492921,"name":"Slowing Poison","description":"Using [492351] on your target reduces the target's Physical Attack Speed by (Buff0-0)% for (Buff0-Time) seconds.\n(Physical Attack Speed of players reduces by (Buff1-0)% for (Buff1-Time) seconds.)\n(Consumes one poison bottle.)","target":"hostile","range":12,"castTimeMs":1000,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577592,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503176,504247],"components":[{"id":503176,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":115,"abilityModifiers":[{"type":23,"value":60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504247,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":115,"abilityModifiers":[{"type":23,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":492921,"name":"Slowing Poison","description":"Using [492351] on your target reduces the target's Physical Attack Speed by (Buff0-0)% for (Buff0-Time) seconds.\n(Physical Attack Speed of players reduces by (Buff1-0)% for (Buff1-Time) seconds.)\n(Consumes one poison bottle.)","target":"hostile","range":12,"castTimeMs":1000,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577592,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503176,504247]}}],"icon":"/assets/ui/rom-spells/577592.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-45","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542079,"sourceSkillId":493020,"name":"Sinister Methods","description":"Making a successful hit with Low Blow or Blind Spot instantly increases your [SC_SKILLTIPS_CRI] for (Buff-Time-503265) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503300)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577654,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503265,503300],"components":[{"id":503265,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493023,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503300,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":493020,"name":"Sinister Methods","description":"Making a successful hit with Low Blow or Blind Spot instantly increases your [SC_SKILLTIPS_CRI] for (Buff-Time-503265) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503300)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577654,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503265,503300]}}],"icon":"/assets/ui/rom-spells/577654.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-50","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":50,"keyItemId":542109,"sourceSkillId":493260,"name":"Mana Surge","description":"Magic Barrier will recover MP whenever you receive a physical attack, and reduce the damage inflicted on you by (Buff0-503181)%.\n([SC_SKILLTIPS_CD_1](Buff-Time-503529)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577784,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503181,503529],"components":[{"id":503181,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":-5},{"type":207,"value":-5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503529,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":493260,"name":"Mana Surge","description":"Magic Barrier will recover MP whenever you receive a physical attack, and reduce the damage inflicted on you by (Buff0-503181)%.\n([SC_SKILLTIPS_CD_1](Buff-Time-503529)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577784,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503181,503529]}}],"icon":"/assets/ui/rom-spells/577784.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-60","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":60,"keyItemId":546768,"sourceSkillId":499505,"name":"Mana Needle","description":"While in a [493297], received [SC_SKILLTIPS_DMG] will stun the attacker for (Buff-Time-623033) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-623034) [SC_SKILLTIPS_CD_2].)","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801276,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623033,623034],"components":[{"id":623033,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[16777283,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623034,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499505,"name":"Mana Needle","description":"While in a [493297], received [SC_SKILLTIPS_DMG] will stun the attacker for (Buff-Time-623033) seconds. \n([SC_SKILLTIPS_CD_1] (Buff-Time-623034) [SC_SKILLTIPS_CD_2].)","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801276,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623033,623034]}}],"icon":"/assets/ui/rom-spells/801276.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-priest-elite-70","classId":"rom-rogue","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546769,"sourceSkillId":499510,"name":"Demonstration of Evil","description":"When [493020] are triggered, your party members receive half the effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801324,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499510,"name":"Demonstration of Evil","description":"When [493020] are triggered, your party members receive half the effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801324,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801324.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-15","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"passive","unlockLevel":15,"keyItemId":541899,"sourceSkillId":491551,"name":"Armor Breaker","description":"Raises the damage by way of Disarmament, and adds a cooldown time of 3 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575744,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":491551,"name":"Armor Breaker","description":"Raises the damage by way of Disarmament, and adds a cooldown time of 3 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575744,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575744.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-20","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":20,"keyItemId":541929,"sourceSkillId":491549,"name":"Poison Protection","description":"When activated, this will protect you from getting Poisoned for the next (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575745,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501943],"components":[{"id":501943,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":5,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":491549,"name":"Poison Protection","description":"When activated, this will protect you from getting Poisoned for the next (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575745,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501943]}}],"icon":"/assets/ui/rom-spells/575745.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-25","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":25,"keyItemId":541959,"sourceSkillId":491552,"name":"Lion's Protection","description":"You feel strong like a lion! Your [SC_SKILLTIPS_01] is increased by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575567,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620316],"components":[{"id":620316,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":112,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":491552,"name":"Lion's Protection","description":"You feel strong like a lion! Your [SC_SKILLTIPS_01] is increased by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575567,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620316]}}],"icon":"/assets/ui/rom-spells/575567.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-30","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541989,"sourceSkillId":491546,"name":"Holy Light Protection","description":"Lowers [SC_SKILLTIPS_MDMG] you suffer by (Buff0-0)% and renders you immune to Root or Slow effects for the next (Buff0-Time) seconds.\n(Effect can only be removed if target has Movement Impairing Effect)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575571,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501940],"components":[{"id":501940,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":142,"value":2}],"abilitySkillLevelArg":54,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491546,"name":"Holy Light Protection","description":"Lowers [SC_SKILLTIPS_MDMG] you suffer by (Buff0-0)% and renders you immune to Root or Slow effects for the next (Buff0-Time) seconds.\n(Effect can only be removed if target has Movement Impairing Effect)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575571,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501940]}}],"icon":"/assets/ui/rom-spells/575571.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-35","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":35,"keyItemId":542020,"sourceSkillId":492629,"name":"Courageous Guard","description":"Protects party members in a range of 100 from Fear for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"self","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577004,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502898],"components":[{"id":502898,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":17,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492629,"name":"Courageous Guard","description":"Protects party members in a range of 100 from Fear for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"self","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577004,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502898]}}],"icon":"/assets/ui/rom-spells/577004.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-40","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":40,"keyItemId":542050,"sourceSkillId":492924,"name":"Power of the Lion","description":"While you are under the Lion's Protection, you can turn it into Power of the Lion to instantly restore your HP by (current [SC_SKILLTIPS_HP] x (DMG4)) + (DMG0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":577595,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503185,506308,503225],"components":[{"id":503185,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":506308,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":14,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503225,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":112,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":492924,"name":"Power of the Lion","description":"While you are under the Lion's Protection, you can turn it into Power of the Lion to instantly restore your HP by (current [SC_SKILLTIPS_HP] x (DMG4)) + (DMG0).","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":577595,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503185,506308,503225]}}],"icon":"/assets/ui/rom-spells/577595.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-45","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"elite","unlockLevel":45,"keyItemId":542080,"sourceSkillId":493025,"name":"Searing Light","description":"Causes your normal attacks to deal additional (Buff0-0) Light damage for (Buff0-Time) seconds. Also, when your physical attacks hit the target your [SC_SKILLTIPS_CRI] increases by (Buff0-503270) points for (Buff-Time-503270) seconds. (This effect is mutually exclusive with Poisonous.)\n([SC_SKILLTIPS_CD_1](Buff-Time-506385)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577655,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503268,503270,506385],"components":[{"id":503268,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":106,"abilityModifiers":[{"type":188,"value":10}],"onAttackTrigger":{"rate":100,"rank":0,"id":495578},"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503270,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495385,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506385,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493025,"name":"Searing Light","description":"Causes your normal attacks to deal additional (Buff0-0) Light damage for (Buff0-Time) seconds. Also, when your physical attacks hit the target your [SC_SKILLTIPS_CRI] increases by (Buff0-503270) points for (Buff-Time-503270) seconds. (This effect is mutually exclusive with Poisonous.)\n([SC_SKILLTIPS_CD_1](Buff-Time-506385)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577655,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503268,503270,506385]}}],"icon":"/assets/ui/rom-spells/577655.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-50","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"passive","unlockLevel":50,"keyItemId":542110,"sourceSkillId":493261,"name":"Reckless Warrior","description":"Whenever you use Low Blow or Blind Spot and successfully hit your target your [SC_SKILLTIPS_01] increases. Effective for (Buff-Time-503531) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503532)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577785,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503531,503532],"components":[{"id":503531,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":8,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":12,"value":50}],"abilitySkillLevelArg":11,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493284,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503532,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493261,"name":"Reckless Warrior","description":"Whenever you use Low Blow or Blind Spot and successfully hit your target your [SC_SKILLTIPS_01] increases. Effective for (Buff-Time-503531) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503532)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577785,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503531,503532]}}],"icon":"/assets/ui/rom-spells/577785.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-60","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546770,"sourceSkillId":499529,"name":"Illegal Punishment","description":"Inflicts additional damage caused by your [490074] depending on [SC_SKILLTIPS_AGI].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801277,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499529,"name":"Illegal Punishment","description":"Inflicts additional damage caused by your [490074] depending on [SC_SKILLTIPS_AGI].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801277,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801277.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-knight-elite-70","classId":"rom-rogue","secondaryClassId":"rom-knight","group":"passive","unlockLevel":70,"keyItemId":546771,"sourceSkillId":490069,"name":"Punishment Thrust","description":"[490185] will now cause the Stun effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801325,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":490069,"name":"Punishment Thrust","description":"[490185] will now cause the Stun effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801325,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801325.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-15","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":15,"keyItemId":543020,"sourceSkillId":494043,"name":"Weak Point Strike","description":"Inflicts (DMG1) main hand weapon DPS + (FixDMG1) x Dexterity physical damage. This skill has a chance of causing the target's weak point to suffer a powerful attack, suffering (DMG0) + (FixDMG0) x Dexterity main hand weapon physical DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579113,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620294,620295],"components":[{"id":620294,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.95,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.95,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620295,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494043,"name":"Weak Point Strike","description":"Inflicts (DMG1) main hand weapon DPS + (FixDMG1) x Dexterity physical damage. This skill has a chance of causing the target's weak point to suffer a powerful attack, suffering (DMG0) + (FixDMG0) x Dexterity main hand weapon physical DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579113,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620294,620295]}}],"icon":"/assets/ui/rom-spells/579113.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-20","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"passive","unlockLevel":20,"keyItemId":543028,"sourceSkillId":494044,"name":"Hidden Master","description":"Reduces [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] received while in Hide status.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579114,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494044,"name":"Hidden Master","description":"Reduces [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] received while in Hide status.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579114,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579114.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-25","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":25,"keyItemId":543036,"sourceSkillId":494045,"name":"Bloodthirsty Blade","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. Successful attacks increase your [SC_SKILLTIPS_CRI] by (Buff4-0) points for (Buff4-Time) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-507326)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579115,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620296,504595,504598,507326],"components":[{"id":620296,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504595,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":1073741923,"specialActionFlags":0,"assistType":34,"abilityModifiers":[{"type":18,"value":6}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504598,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":268959809,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507326,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":20,"hateCost":0,"settingFlags":268959809,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494045,"name":"Bloodthirsty Blade","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. Successful attacks increase your [SC_SKILLTIPS_CRI] by (Buff4-0) points for (Buff4-Time) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-507326)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579115,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620296,504595,504598,507326]}}],"icon":"/assets/ui/rom-spells/579115.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-30","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"passive","unlockLevel":30,"keyItemId":543044,"sourceSkillId":494328,"name":"Crazed Creed","description":"Permanently raises your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579891,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504720],"components":[{"id":504720,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":19,"value":1}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494328,"name":"Crazed Creed","description":"Permanently raises your [SC_SKILLTIPS_CRI_POWER] by (Buff0-0)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579891,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504720]}}],"icon":"/assets/ui/rom-spells/579891.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-35","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":35,"keyItemId":543052,"sourceSkillId":494545,"name":"Emotional Obstruction","description":"Creates a purple fog that temporarily reduces the magical damage done by the target by (Buff0-0)% for (Buff0-Time) seconds.\n(If the target is a player, the damage done will be reduced by (Buff1-0)% for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579892,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504909,504249],"components":[{"id":504909,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":44,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504249,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":44,"value":-5}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494545,"name":"Emotional Obstruction","description":"Creates a purple fog that temporarily reduces the magical damage done by the target by (Buff0-0)% for (Buff0-Time) seconds.\n(If the target is a player, the damage done will be reduced by (Buff1-0)% for (Buff1-Time) seconds.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579892,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504909,504249]}}],"icon":"/assets/ui/rom-spells/579892.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-40","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"passive","unlockLevel":40,"keyItemId":543060,"sourceSkillId":494546,"name":"Wood Spirit's Grasp","description":"Increases the damage of Power of the Wood Spirit. Additionally, a successful hit will increase your and your party members' [SC_SKILLTIPS_MDMG] and [SC_SKILLTIPS_DMG].\n([SC_SKILLTIPS_CD_1](Buff-Time-505171)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579893,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505171],"components":[{"id":505171,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":494546,"name":"Wood Spirit's Grasp","description":"Increases the damage of Power of the Wood Spirit. Additionally, a successful hit will increase your and your party members' [SC_SKILLTIPS_MDMG] and [SC_SKILLTIPS_DMG].\n([SC_SKILLTIPS_CD_1](Buff-Time-505171)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579893,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505171]}}],"icon":"/assets/ui/rom-spells/579893.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-45","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":45,"keyItemId":543068,"sourceSkillId":494921,"name":"Wound Patch","description":"When you suffer physical or magic attacks within (Buff0-Time) seconds, you will recover (DMG-620302) HP and your dodge rate will be continuously increased by (Buff0-623527)% for (Buff-Time-623527) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-505731)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":581106,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505685,620302,623527,505731],"components":[{"id":505685,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":494948,"onMagicAttackReboundMagicId":494948,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620302,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":18,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623527,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":20},{"type":200,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505731,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":494921,"name":"Wound Patch","description":"When you suffer physical or magic attacks within (Buff0-Time) seconds, you will recover (DMG-620302) HP and your dodge rate will be continuously increased by (Buff0-623527)% for (Buff-Time-623527) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-505731)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":581106,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505685,620302,623527,505731]}}],"icon":"/assets/ui/rom-spells/581106.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-50","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543076,"sourceSkillId":494922,"name":"Phantom Blade","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. A successful hit will summon two Oak Walkers that will attack your opponent for 15 seconds. \n\n(Oak Walkers will also use Phantom Blade for attacking. Damage increases with skill level.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"health","amount":5,"percentage":true},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102324},"source":{"imageId":581107,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620311,505942,505943],"components":[{"id":620311,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.75,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-0.75,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505942,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102324,"summon":{"creatureId":102324,"level":0,"rangeLevel":0,"lifetimeSeconds":15,"skillLevelArg":0,"type":1,"groupId":3,"ownerPowerRate":0.6}},{"id":505943,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102324,"summon":{"creatureId":102324,"level":0,"rangeLevel":0,"lifetimeSeconds":15,"skillLevelArg":0,"type":1,"groupId":4,"ownerPowerRate":0.6}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494922,"name":"Phantom Blade","description":"Causes (DMG0) main hand weapon DPS + (FixDMG0) x Dexterity physical damage. A successful hit will summon two Oak Walkers that will attack your opponent for 15 seconds. \n\n(Oak Walkers will also use Phantom Blade for attacking. Damage increases with skill level.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"health","amount":5,"percentage":true},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102324},"source":{"imageId":581107,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620311,505942,505943]}}],"icon":"/assets/ui/rom-spells/581107.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-60","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"elite","unlockLevel":60,"keyItemId":546772,"sourceSkillId":499542,"name":"Revival","description":"While in a [499544] state, each time you receive physical or magic attack you can stack a [499542] effect. Effect can be stacked a maximum of 10 times. Actively using [499542] makes you recover HP. The amount of HP you recover is dependent on [499542].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801278,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623078],"components":[{"id":623078,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499542,"name":"Revival","description":"While in a [499544] state, each time you receive physical or magic attack you can stack a [499542] effect. Effect can be stacked a maximum of 10 times. Actively using [499542] makes you recover HP. The amount of HP you recover is dependent on [499542].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801278,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623078]}}],"icon":"/assets/ui/rom-spells/801278.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warden-elite-70","classId":"rom-rogue","secondaryClassId":"rom-warden","group":"passive","unlockLevel":70,"keyItemId":546773,"sourceSkillId":499547,"name":"Group Panic","description":"Makes your [499546] cause an additional reduction of physical and magic damage. Also changes effects from solo to group.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801326,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499547,"name":"Group Panic","description":"Makes your [499546] cause an additional reduction of physical and magic damage. Also changes effects from solo to group.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801326,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801326.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-15","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543021,"sourceSkillId":494046,"name":"Hysteric Vengeance","description":"If you are hit by physical attacks in the next (Buff0-Time) seconds, your [SC_SKILLTIPS_CRI] will increase by (Buff0-620303) for (Buff-Time-620303) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504593)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579116,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504555,620303,504593],"components":[{"id":504555,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":494072,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620303,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494073,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504593,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268443649,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494046,"name":"Hysteric Vengeance","description":"If you are hit by physical attacks in the next (Buff0-Time) seconds, your [SC_SKILLTIPS_CRI] will increase by (Buff0-620303) for (Buff-Time-620303) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504593)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579116,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504555,620303,504593]}}],"icon":"/assets/ui/rom-spells/579116.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-20","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":20,"keyItemId":543029,"sourceSkillId":494047,"name":"Poison Antibodies","description":"Makes it so you cannot be affected by poison for 5 seconds after you successfully use Antidote.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579117,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":494047,"name":"Poison Antibodies","description":"Makes it so you cannot be affected by poison for 5 seconds after you successfully use Antidote.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579117,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579117.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-25","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"elite","unlockLevel":25,"keyItemId":543037,"sourceSkillId":494048,"name":"Poison Shroud","description":"Poison Shroud inflicts (Buff0-Dot) points of poison damage every 2 seconds on targets within a range of 70 for (Buff0-Time) seconds. (Consumes one poison bottle.)","target":"self","range":15,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579118,"sourceEffectType":1,"sourceTarget":16,"componentIds":[620304],"components":[{"id":620304,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":12,"hateCost":0,"settingFlags":8394,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494962,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":2,"dotType":0,"dotBase":-40,"dot":{"timeSeconds":2,"type":0,"base":-40,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494048,"name":"Poison Shroud","description":"Poison Shroud inflicts (Buff0-Dot) points of poison damage every 2 seconds on targets within a range of 70 for (Buff0-Time) seconds. (Consumes one poison bottle.)","target":"self","range":15,"castTimeMs":1000,"cooldownMs":15000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579118,"sourceEffectType":1,"sourceTarget":16,"componentIds":[620304]}}],"icon":"/assets/ui/rom-spells/579118.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-30","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"elite","unlockLevel":30,"keyItemId":543045,"sourceSkillId":494329,"name":"Killin' Time","description":"Increases the critical physical hit rate of your next 4 attacks by (Buff0-504872) points and critical damage by (Buff1-504872)% for (Buff-Time-504872) seconds. (This effect continues until expended or time runs out.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579894,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504872,504881],"components":[{"id":504872,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"clearFlags":8193,"abilityModifiers":[{"type":18,"value":120},{"type":19,"value":1}],"abilitySkillLevelArg":16,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494339,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504881,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494329,"name":"Killin' Time","description":"Increases the critical physical hit rate of your next 4 attacks by (Buff0-504872) points and critical damage by (Buff1-504872)% for (Buff-Time-504872) seconds. (This effect continues until expended or time runs out.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579894,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504872,504881]}}],"icon":"/assets/ui/rom-spells/579894.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-35","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":35,"keyItemId":543053,"sourceSkillId":498027,"name":"Crippling Poison","description":"Causes your Poisonous effect to additionally reduce the target's [SC_SKILLTIPS_CAST] and [SC_SKILLTIPS_DPS].","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579895,"sourceEffectType":2,"sourceTarget":6,"componentIds":[505173,504250],"components":[{"id":505173,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":170,"abilityModifiers":[{"type":170,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504250,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":170,"abilityModifiers":[{"type":170,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":498027,"name":"Crippling Poison","description":"Causes your Poisonous effect to additionally reduce the target's [SC_SKILLTIPS_CAST] and [SC_SKILLTIPS_DPS].","target":"hostile","range":12,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579895,"sourceEffectType":2,"sourceTarget":6,"componentIds":[505173,504250]}}],"icon":"/assets/ui/rom-spells/579895.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-40","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"elite","unlockLevel":40,"keyItemId":543061,"sourceSkillId":494548,"name":"Slaughter Blessing","description":"Instantly restores (current [SC_SKILLTIPS_HP] x (DMG4)) + (DMG8) HP to you and your party members, and temporarily increases [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":579896,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505175,506387,504912],"components":[{"id":505175,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5},{"type":171,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506387,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":8.4,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504912,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":9.6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494548,"name":"Slaughter Blessing","description":"Instantly restores (current [SC_SKILLTIPS_HP] x (DMG4)) + (DMG8) HP to you and your party members, and temporarily increases [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":579896,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505175,506387,504912]}}],"icon":"/assets/ui/rom-spells/579896.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-45","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":45,"keyItemId":543069,"sourceSkillId":494923,"name":"Shadow Smash","description":"Extends your Poison Shroud effect by 4 seconds and inflicts dark damage to targets within a range of 70.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581108,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494923,"name":"Shadow Smash","description":"Extends your Poison Shroud effect by 4 seconds and inflicts dark damage to targets within a range of 70.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581108,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581108.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-50","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":50,"keyItemId":543077,"sourceSkillId":494924,"name":"Quick Light Protection","description":"Reduces the energy required for your Blind Spot attack by 10 and when you strike a target it has a chance of restoring HP to the party member with the lowest HP.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581109,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":494924,"name":"Quick Light Protection","description":"Reduces the energy required for your Blind Spot attack by 10 and when you strike a target it has a chance of restoring HP to the party member with the lowest HP.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581109,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581109.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-60","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546774,"sourceSkillId":499566,"name":"Malicious Intent Release","description":"Your [499567] will not be limited in the times it can be used, but its time limit is reduced from 15 seconds to 7 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801279,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499566,"name":"Malicious Intent Release","description":"Your [499567] will not be limited in the times it can be used, but its time limit is reduced from 15 seconds to 7 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801279,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801279.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-druid-elite-70","classId":"rom-rogue","secondaryClassId":"rom-druid","group":"passive","unlockLevel":70,"keyItemId":546775,"sourceSkillId":499568,"name":"Erosion","description":"Causes an additional reduction of your target's armor and [SC_SKILLTIPS_MDEF] while [499569] is in effect. Causes additional damage from triggered [494923] in level with [SC_SKILLTIPS_AGI].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801327,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499568,"name":"Erosion","description":"Causes an additional reduction of your target's armor and [SC_SKILLTIPS_MDEF] while [499569] is in effect. Causes additional damage from triggered [494923] in level with [SC_SKILLTIPS_AGI].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801327,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801327.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-15","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":15,"keyItemId":545976,"sourceSkillId":498799,"name":"Dark Soul Barrier","description":"Sets up a dark spirit barrier in a designated area. This barrier will increase the [SC_SKILLTIPS_DOGEP] of all party members inside the barrier by (Buff0-621565)%. The Dark Soul Barrier lasts for 12 seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800220,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621560,621565],"components":[{"id":621560,"magicFunc":6,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621565,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":268435459,"specialActionFlags":0,"assistType":31,"abilityModifiers":[{"type":198,"value":10}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498799,"name":"Dark Soul Barrier","description":"Sets up a dark spirit barrier in a designated area. This barrier will increase the [SC_SKILLTIPS_DOGEP] of all party members inside the barrier by (Buff0-621565)%. The Dark Soul Barrier lasts for 12 seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800220,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621560,621565]}}],"icon":"/assets/ui/rom-spells/800220.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-20","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":20,"keyItemId":545977,"sourceSkillId":498801,"name":"Energy Conservation","description":"Use of this skill requires an HP less than 75%.\nRestores (Buff0-Dot)% HP every second until HP reaches 75% or the effect lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800153,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621561],"components":[{"id":621561,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":79,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498802,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":5,"dotBase":3,"dot":{"timeSeconds":1,"type":5,"base":3,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498801,"name":"Energy Conservation","description":"Use of this skill requires an HP less than 75%.\nRestores (Buff0-Dot)% HP every second until HP reaches 75% or the effect lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"energy","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800153,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621561]}}],"icon":"/assets/ui/rom-spells/800153.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-25","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":25,"keyItemId":545978,"sourceSkillId":498803,"name":"Soul Stab","description":"Inflicts (DMG1) + (FixDMG1) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS on the target. If target is in a Weakened state then they will receive (DMG0) + (FixDMG0) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800154,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621564,501577,621563],"components":[{"id":621564,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.5,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.5,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621563,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.3,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-1.3,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498803,"name":"Soul Stab","description":"Inflicts (DMG1) + (FixDMG1) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS on the target. If target is in a Weakened state then they will receive (DMG0) + (FixDMG0) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800154,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621564,501577,621563]}}],"icon":"/assets/ui/rom-spells/800154.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-30","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":30,"keyItemId":545979,"sourceSkillId":498804,"name":"Begin When Ready","description":"Immediately resets the cooldown time for Fervent Attack and Evasion.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800155,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621566],"components":[{"id":621566,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498804,"name":"Begin When Ready","description":"Immediately resets the cooldown time for Fervent Attack and Evasion.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800155,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621566]}}],"icon":"/assets/ui/rom-spells/800155.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-35","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":35,"keyItemId":545980,"sourceSkillId":498805,"name":"Dark Soul Precision","description":"Soul Pain doesn't need any casting time and reduces target's [SC_SKILLTIPS_DEF].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800156,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498805,"name":"Dark Soul Precision","description":"Soul Pain doesn't need any casting time and reduces target's [SC_SKILLTIPS_DEF].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800156,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800156.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-40","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":40,"keyItemId":545981,"sourceSkillId":498807,"name":"Soul Agility","description":"Increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800157,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621568,621569],"components":[{"id":621568,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":6,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621569,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":165,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498807,"name":"Soul Agility","description":"Increases [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800157,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621568,621569]}}],"icon":"/assets/ui/rom-spells/800157.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-45","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":45,"keyItemId":545982,"sourceSkillId":498808,"name":"Dark Soul Smelt","description":"While in a Poisonous state, normal attack hits can cause additional [SC_SKILLTIPS_DARK].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800158,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":498808,"name":"Dark Soul Smelt","description":"While in a Poisonous state, normal attack hits can cause additional [SC_SKILLTIPS_DARK].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800158,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800158.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-50","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":545983,"sourceSkillId":498811,"name":"Ghostly Strike","description":"Inflicts (DMG0) + (FixDMG0) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS and carries a Weakened effect. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800159,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621572,501577],"components":[{"id":621572,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.5,"fixedValue":-0.3,"attack":{"type":0,"calculationType":0,"damagePower":-1.5,"damagePowerSkillLevelArg":6,"fixedValue":-0.3,"fixedType":7,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498811,"name":"Ghostly Strike","description":"Inflicts (DMG0) + (FixDMG0) x Dexterity main hand weapon [SC_SKILLTIPS_MDMG] DPS and carries a Weakened effect. \n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":800159,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621572,501577]}}],"icon":"/assets/ui/rom-spells/800159.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-60","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":60,"keyItemId":546776,"sourceSkillId":498813,"name":"Dark Soul Assail","description":"Increases [SC_SKILLTIPS_DARK]. In a state of [498814], [SC_SKILLTIPS_DARK] is additionally increased.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801618,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623424],"components":[{"id":623424,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524295,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":50,"value":50}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":499803,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":498813,"name":"Dark Soul Assail","description":"Increases [SC_SKILLTIPS_DARK]. In a state of [498814], [SC_SKILLTIPS_DARK] is additionally increased.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801618,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623424]}}],"icon":"/assets/ui/rom-spells/801618.png","iconResolution":"native-interface-fdb"},{"id":"rom-rogue-rom-warlock-elite-70","classId":"rom-rogue","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":70,"keyItemId":546777,"sourceSkillId":499820,"name":"Soul Curtain","description":"Decreases the cooldown time of [499819] by 60 seconds. When [499819] is being cast, it removes the effect of being Helpless and leaves a Substitute that Taunts nearby enemies for 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801619,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499820,"name":"Soul Curtain","description":"Decreases the cooldown time of [499819] by 60 seconds. When [499819] is being cast, it removes the effect of being Helpless and leaves a Substitute that Taunts nearby enemies for 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801619,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801619.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-15","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":541900,"sourceSkillId":491562,"name":"Magical Talent","description":"Temporarily increases your [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575729,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501947,506398],"components":[{"id":501947,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":50}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495400,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":506398,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524353,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":168,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491562,"name":"Magical Talent","description":"Temporarily increases your [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575729,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501947,506398]}}],"icon":"/assets/ui/rom-spells/575729.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-20","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":20,"keyItemId":541930,"sourceSkillId":491563,"name":"Magical Enlightenment","description":"Lets you regenerate (Buff0-Dot) MP every 5 seconds for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575726,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501948],"components":[{"id":501948,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":5,"dotType":1,"dotBase":10,"dot":{"timeSeconds":5,"type":1,"base":10,"skillLevelArg":10},"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":491563,"name":"Magical Enlightenment","description":"Lets you regenerate (Buff0-Dot) MP every 5 seconds for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575726,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501948]}}],"icon":"/assets/ui/rom-spells/575726.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-25","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":25,"keyItemId":541960,"sourceSkillId":491564,"name":"Elemental Explosion","description":"Your [SC_SKILLTIPS_MCRI] is increased by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575720,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501949],"components":[{"id":501949,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":491564,"name":"Elemental Explosion","description":"Your [SC_SKILLTIPS_MCRI] is increased by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575720,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501949]}}],"icon":"/assets/ui/rom-spells/575720.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-30","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":541990,"sourceSkillId":491565,"name":"Rage Mana","description":"Converts your rage into (DMG0) MP and increases your magical damage by (Buff4-0)% for (Buff4-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575569,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501951,623528],"components":[{"id":501951,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":180,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":26,"abilityModifiers":[{"type":2,"value":10}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":20,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":20,"damagePowerSkillLevelArg":100,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623528,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":10}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":491565,"name":"Rage Mana","description":"Converts your rage into (DMG0) MP and increases your magical damage by (Buff4-0)% for (Buff4-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575569,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501951,623528]}}],"icon":"/assets/ui/rom-spells/575569.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-35","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542021,"sourceSkillId":492630,"name":"Activate Mana","description":"Transforms your mana into (DMG0) rage and reduces Aggro by (Buff4-0)% for (Buff4-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":80,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577005,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502899,623531],"components":[{"id":502899,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":20,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":20,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623531,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":492630,"name":"Activate Mana","description":"Transforms your mana into (DMG0) rage and reduces Aggro by (Buff4-0)% for (Buff4-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":80,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577005,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502899,623531]}}],"icon":"/assets/ui/rom-spells/577005.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-40","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":40,"keyItemId":542051,"sourceSkillId":492925,"name":"Magic Boost","description":"Lets your Berserk simultaneously raise your magic attack and physical attack while lowering your [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577596,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503186],"components":[{"id":503186,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":64,"abilityModifiers":[{"type":135,"value":-3},{"type":134,"value":3},{"type":171,"value":2},{"type":170,"value":-2}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492925,"name":"Magic Boost","description":"Lets your Berserk simultaneously raise your magic attack and physical attack while lowering your [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577596,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503186]}}],"icon":"/assets/ui/rom-spells/577596.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-45","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":542081,"sourceSkillId":493026,"name":"Enhanced Intensification","description":"Lets your Intensification increase the [SC_SKILLTIPS_MDMG]. Also increases [SC_SKILLTIPS_MCRI_POWER] while in effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577656,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":493026,"name":"Enhanced Intensification","description":"Lets your Intensification increase the [SC_SKILLTIPS_MDMG]. Also increases [SC_SKILLTIPS_MCRI_POWER] while in effect.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577656,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577656.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-50","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":542111,"sourceSkillId":493262,"name":"Meditative Current","description":"Whenever you hit a target with Plasma Arrow or Flame, your Casting Speed increases additionally. Effective for (Buff-Time-503533) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503534)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577791,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503533,503534],"components":[{"id":503533,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":-10}],"abilitySkillLevelArg":4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493319,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503534,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":493262,"name":"Meditative Current","description":"Whenever you hit a target with Plasma Arrow or Flame, your Casting Speed increases additionally. Effective for (Buff-Time-503533) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503534)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577791,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503533,503534]}}],"icon":"/assets/ui/rom-spells/577791.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-60","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546780,"sourceSkillId":499588,"name":"Meditation Path","description":"When you cast [490204], [490212], [490242] or [490239], you can achieve a mobile casting skill state. Lasts for 7 seconds. (Can't be re-triggered within the next 15 seconds.)","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801280,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499588,"name":"Meditation Path","description":"When you cast [490204], [490212], [490242] or [490239], you can achieve a mobile casting skill state. Lasts for 7 seconds. (Can't be re-triggered within the next 15 seconds.)","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801280,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801280.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warrior-elite-70","classId":"rom-mage","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":70,"keyItemId":546781,"sourceSkillId":499589,"name":"Wisdom and Bravery","description":"Gives your [499590] an extra increase in [SC_SKILLTIPS_STA]. \nAfter it is used, it increases your [SC_SKILLTIPS_INT] by 50% of your [SC_SKILLTIPS_STA] plus 50% of your [SC_SKILLTIPS_STR]. Lasts (Buff-Time-623148) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801328,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623150,623148],"components":[{"id":623150,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623148,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":4,"value":1}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499589,"name":"Wisdom and Bravery","description":"Gives your [499590] an extra increase in [SC_SKILLTIPS_STA]. \nAfter it is used, it increases your [SC_SKILLTIPS_INT] by 50% of your [SC_SKILLTIPS_STA] plus 50% of your [SC_SKILLTIPS_STR]. Lasts (Buff-Time-623148) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801328,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623150,623148]}}],"icon":"/assets/ui/rom-spells/801328.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-15","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":15,"keyItemId":546015,"sourceSkillId":498823,"name":"Electric Explosion Expertise","description":"While in a Charged state, every Electric Explosion hit adds additional rage and recovers MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800168,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498823,"name":"Electric Explosion Expertise","description":"While in a Charged state, every Electric Explosion hit adds additional rage and recovers MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800168,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800168.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-20","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":546016,"sourceSkillId":498825,"name":"Brain Shock","description":"Ends the cooldown time for your Lightning and Discharge. Also increases [SC_SKILLTIPS_INT] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800169,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621621,621622],"components":[{"id":621621,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":163,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621622,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498825,"name":"Brain Shock","description":"Ends the cooldown time for your Lightning and Discharge. Also increases [SC_SKILLTIPS_INT] by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800169,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621621,621622]}}],"icon":"/assets/ui/rom-spells/800169.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-25","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":25,"keyItemId":546017,"sourceSkillId":498862,"name":"Electric Current Arc","description":"Increases Plasma Arrow damage and continuously adds rage while in a Charged state.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800170,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498862,"name":"Electric Current Arc","description":"Increases Plasma Arrow damage and continuously adds rage while in a Charged state.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800170,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800170.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-30","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":30,"keyItemId":546018,"sourceSkillId":498864,"name":"Voltage Seize","description":"There is a chance to use this skill when a current inflicts continuous damage. Inflicts (DMG0) + (FixDMG0) x INT [SC_SKILLTIPS_WIND]. \n[SC_SKILLTIPS_03]","target":"hostile","range":22,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800171,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621626],"components":[{"id":621626,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":-0.4,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":35,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498864,"name":"Voltage Seize","description":"There is a chance to use this skill when a current inflicts continuous damage. Inflicts (DMG0) + (FixDMG0) x INT [SC_SKILLTIPS_WIND]. \n[SC_SKILLTIPS_03]","target":"hostile","range":22,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800171,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621626]}}],"icon":"/assets/ui/rom-spells/800171.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-35","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":35,"keyItemId":546019,"sourceSkillId":498867,"name":"Energy Passage","description":"After a Static Field finishes, this skill inflicts an extra reduction of the target's [SC_SKILLTIPS_MOVE] by (Buff0-621662)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800172,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621662],"components":[{"id":621662,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498867,"name":"Energy Passage","description":"After a Static Field finishes, this skill inflicts an extra reduction of the target's [SC_SKILLTIPS_MOVE] by (Buff0-621662)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800172,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621662]}}],"icon":"/assets/ui/rom-spells/800172.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-40","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":40,"keyItemId":546020,"sourceSkillId":498869,"name":"Electrolysis Power","description":"Largely increases damage caused by Discharge and reduces the cooldown time by 10 seconds, but also cancels Stun effect.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800173,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621631,621632],"components":[{"id":621631,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":496444,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621632,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498869,"name":"Electrolysis Power","description":"Largely increases damage caused by Discharge and reduces the cooldown time by 10 seconds, but also cancels Stun effect.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800173,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621631,621632]}}],"icon":"/assets/ui/rom-spells/800173.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-45","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":45,"keyItemId":546021,"sourceSkillId":498871,"name":"Electrostatic Charge Expertise","description":"Reduces Electrostatic Charge cooldown time by 30 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800174,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498871,"name":"Electrostatic Charge Expertise","description":"Reduces Electrostatic Charge cooldown time by 30 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800174,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800174.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-50","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":50,"keyItemId":546022,"sourceSkillId":498873,"name":"Ion Storm","description":"Consumes (Buff0-Dot) rage every second to cause (DMG-621635) [SC_SKILLTIPS_WIND] on targets nearby. Also reduces wind attribute resistance by 2% for (Buff-Time-621636) seconds and can be stacked 10 times. \n(This state ends when rage has been exhausted.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"dot","coefficient":0.25,"ticks":2,"intervalMs":2000},"source":{"imageId":800175,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621634,621635,621636],"components":[{"id":621634,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":111,"specialActionFlags":0,"assistType":-1,"clearFlags":1152,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498874,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":2,"dotBase":-5,"dot":{"timeSeconds":1,"type":2,"base":-5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621635,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":79,"specialActionFlags":0,"assistType":-1,"clearFlags":3072,"abilitySkillLevelArg":5,"dotTime":1,"dotType":6,"dotBase":2,"dot":{"timeSeconds":1,"type":6,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":-25,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-25,"damagePowerSkillLevelArg":30,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621636,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":32834,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":224,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498873,"name":"Ion Storm","description":"Consumes (Buff0-Dot) rage every second to cause (DMG-621635) [SC_SKILLTIPS_WIND] on targets nearby. Also reduces wind attribute resistance by 2% for (Buff-Time-621636) seconds and can be stacked 10 times. \n(This state ends when rage has been exhausted.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"dot","coefficient":0.25,"ticks":2,"intervalMs":2000},"source":{"imageId":800175,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621634,621635,621636]}}],"icon":"/assets/ui/rom-spells/800175.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-60","classId":"rom-mage","secondaryClassId":"rom-champion","group":"elite","unlockLevel":60,"keyItemId":546797,"sourceSkillId":499811,"name":"Lightning Shield","description":"Obtain a [623438] that deals (DMG-623435) + (FixDMG-623435) x INT [SC_SKILLTIPS_WIND] to the source of any damage dealt to you and has a chance to trigger a [498864].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":801624,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623438,623435],"components":[{"id":623438,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":180,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":499810,"onMagicAttackReboundMagicId":499810,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623435,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-65,"fixedValue":-0.4,"attack":{"type":0,"calculationType":1,"damagePower":-65,"damagePowerSkillLevelArg":5,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":499811,"name":"Lightning Shield","description":"Obtain a [623438] that deals (DMG-623435) + (FixDMG-623435) x INT [SC_SKILLTIPS_WIND] to the source of any damage dealt to you and has a chance to trigger a [498864].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":801624,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623438,623435]}}],"icon":"/assets/ui/rom-spells/801624.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-champion-elite-70","classId":"rom-mage","secondaryClassId":"rom-champion","group":"passive","unlockLevel":70,"keyItemId":546798,"sourceSkillId":499807,"name":"Ion Barrier","description":"While in a [499809] state, reduces damage suffered by (Buff0-623444)% but increases the required rage points by 10.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801625,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623444],"components":[{"id":623444,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524359,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":-30},{"type":207,"value":-30}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":499808,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":499807,"name":"Ion Barrier","description":"While in a [499809] state, reduces damage suffered by (Buff0-623444)% but increases the required rage points by 10.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801625,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623444]}}],"icon":"/assets/ui/rom-spells/801625.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-15","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":541901,"sourceSkillId":491570,"name":"Thunderclap","description":"A magic arrow binds the target for (Buff0-Time) seconds to its current location. \n(If the target is a player, they cannot move for (Buff1-Time) seconds.)\n(The effect is removed when the target is attacked.)","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575728,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501956,507286],"components":[{"id":501956,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507286,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491570,"name":"Thunderclap","description":"A magic arrow binds the target for (Buff0-Time) seconds to its current location. \n(If the target is a player, they cannot move for (Buff1-Time) seconds.)\n(The effect is removed when the target is attacked.)","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575728,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501956,507286]}}],"icon":"/assets/ui/rom-spells/575728.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-20","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":20,"keyItemId":541931,"sourceSkillId":491573,"name":"Fire Arrow","description":"Your [SC_SKILLTIPS_MCRI] is increased by (Buff0-0) and Shot inflicts additional fire damage. This effect lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_491573]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575248,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501955],"components":[{"id":501955,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":20,"value":150}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":491573,"name":"Fire Arrow","description":"Your [SC_SKILLTIPS_MCRI] is increased by (Buff0-0) and Shot inflicts additional fire damage. This effect lasts for (Buff0-Time) seconds.\n[SC_SKILLTIPS_491573]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575248,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501955]}}],"icon":"/assets/ui/rom-spells/575248.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-25","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":541961,"sourceSkillId":491343,"name":"Fire Rose","description":"Plants a rose seed inside the target that causes (Buff3-Dot) Fire damage every 2 seconds for (Buff3-Time) seconds.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575226,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501842,501814,501806],"components":[{"id":501842,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":133,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-24,"dot":{"timeSeconds":2,"type":0,"base":-24,"skillLevelArg":20},"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0},{"id":501814,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":133,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":20},"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0},{"id":501806,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":133,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-8,"dot":{"timeSeconds":2,"type":0,"base":-8,"skillLevelArg":20},"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":491343,"name":"Fire Rose","description":"Plants a rose seed inside the target that causes (Buff3-Dot) Fire damage every 2 seconds for (Buff3-Time) seconds.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575226,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501842,501814,501806]}}],"icon":"/assets/ui/rom-spells/575226.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-30","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":541991,"sourceSkillId":491344,"name":"Fire Rose Explosion","description":"Instantly ignites all Fire Roses planted in target, causing (DMG0) + (FixDMG-620220) x INT [SC_SKILLTIPS_FLAME]. \n(Requires 3 seeds in the target.)","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":575227,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620220],"components":[{"id":620220,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":-0.8,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":40,"fixedValue":-0.8,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":491344,"name":"Fire Rose Explosion","description":"Instantly ignites all Fire Roses planted in target, causing (DMG0) + (FixDMG-620220) x INT [SC_SKILLTIPS_FLAME]. \n(Requires 3 seeds in the target.)","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":575227,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620220]}}],"icon":"/assets/ui/rom-spells/575227.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-35","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":542022,"sourceSkillId":492631,"name":"Flame Spirit","description":"Turns your flame energy for 40 seconds into concrete substance to support your attacks.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":101686},"source":{"imageId":577006,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502900],"components":[{"id":502900,"magicFunc":3,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":101686,"summon":{"creatureId":101686,"level":0,"rangeLevel":0,"lifetimeSeconds":40,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0.3}}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":492631,"name":"Flame Spirit","description":"Turns your flame energy for 40 seconds into concrete substance to support your attacks.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":101686},"source":{"imageId":577006,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502900]}}],"icon":"/assets/ui/rom-spells/577006.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-40","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":542052,"sourceSkillId":492926,"name":"Power of the Wind","description":"Increases [SC_SKILLTIPS_MAG_HIT] by (Buff0-0). Shot also inflicts Wind damage for (Buff0-Time) seconds.\n[SC_SKILLTIPS_491573]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577597,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503187],"components":[{"id":503187,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":195,"value":50}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":492926,"name":"Power of the Wind","description":"Increases [SC_SKILLTIPS_MAG_HIT] by (Buff0-0). Shot also inflicts Wind damage for (Buff0-Time) seconds.\n[SC_SKILLTIPS_491573]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577597,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503187]}}],"icon":"/assets/ui/rom-spells/577597.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-45","classId":"rom-mage","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":542082,"sourceSkillId":493028,"name":"Fire Rose Storm","description":"You deal extra [SC_SKILLTIPS_MDMG] when you successfully launch a Fire Rose.\n([SC_SKILLTIPS_CD_1](Buff-Time-503272)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577657,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503272],"components":[{"id":503272,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":493028,"name":"Fire Rose Storm","description":"You deal extra [SC_SKILLTIPS_MDMG] when you successfully launch a Fire Rose.\n([SC_SKILLTIPS_CD_1](Buff-Time-503272)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577657,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503272]}}],"icon":"/assets/ui/rom-spells/577657.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-50","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":542112,"sourceSkillId":493263,"name":"Magic Crossflow","description":"Raises the casting speed of master and pet by (Buff0-0)% for (Buff0-Time) seconds.\n(If the pet disappears, this effect will be cancelled.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577792,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503535],"components":[{"id":503535,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":25,"hateCost":0,"settingFlags":71,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":-2}],"abilitySkillLevelArg":23,"triggers":{"onTimeMagicId":493496,"onTimeSeconds":5,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493263,"name":"Magic Crossflow","description":"Raises the casting speed of master and pet by (Buff0-0)% for (Buff0-Time) seconds.\n(If the pet disappears, this effect will be cancelled.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":40000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577792,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503535]}}],"icon":"/assets/ui/rom-spells/577792.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-60","classId":"rom-mage","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546782,"sourceSkillId":491576,"name":"Strength of Ashes","description":"After your [491577] disappears, this provides you with an increase in [SC_SKILLTIPS_MDMG]. Lasts (Buff-Time-623178) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801281,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623178],"components":[{"id":623178,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":20}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":491576,"name":"Strength of Ashes","description":"After your [491577] disappears, this provides you with an increase in [SC_SKILLTIPS_MDMG]. Lasts (Buff-Time-623178) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801281,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623178]}}],"icon":"/assets/ui/rom-spells/801281.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-scout-elite-70","classId":"rom-mage","secondaryClassId":"rom-scout","group":"elite","unlockLevel":70,"keyItemId":546783,"sourceSkillId":499597,"name":"Wind Fire Cultivation","description":"Earn both [491573] and [623181] at the same time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801329,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623179,623181],"components":[{"id":623179,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623181,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":97,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":195,"value":10}],"abilitySkillLevelArg":11,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499597,"name":"Wind Fire Cultivation","description":"Earn both [491573] and [623181] at the same time.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801329,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623179,623181]}}],"icon":"/assets/ui/rom-spells/801329.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-15","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":541902,"sourceSkillId":491578,"name":"Cursed Fangs","description":"Puts a curse on your hidden weapons. For (Buff0-Time) seconds targets hit with these cursed projectiles suffer (Buff0-Dot) Dark damage every 2 seconds. (As long as your Fang Ritual is active, additional (DMG4) + (FixDMG-620238) x INT [SC_SKILLTIPS_DARK] will be done.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":575725,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501960,620238,502036,623195],"components":[{"id":501960,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":21,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":30},"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":620238,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":5,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-20,"damagePowerSkillLevelArg":25,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502036,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":15,"abilityModifiers":[{"type":50,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":623195,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":15,"abilityModifiers":[{"type":50,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":491578,"name":"Cursed Fangs","description":"Puts a curse on your hidden weapons. For (Buff0-Time) seconds targets hit with these cursed projectiles suffer (Buff0-Dot) Dark damage every 2 seconds. (As long as your Fang Ritual is active, additional (DMG4) + (FixDMG-620238) x INT [SC_SKILLTIPS_DARK] will be done.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":575725,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501960,620238,502036,623195]}}],"icon":"/assets/ui/rom-spells/575725.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-20","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":541932,"sourceSkillId":491345,"name":"Kiss of the Vampire","description":"Inflicts (DMG0) + (FixDMG-620199) x INT [SC_SKILLTIPS_DARK] on your opponent and restores (DMG4) to your HP.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575228,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620237,501560,620199],"components":[{"id":620237,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":20,"settingFlags":0,"specialActionFlags":0,"assistType":23,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":25,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501560,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":20,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":10,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":10,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620199,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-70,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-70,"damagePowerSkillLevelArg":40,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":491345,"name":"Kiss of the Vampire","description":"Inflicts (DMG0) + (FixDMG-620199) x INT [SC_SKILLTIPS_DARK] on your opponent and restores (DMG4) to your HP.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575228,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620237,501560,620199]}}],"icon":"/assets/ui/rom-spells/575228.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-25","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":25,"keyItemId":541962,"sourceSkillId":491348,"name":"Demoralize","description":"Your target cannot attack for (Buff0-Time) seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575231,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501813,503839,502719],"components":[{"id":501813,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":126,"effectFlagWords":[3,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503839,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":126,"effectFlagWords":[3,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":491348,"name":"Demoralize","description":"Your target cannot attack for (Buff0-Time) seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575231,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501813,503839,502719]}}],"icon":"/assets/ui/rom-spells/575231.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-30","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":541992,"sourceSkillId":491581,"name":"Fang Ritual","description":"Raises the damage dealt by Dark magic by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575724,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502036],"components":[{"id":502036,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":15,"abilityModifiers":[{"type":50,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":491581,"name":"Fang Ritual","description":"Raises the damage dealt by Dark magic by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575724,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502036]}}],"icon":"/assets/ui/rom-spells/575724.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-35","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542023,"sourceSkillId":492632,"name":"Distract","description":"Distracts the target, so that it loses its focus on you. You get the lowest place in the aggro table for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577007,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502901],"components":[{"id":502901,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[1073741824,0],"abilityModifiers":[{"type":138,"value":-35}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":492632,"name":"Distract","description":"Distracts the target, so that it loses its focus on you. You get the lowest place in the aggro table for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577007,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502901]}}],"icon":"/assets/ui/rom-spells/577007.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-40","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":40,"keyItemId":542053,"sourceSkillId":492927,"name":"Shadow Shroud","description":"Sinister magic shrouds your target, causing your Demoralize to additionally lower the target's magic defense.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577598,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":492927,"name":"Shadow Shroud","description":"Sinister magic shrouds your target, causing your Demoralize to additionally lower the target's magic defense.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577598,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577598.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-45","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":45,"keyItemId":542083,"sourceSkillId":493030,"name":"Shadow Protection","description":"Increases your casting speed by (Buff0-0)% for (Buff0-Time) seconds. If you receive a critical physical hit while it is in effect, your movement speed is instantly increased by (Buff0-503275)% for (Buff-Time-503275) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503303)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577658,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503274,503275,503303],"components":[{"id":503274,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":204,"abilityModifiers":[{"type":51,"value":-1}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503275,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10}],"abilitySkillLevelArg":11,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493178,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503303,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":60,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":493030,"name":"Shadow Protection","description":"Increases your casting speed by (Buff0-0)% for (Buff0-Time) seconds. If you receive a critical physical hit while it is in effect, your movement speed is instantly increased by (Buff0-503275)% for (Buff-Time-503275) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503303)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577658,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503274,503275,503303]}}],"icon":"/assets/ui/rom-spells/577658.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-50","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":50,"keyItemId":542113,"sourceSkillId":493264,"name":"Gift of the Baron","description":"When you succeed in casting Kiss of the Vampire, you will additionally increase the damage of your next two magical attacks. Effective for (Buff-Time-503538) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577793,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503538],"components":[{"id":503538,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"clearFlags":4096,"abilityModifiers":[{"type":44,"value":1}],"abilitySkillLevelArg":24,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493322,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":493264,"name":"Gift of the Baron","description":"When you succeed in casting Kiss of the Vampire, you will additionally increase the damage of your next two magical attacks. Effective for (Buff-Time-503538) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577793,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503538]}}],"icon":"/assets/ui/rom-spells/577793.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-60","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546784,"sourceSkillId":499600,"name":"Night Refuge","description":"When [499601] is in effect and you receive a normal attack, this instills Fear in the attacker for (Buff-Time-623192) seconds. It also immediately casts [493320] on the attacker. \n([SC_SKILLTIPS_CD_1] (Buff-Time-503303) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623192,503303],"components":[{"id":623192,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[131075,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503303,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":60,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499600,"name":"Night Refuge","description":"When [499601] is in effect and you receive a normal attack, this instills Fear in the attacker for (Buff-Time-623192) seconds. It also immediately casts [493320] on the attacker. \n([SC_SKILLTIPS_CD_1] (Buff-Time-503303) [SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801282,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623192,503303]}}],"icon":"/assets/ui/rom-spells/801282.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-rogue-elite-70","classId":"rom-mage","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546785,"sourceSkillId":499604,"name":"Pride of the Baron","description":"When you have the [499605] effect, the critical attack caused by your spells will reduce the cooldown time of [493320] by 3 seconds. Your [493321] will then have an additional increase to the [SC_SKILLTIPS_MCRI].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801330,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499604,"name":"Pride of the Baron","description":"When you have the [499605] effect, the critical attack caused by your spells will reduce the cooldown time of [493320] by 3 seconds. Your [493321] will then have an additional increase to the [SC_SKILLTIPS_MCRI].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801330,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801330.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-15","classId":"rom-mage","secondaryClassId":"rom-priest","group":"elite","unlockLevel":15,"keyItemId":541903,"sourceSkillId":491587,"name":"Essence of Magic","description":"Increases [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-0)) x ((Buff4-0)%) + (Buff0-0) for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576262,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501962,506232],"components":[{"id":501962,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":15,"value":10}],"abilitySkillLevelArg":60,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495283,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506232,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491587,"name":"Essence of Magic","description":"Increases [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-0)) x ((Buff4-0)%) + (Buff0-0) for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":576262,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501962,506232]}}],"icon":"/assets/ui/rom-spells/576262.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-20","classId":"rom-mage","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":541933,"sourceSkillId":491588,"name":"Purify","description":"Can dispel curses from your target.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575722,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501963],"components":[{"id":501963,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":491588,"name":"Purify","description":"Can dispel curses from your target.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575722,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501963]}}],"icon":"/assets/ui/rom-spells/575722.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-25","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":25,"keyItemId":541963,"sourceSkillId":491589,"name":"Outburst","description":"Flame and Fireball now have a higher chance to deal additional damage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575730,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":491589,"name":"Outburst","description":"Flame and Fireball now have a higher chance to deal additional damage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575730,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575730.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-30","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":30,"keyItemId":541993,"sourceSkillId":491590,"name":"Rising Tide Mastery","description":"Your Rising Tide is now an instant cast with a cooldown of 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575570,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":491590,"name":"Rising Tide Mastery","description":"Your Rising Tide is now an instant cast with a cooldown of 4 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575570,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575570.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-35","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":542024,"sourceSkillId":492633,"name":"Shine of the Holy Aura","description":"Used with a Holy Aura, there is extra recovery of HP but all mana costs raise by 1%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577008,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":492633,"name":"Shine of the Holy Aura","description":"Used with a Holy Aura, there is extra recovery of HP but all mana costs raise by 1%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577008,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577008.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-40","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":40,"keyItemId":542054,"sourceSkillId":492928,"name":"Grand Dispel","description":"Allows your Purify to also dispel harmful effects.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577599,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":492928,"name":"Grand Dispel","description":"Allows your Purify to also dispel harmful effects.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577599,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577599.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-45","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542084,"sourceSkillId":493031,"name":"Disable","description":"A successful Flame or Plasma Arrow hit decreases the target's [SC_SKILLTIPS_MCRI_PASSIVE] for (Buff-Time-503277) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503276)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577659,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503277,503276],"components":[{"id":503277,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177474,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":183,"value":-22}],"abilitySkillLevelArg":12.5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493088,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503276,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":493031,"name":"Disable","description":"A successful Flame or Plasma Arrow hit decreases the target's [SC_SKILLTIPS_MCRI_PASSIVE] for (Buff-Time-503277) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503276)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577659,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503277,503276]}}],"icon":"/assets/ui/rom-spells/577659.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-50","classId":"rom-mage","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":542114,"sourceSkillId":493265,"name":"Magic Drain","description":"Steals the target's attack power, and lowers the target's [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. It also increases your own [SC_SKILLTIPS_02] by (Buff4-0)%. Effective for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577794,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503713,503714],"components":[{"id":503713,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":-2},{"type":171,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503714,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":493265,"name":"Magic Drain","description":"Steals the target's attack power, and lowers the target's [SC_SKILLTIPS_01] and [SC_SKILLTIPS_02] by (Buff0-0)%. It also increases your own [SC_SKILLTIPS_02] by (Buff4-0)%. Effective for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577794,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503713,503714]}}],"icon":"/assets/ui/rom-spells/577794.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-60","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":60,"keyItemId":546786,"sourceSkillId":499607,"name":"Boiling Impact","description":"Increases [490256] damage and transforms your [499608] into [SC_SKILLTIPS_FLAME]. It can also be affected by [490221].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801388,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499607,"name":"Boiling Impact","description":"Increases [490256] damage and transforms your [499608] into [SC_SKILLTIPS_FLAME]. It can also be affected by [490221].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801388,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801388.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-priest-elite-70","classId":"rom-mage","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546787,"sourceSkillId":499609,"name":"Intelligence Seize","description":"Makes your [499610] cause an extra reduction of the target's [SC_SKILLTIPS_INT] and increases your [SC_SKILLTIPS_INT].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801331,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499609,"name":"Intelligence Seize","description":"Makes your [499610] cause an extra reduction of the target's [SC_SKILLTIPS_INT] and increases your [SC_SKILLTIPS_INT].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801331,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801331.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-15","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":15,"keyItemId":541904,"sourceSkillId":491594,"name":"Holy Light Strike","description":"Inflicts (DMG0) + (FixDMG-620224) x INT [SC_SKILLTIPS_LIGHT] on the target.","target":"hostile","range":15,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":575731,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620224,501972,503845],"components":[{"id":620224,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.4,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":40,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501972,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503845,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777299,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":491594,"name":"Holy Light Strike","description":"Inflicts (DMG0) + (FixDMG-620224) x INT [SC_SKILLTIPS_LIGHT] on the target.","target":"hostile","range":15,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":575731,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620224,501972,503845]}}],"icon":"/assets/ui/rom-spells/575731.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-20","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":20,"keyItemId":541934,"sourceSkillId":491347,"name":"Stars of Light","description":"The opponent is showered with exploding hexagrams of Light. For 5 seconds each second one flare explodes, dealing (DMG0) + (FixDMG-620223) x INT [SC_SKILLTIPS_LIGHT].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":2000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":575230,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620223],"components":[{"id":620223,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-25,"fixedValue":-0.1,"attack":{"type":0,"calculationType":1,"damagePower":-25,"damagePowerSkillLevelArg":40,"fixedValue":-0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":491347,"name":"Stars of Light","description":"The opponent is showered with exploding hexagrams of Light. For 5 seconds each second one flare explodes, dealing (DMG0) + (FixDMG-620223) x INT [SC_SKILLTIPS_LIGHT].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":2000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":575230,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620223]}}],"icon":"/assets/ui/rom-spells/575230.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-25","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":25,"keyItemId":541964,"sourceSkillId":491597,"name":"Enhanced Holy Light Strike","description":"Holy Light Strike now has a 30% chance to Stun the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575700,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":491597,"name":"Enhanced Holy Light Strike","description":"Holy Light Strike now has a 30% chance to Stun the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575700,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575700.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-30","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541994,"sourceSkillId":491599,"name":"Messenger of Light","description":"When activated, all damage caused by your Light based spells is increased by (Buff0-0)%. This lasts (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575727,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502034],"components":[{"id":502034,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":49,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491599,"name":"Messenger of Light","description":"When activated, all damage caused by your Light based spells is increased by (Buff0-0)%. This lasts (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575727,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502034]}}],"icon":"/assets/ui/rom-spells/575727.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-35","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":35,"keyItemId":542025,"sourceSkillId":492634,"name":"Light Charge","description":"The power of Light enters your enemy's body with a violent shock, inflicting (DMG0) + (FixDMG-620225) x INT [SC_SKILLTIPS_LIGHT] and Slowing him down by (Buff4-0)% for (Buff4-Time) seconds.\n(This skill slows the target down by a maximum of (Max-Buff0-502881)%.)\n(Players get slowed down by (Buff5-0)%.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":577009,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620225,502881,503851],"components":[{"id":620225,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":30,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":3,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502881,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10},{"type":169,"value":-10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503851,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":6,"abilityModifiers":[{"type":24,"value":-10},{"type":169,"value":-10}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492634,"name":"Light Charge","description":"The power of Light enters your enemy's body with a violent shock, inflicting (DMG0) + (FixDMG-620225) x INT [SC_SKILLTIPS_LIGHT] and Slowing him down by (Buff4-0)% for (Buff4-Time) seconds.\n(This skill slows the target down by a maximum of (Max-Buff0-502881)%.)\n(Players get slowed down by (Buff5-0)%.)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.4},"source":{"imageId":577009,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620225,502881,503851]}}],"icon":"/assets/ui/rom-spells/577009.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-40","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":40,"keyItemId":542055,"sourceSkillId":492929,"name":"Concentrated Attention","description":"Causes your Messenger of Light to increase your [SC_SKILLTIPS_MAG_HIT].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577600,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":492929,"name":"Concentrated Attention","description":"Causes your Messenger of Light to increase your [SC_SKILLTIPS_MAG_HIT].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577600,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577600.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-45","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":45,"keyItemId":542085,"sourceSkillId":493034,"name":"Light of Day","description":"When you successfully strike your opponent with Holy Light Strike or Light Charge, it instantly increases your [SC_SKILLTIPS_LIGHT] for (Buff-Time-620182) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503278)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577660,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620182,503278],"components":[{"id":620182,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":49,"value":8}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493037,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503278,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493034,"name":"Light of Day","description":"When you successfully strike your opponent with Holy Light Strike or Light Charge, it instantly increases your [SC_SKILLTIPS_LIGHT] for (Buff-Time-620182) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-503278)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577660,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620182,503278]}}],"icon":"/assets/ui/rom-spells/577660.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-50","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":50,"keyItemId":542115,"sourceSkillId":493266,"name":"Energy Recovery","description":"Causes your Energy Influx to boost your [SC_SKILLTIPS_MCRI_POWER] by an additional (Buff0-503746)%. While this is in effect, each critical strike your Holy Light Strike lands will also recover (current [SC_SKILLTIPS_MP] x (DMG-506530)) + (DMG-503571) MP.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577795,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503746,506530,503571],"components":[{"id":503746,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524451,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":21,"value":2}],"abilitySkillLevelArg":8,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497727,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506530,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1048576,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":1,"fixedValue":0,"attack":{"type":1,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503571,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":15,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":15,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493266,"name":"Energy Recovery","description":"Causes your Energy Influx to boost your [SC_SKILLTIPS_MCRI_POWER] by an additional (Buff0-503746)%. While this is in effect, each critical strike your Holy Light Strike lands will also recover (current [SC_SKILLTIPS_MP] x (DMG-506530)) + (DMG-503571) MP.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577795,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503746,506530,503571]}}],"icon":"/assets/ui/rom-spells/577795.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-60","classId":"rom-mage","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546788,"sourceSkillId":499612,"name":"Brilliance Award","description":"Reduces your [499613] chant time by half. Also increases target's [SC_SKILLTIPS_LIGHT] by 3%. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801284,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499612,"name":"Brilliance Award","description":"Reduces your [499613] chant time by half. Also increases target's [SC_SKILLTIPS_LIGHT] by 3%. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801284,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801284.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-knight-elite-70","classId":"rom-mage","secondaryClassId":"rom-knight","group":"elite","unlockLevel":70,"keyItemId":546789,"sourceSkillId":499614,"name":"Saint's Resilience","description":"Removes Helpless, Dizzy, Root, Slow and Fear states. (Target must be in a Root, Slow or Dizzy state for removal effect to work.) \nThis skill can be used under any state that hinders casting. Also reduces your received damage by (Buff0-0)% and lasts for (Buff0-Time) seconds. After the [499614] effect wears off, it causes an extra increase in your [SC_SKILLTIPS_MOVE]. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801332,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623214],"components":[{"id":623214,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":60},{"type":143,"value":60}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":499615,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":499614,"name":"Saint's Resilience","description":"Removes Helpless, Dizzy, Root, Slow and Fear states. (Target must be in a Root, Slow or Dizzy state for removal effect to work.) \nThis skill can be used under any state that hinders casting. Also reduces your received damage by (Buff0-0)% and lasts for (Buff0-Time) seconds. After the [499614] effect wears off, it causes an extra increase in your [SC_SKILLTIPS_MOVE]. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801332,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623214]}}],"icon":"/assets/ui/rom-spells/801332.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-15","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":15,"keyItemId":543022,"sourceSkillId":494049,"name":"Earth Surge","description":"Causes massive damage to target, but the chance of hitting the target is pretty low. Inflicts (DMG0) + (FixDMG-620236) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1.4},"source":{"imageId":579119,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620236],"components":[{"id":620236,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-140,"fixedValue":-0.6,"attack":{"type":0,"calculationType":1,"damagePower":-140,"damagePowerSkillLevelArg":30,"fixedValue":-0.6,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494049,"name":"Earth Surge","description":"Causes massive damage to target, but the chance of hitting the target is pretty low. Inflicts (DMG0) + (FixDMG-620236) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1.4},"source":{"imageId":579119,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620236]}}],"icon":"/assets/ui/rom-spells/579119.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-20","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":20,"keyItemId":543030,"sourceSkillId":494050,"name":"Absence","description":"Causes target to become absent minded, reducing [SC_SKILLTIPS_MAG_HITP] by (Buff0-0)% for (Buff0-Time) seconds.\n(When the target is a player, lowers [SC_SKILLTIPS_MAG_HITP] by (Buff1-0)% for (Buff1-Time) seconds. )\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579120,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504559,504245],"components":[{"id":504559,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":199,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504245,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"abilityModifiers":[{"type":199,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494050,"name":"Absence","description":"Causes target to become absent minded, reducing [SC_SKILLTIPS_MAG_HITP] by (Buff0-0)% for (Buff0-Time) seconds.\n(When the target is a player, lowers [SC_SKILLTIPS_MAG_HITP] by (Buff1-0)% for (Buff1-Time) seconds. )\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579120,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504559,504245]}}],"icon":"/assets/ui/rom-spells/579120.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-25","classId":"rom-mage","secondaryClassId":"rom-warden","group":"passive","unlockLevel":25,"keyItemId":543038,"sourceSkillId":494051,"name":"Flame Follower","description":"The flame follower understands the flow of flame energy, reducing your Fireball cooldown by 1 second and increasing your Fireball critical rate.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579121,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494051,"name":"Flame Follower","description":"The flame follower understands the flow of flame energy, reducing your Fireball cooldown by 1 second and increasing your Fireball critical rate.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579121,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579121.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-30","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":30,"keyItemId":543046,"sourceSkillId":494330,"name":"Earth Groaning Wind Blade","description":"Combines the power of earth and wind. Slices through the air, causing the earth to resonate, inflicting (DMG4) + (FixDMG-620234) x INT [SC_SKILLTIPS_WIND] and (DMG0) + (FixDMG-620233) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":579897,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620234,620233],"components":[{"id":620234,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620233,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494330,"name":"Earth Groaning Wind Blade","description":"Combines the power of earth and wind. Slices through the air, causing the earth to resonate, inflicting (DMG4) + (FixDMG-620234) x INT [SC_SKILLTIPS_WIND] and (DMG0) + (FixDMG-620233) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":579897,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620234,620233]}}],"icon":"/assets/ui/rom-spells/579897.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-35","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":35,"keyItemId":543054,"sourceSkillId":494562,"name":"Earth Scepter","description":"Your done magical Earth damage is increased by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579898,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504913],"components":[{"id":504913,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":45,"value":5}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494562,"name":"Earth Scepter","description":"Your done magical Earth damage is increased by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579898,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504913]}}],"icon":"/assets/ui/rom-spells/579898.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-40","classId":"rom-mage","secondaryClassId":"rom-warden","group":"passive","unlockLevel":40,"keyItemId":543062,"sourceSkillId":494563,"name":"Feedback","description":"A successful hit of your Earth Groaning Wind Blade has a chance of restoring MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579899,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":494563,"name":"Feedback","description":"A successful hit of your Earth Groaning Wind Blade has a chance of restoring MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579899,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579899.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-45","classId":"rom-mage","secondaryClassId":"rom-warden","group":"passive","unlockLevel":45,"keyItemId":543070,"sourceSkillId":850318,"name":"Elves' Favor","description":"When you use Elven Amulet, any attack damage received while the effect lasts may cause your next spell casting time to be 1 second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581110,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":850318,"name":"Elves' Favor","description":"When you use Elven Amulet, any attack damage received while the effect lasts may cause your next spell casting time to be 1 second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581110,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581110.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-50","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543078,"sourceSkillId":494926,"name":"Earth Marking","description":"Earth Markings branded on your body will increase your chance to inflict critical damage with magic attacks by (Buff0-0) for (Buff0-Time) seconds. When using earth spells this chance will be additionally increased by another (Buff0-505904) points. This effect can be stacked up to 10 times.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":200,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581111,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505690,505904],"components":[{"id":505690,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505904,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":40}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494926,"name":"Earth Marking","description":"Earth Markings branded on your body will increase your chance to inflict critical damage with magic attacks by (Buff0-0) for (Buff0-Time) seconds. When using earth spells this chance will be additionally increased by another (Buff0-505904) points. This effect can be stacked up to 10 times.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":200,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581111,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505690,505904]}}],"icon":"/assets/ui/rom-spells/581111.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-60","classId":"rom-mage","secondaryClassId":"rom-warden","group":"passive","unlockLevel":60,"keyItemId":546790,"sourceSkillId":499617,"name":"Follower's Ground","description":"While [494562] is in effect, this provides an extra increase in your [SC_SKILLTIPS_INT] and [SC_SKILLTIPS_STA]. Also your [494050] will cause an additional increase in the [SC_SKILLTIPS_EARTH] received by the target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801285,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499617,"name":"Follower's Ground","description":"While [494562] is in effect, this provides an extra increase in your [SC_SKILLTIPS_INT] and [SC_SKILLTIPS_STA]. Also your [494050] will cause an additional increase in the [SC_SKILLTIPS_EARTH] received by the target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801285,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801285.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warden-elite-70","classId":"rom-mage","secondaryClassId":"rom-warden","group":"elite","unlockLevel":70,"keyItemId":546791,"sourceSkillId":499620,"name":"Earth Core Barrier","description":"Reduces your received damage by (Buff0-0)%. Also all spells are transformed to instant spells. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801333,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623219],"components":[{"id":623219,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,524288],"abilityModifiers":[{"type":142,"value":60},{"type":143,"value":60}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499620,"name":"Earth Core Barrier","description":"Reduces your received damage by (Buff0-0)%. Also all spells are transformed to instant spells. Lasts for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801333,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623219]}}],"icon":"/assets/ui/rom-spells/801333.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-15","classId":"rom-mage","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543023,"sourceSkillId":494052,"name":"Perception","description":"Temporarily increases [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-1)% + (Buff0-0). Also increases [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-1)) x (Buff4-0)% + (Buff0-1) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579122,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504561,506234],"components":[{"id":504561,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":30},{"type":15,"value":20}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495284,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506234,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":1},{"type":168,"value":1}],"abilitySkillLevelArg":7,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494052,"name":"Perception","description":"Temporarily increases [SC_SKILLTIPS_MP] by (current [SC_SKILLTIPS_MP] + (Buff0-0)) x (Buff4-1)% + (Buff0-0). Also increases [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-1)) x (Buff4-0)% + (Buff0-1) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579122,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504561,506234]}}],"icon":"/assets/ui/rom-spells/579122.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-20","classId":"rom-mage","secondaryClassId":"rom-druid","group":"elite","unlockLevel":20,"keyItemId":543031,"sourceSkillId":494053,"name":"Magic Target","description":"Temporarily increases your magic accuracy by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579123,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504562],"components":[{"id":504562,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":195,"value":10}],"abilitySkillLevelArg":10.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":494053,"name":"Magic Target","description":"Temporarily increases your magic accuracy by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579123,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504562]}}],"icon":"/assets/ui/rom-spells/579123.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-25","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":25,"keyItemId":543039,"sourceSkillId":494054,"name":"Control Flame","description":"When your Eruption effect is triggered, [SC_SKILLTIPS_02] additionally increases by (Buff0-504563)% .\n([SC_SKILLTIPS_CD_1](Buff-Time-504869)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579124,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504563,504869],"components":[{"id":504563,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":8}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494078,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504869,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494054,"name":"Control Flame","description":"When your Eruption effect is triggered, [SC_SKILLTIPS_02] additionally increases by (Buff0-504563)% .\n([SC_SKILLTIPS_CD_1](Buff-Time-504869)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579124,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504563,504869]}}],"icon":"/assets/ui/rom-spells/579124.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-30","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":30,"keyItemId":543047,"sourceSkillId":494331,"name":"Green Guardian","description":"After Mother Earth's Protection effect ends, additionally restores (Buff-Dot-620188)% + (Buff-Dot-504874) HP every 2 seconds for (Buff-Time-504874) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579900,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620188,504874],"components":[{"id":620188,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":8297,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":5,"dotBase":2,"dot":{"timeSeconds":2,"type":5,"base":2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504874,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":8299,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":30,"dot":{"timeSeconds":2,"type":0,"base":30,"skillLevelArg":30},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494331,"name":"Green Guardian","description":"After Mother Earth's Protection effect ends, additionally restores (Buff-Dot-620188)% + (Buff-Dot-504874) HP every 2 seconds for (Buff-Time-504874) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579900,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620188,504874]}}],"icon":"/assets/ui/rom-spells/579900.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-35","classId":"rom-mage","secondaryClassId":"rom-druid","group":"elite","unlockLevel":35,"keyItemId":543055,"sourceSkillId":494564,"name":"Magma Blade","description":"Forms the power of earth and fire into a blade dealing (DMG0) + (FixDMG-620227) x INT [SC_SKILLTIPS_FLAME] and (DMG4) + (FixDMG-620228) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":579901,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620227,620228],"components":[{"id":620227,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.15,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.15,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620228,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":-0.15,"attack":{"type":0,"calculationType":1,"damagePower":-10,"damagePowerSkillLevelArg":30,"fixedValue":-0.15,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":494564,"name":"Magma Blade","description":"Forms the power of earth and fire into a blade dealing (DMG0) + (FixDMG-620227) x INT [SC_SKILLTIPS_FLAME] and (DMG4) + (FixDMG-620228) x INT [SC_SKILLTIPS_EARTH].","target":"hostile","range":25,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":579901,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620227,620228]}}],"icon":"/assets/ui/rom-spells/579901.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-40","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":40,"keyItemId":543063,"sourceSkillId":494565,"name":"Boiling Rock","description":"The critical hit rate for your [494564|Magma Blade's] Fire damage is increased and its Earth damage has a chance of restoring MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579902,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494565,"name":"Boiling Rock","description":"The critical hit rate for your [494564|Magma Blade's] Fire damage is increased and its Earth damage has a chance of restoring MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579902,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579902.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-45","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":45,"keyItemId":543071,"sourceSkillId":494927,"name":"Earth Attack","description":"Causes the damage range of Earth Pulse to become fan-shaped and reduces cooldown by 5 seconds. When it hits, it will increase earth damage inflicted on the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581112,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494927,"name":"Earth Attack","description":"Causes the damage range of Earth Pulse to become fan-shaped and reduces cooldown by 5 seconds. When it hits, it will increase earth damage inflicted on the target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581112,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581112.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-50","classId":"rom-mage","secondaryClassId":"rom-druid","group":"elite","unlockLevel":50,"keyItemId":543079,"sourceSkillId":494928,"name":"Elven Mystic","description":"Using ancient Elven magic lets you concentrate magical energy inside your body for (Buff0-Time) seconds. While in effect casting offensive spells will give you the chance to get Energetically Charged. When this effect stacks 5 times, further casting of offensive spells will give you the chance of receiving Mystic Energy. Mystic Energy can be released to inflict (DMG-620231) + (FixDMG-620231) x INT [SC_SKILLTIPS_WIND] on your target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":3.5},"source":{"imageId":581155,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505914,505913,620231],"components":[{"id":505914,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505913,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"clearFlags":4096,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495070,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620231,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-700,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-700,"damagePowerSkillLevelArg":5,"fixedValue":-0.2,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":494928,"name":"Elven Mystic","description":"Using ancient Elven magic lets you concentrate magical energy inside your body for (Buff0-Time) seconds. While in effect casting offensive spells will give you the chance to get Energetically Charged. When this effect stacks 5 times, further casting of offensive spells will give you the chance of receiving Mystic Energy. Mystic Energy can be released to inflict (DMG-620231) + (FixDMG-620231) x INT [SC_SKILLTIPS_WIND] on your target.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false},{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":3.5},"source":{"imageId":581155,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505914,505913,620231]}}],"icon":"/assets/ui/rom-spells/581155.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-60","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546792,"sourceSkillId":499621,"name":"Infiltration Spirit","description":"After a target is hit by your [499622], it causes an additional reduction of the target's [SC_SKILLTIPS_MDEF].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801286,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499621,"name":"Infiltration Spirit","description":"After a target is hit by your [499622], it causes an additional reduction of the target's [SC_SKILLTIPS_MDEF].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801286,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801286.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-druid-elite-70","classId":"rom-mage","secondaryClassId":"rom-druid","group":"passive","unlockLevel":70,"keyItemId":546793,"sourceSkillId":499623,"name":"Pulse Link","description":"You will receive [499624] as well when you use [499624] on a target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801334,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499623,"name":"Pulse Link","description":"You will receive [499624] as well when you use [499624] on a target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801334,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801334.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-15","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":15,"keyItemId":545992,"sourceSkillId":498744,"name":"Static Resonance","description":"Immediately resets the cooldown time for Electrostatic Charge.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800136,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621500],"components":[{"id":621500,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498744,"name":"Static Resonance","description":"Immediately resets the cooldown time for Electrostatic Charge.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800136,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621500]}}],"icon":"/assets/ui/rom-spells/800136.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-20","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":20,"keyItemId":545993,"sourceSkillId":498745,"name":"Industry Fire","description":"Increases damage dealt by Soul Pain and transforms it into fire damage. Also inflicts extra fire damage when used.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800137,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498745,"name":"Industry Fire","description":"Increases damage dealt by Soul Pain and transforms it into fire damage. Also inflicts extra fire damage when used.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800137,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800137.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-25","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":25,"keyItemId":545994,"sourceSkillId":498748,"name":"Lightning Display","description":"Increases the effective time of [621505] caused by the Plasma Arrow to (Buff-Time-621505) seconds and increases your [SC_SKILLTIPS_WIND].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800138,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621505],"components":[{"id":621505,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":18,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":96,"abilityModifiers":[{"type":20,"value":20},{"type":48,"value":1}],"abilitySkillLevelArg":12,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-10,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498748,"name":"Lightning Display","description":"Increases the effective time of [621505] caused by the Plasma Arrow to (Buff-Time-621505) seconds and increases your [SC_SKILLTIPS_WIND].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800138,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621505]}}],"icon":"/assets/ui/rom-spells/800138.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-30","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":30,"keyItemId":545995,"sourceSkillId":498750,"name":"Breath Erase","description":"Aggro is reduced by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800139,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621506],"components":[{"id":621506,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilityModifiers":[{"type":138,"value":-10}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498750,"name":"Breath Erase","description":"Aggro is reduced by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800139,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621506]}}],"icon":"/assets/ui/rom-spells/800139.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-35","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":35,"keyItemId":545996,"sourceSkillId":498751,"name":"Elements of Pride","description":"You will receive [621508] effect when Flame is used, increasing the [SC_SKILLTIPS_WIND]. You will receive [621507] effect when Electric Explosion is used, increasing the [SC_SKILLTIPS_FLAME]. These effects can be stacked individually up to 2 times. The effects last (Buff-Time-621507) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800140,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621508,621507],"components":[{"id":621508,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":13,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":48,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621507,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":13,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":47,"value":1}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498751,"name":"Elements of Pride","description":"You will receive [621508] effect when Flame is used, increasing the [SC_SKILLTIPS_WIND]. You will receive [621507] effect when Electric Explosion is used, increasing the [SC_SKILLTIPS_FLAME]. These effects can be stacked individually up to 2 times. The effects last (Buff-Time-621507) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800140,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621508,621507]}}],"icon":"/assets/ui/rom-spells/800140.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-40","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":40,"keyItemId":545997,"sourceSkillId":498757,"name":"Soul Stepping","description":"For (Buff0-Time) seconds, allows you to move while casting any spell. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800141,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623434,621509],"components":[{"id":623434,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilityModifiers":[{"type":24,"value":20},{"type":51,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621509,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498757,"name":"Soul Stepping","description":"For (Buff0-Time) seconds, allows you to move while casting any spell. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800141,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623434,621509]}}],"icon":"/assets/ui/rom-spells/800141.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-45","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":45,"keyItemId":545998,"sourceSkillId":498758,"name":"Deep Inspiration","description":"Immediately resets the cooldown time for Intensification and Energy Well.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800142,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621510],"components":[{"id":621510,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":498758,"name":"Deep Inspiration","description":"Immediately resets the cooldown time for Intensification and Energy Well.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800142,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621510]}}],"icon":"/assets/ui/rom-spells/800142.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-50","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":545999,"sourceSkillId":498759,"name":"Fire Lightning Burst","description":"Inflicts (DMG0) + (FixDMG-621511) x INT [SC_SKILLTIPS_FLAME] and (DMG4) + (FixDMG-621512) x INT [SC_SKILLTIPS_WIND] on target. If the target doesn't die during this attack, then the skill's cooldown time is immediately reset. \n([SC_SKILLTIPS_CD_1](Buff-Time-621514)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":7000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":800143,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621511,621512,621514],"components":[{"id":621511,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621512,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621514,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498759,"name":"Fire Lightning Burst","description":"Inflicts (DMG0) + (FixDMG-621511) x INT [SC_SKILLTIPS_FLAME] and (DMG4) + (FixDMG-621512) x INT [SC_SKILLTIPS_WIND] on target. If the target doesn't die during this attack, then the skill's cooldown time is immediately reset. \n([SC_SKILLTIPS_CD_1](Buff-Time-621514)[SC_SKILLTIPS_CD_2])\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":2000,"cooldownMs":7000,"costs":[{"resource":"focus","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":800143,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621511,621512,621514]}}],"icon":"/assets/ui/rom-spells/800143.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-60","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":60,"keyItemId":546794,"sourceSkillId":499813,"name":"Soul Speed","description":"Causes [498757] to additionally increase [SC_SKILLTIPS_MOVE] by (Buff0-623434)% and [SC_SKILLTIPS_CAST] by (Buff0-623434)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801622,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623434],"components":[{"id":623434,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1048576],"abilityModifiers":[{"type":24,"value":20},{"type":51,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":499813,"name":"Soul Speed","description":"Causes [498757] to additionally increase [SC_SKILLTIPS_MOVE] by (Buff0-623434)% and [SC_SKILLTIPS_CAST] by (Buff0-623434)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801622,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623434]}}],"icon":"/assets/ui/rom-spells/801622.png","iconResolution":"native-interface-fdb"},{"id":"rom-mage-rom-warlock-elite-70","classId":"rom-mage","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":70,"keyItemId":546796,"sourceSkillId":499814,"name":"Elemental Extraction","description":"When critically hit by [499812] or [491170], the target's [SC_SKILLTIPS_DEF] will be reduced by (Buff0-623436)% and [SC_SKILLTIPS_MDEF] by (Buff1-623436)% for (Buff-Time-623436) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801623,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623436],"components":[{"id":623436,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":-30},{"type":170,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499814,"name":"Elemental Extraction","description":"When critically hit by [499812] or [491170], the target's [SC_SKILLTIPS_DEF] will be reduced by (Buff0-623436)% and [SC_SKILLTIPS_MDEF] by (Buff1-623436)% for (Buff-Time-623436) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801623,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623436]}}],"icon":"/assets/ui/rom-spells/801623.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-15","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":541905,"sourceSkillId":491600,"name":"Battle Monk Stance","description":"When the stance is activated, [SC_SKILLTIPS_01] will be increased by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff0-506388)% + (Buff0-0), and [SC_SKILLTIPS_DEF] will be increased by (Buff0-507324)%, but healing ability will be reduced by (Buff0-506386)%. The stance is effective for(Buff0-Time) seconds. (This skill increases defense by a maximum of (Max-Buff0-507324)% and reduces healing ability by a maximum of(Max-Buff0-506386)%).","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575718,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501977,507325,506388,507324,506386],"components":[{"id":501977,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":12,"value":30}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495280,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507325,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506388,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":2}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":507324,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":10}],"abilitySkillLevelArg":9.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506386,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":-3}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491600,"name":"Battle Monk Stance","description":"When the stance is activated, [SC_SKILLTIPS_01] will be increased by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff0-506388)% + (Buff0-0), and [SC_SKILLTIPS_DEF] will be increased by (Buff0-507324)%, but healing ability will be reduced by (Buff0-506386)%. The stance is effective for(Buff0-Time) seconds. (This skill increases defense by a maximum of (Max-Buff0-507324)% and reduces healing ability by a maximum of(Max-Buff0-506386)%).","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575718,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501977,507325,506388,507324,506386]}}],"icon":"/assets/ui/rom-spells/575718.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-20","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":20,"keyItemId":541935,"sourceSkillId":491362,"name":"Explosion of Fighting Spirit","description":"Mana is converted into fighting spirit to attack the target and inflict (DMG0) main hand weapon DPS. \n(Requires the Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575233,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501789],"components":[{"id":501789,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":491362,"name":"Explosion of Fighting Spirit","description":"Mana is converted into fighting spirit to attack the target and inflict (DMG0) main hand weapon DPS. \n(Requires the Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575233,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501789]}}],"icon":"/assets/ui/rom-spells/575233.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-25","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":25,"keyItemId":541965,"sourceSkillId":491363,"name":"Fighting Spirit Combination","description":"Releases two successive bursts of fighting spirit, that cause (DMG0) main hand weapon DPS. \n(Requires Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575234,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501790],"components":[{"id":501790,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":491363,"name":"Fighting Spirit Combination","description":"Releases two successive bursts of fighting spirit, that cause (DMG0) main hand weapon DPS. \n(Requires Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575234,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501790]}}],"icon":"/assets/ui/rom-spells/575234.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-30","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":541995,"sourceSkillId":491364,"name":"Ascending Dragon Strike","description":"Transforms rage into a dragon-like form inflicting (DMG0) main hand weapon DPS. \n(Requires Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575235,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501791],"components":[{"id":501791,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.8,"damagePowerSkillLevelArg":4,"fixedValue":0,"fixedType":1,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":491364,"name":"Ascending Dragon Strike","description":"Transforms rage into a dragon-like form inflicting (DMG0) main hand weapon DPS. \n(Requires Battle Monk Stance)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575235,"sourceEffectType":1,"sourceTarget":6,"componentIds":[501791]}}],"icon":"/assets/ui/rom-spells/575235.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-35","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542026,"sourceSkillId":492635,"name":"Power Build-Up","description":"Converts Mana into fighting spirit, which accumulates in you. Increases for (Buff0-Time) seconds your 1-H Weapon Damage by (Buff0-1)%, 2-H Staff Damage by (Buff0-3)%, and your maximum HP by (Buff0-0)%.\n(Requires the Battle Monk Stance.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577010,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502904],"components":[{"id":502904,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":1},{"type":61,"value":3},{"type":62,"value":3},{"type":64,"value":2}],"abilitySkillLevelArg":28,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":492635,"name":"Power Build-Up","description":"Converts Mana into fighting spirit, which accumulates in you. Increases for (Buff0-Time) seconds your 1-H Weapon Damage by (Buff0-1)%, 2-H Staff Damage by (Buff0-3)%, and your maximum HP by (Buff0-0)%.\n(Requires the Battle Monk Stance.)\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577010,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502904]}}],"icon":"/assets/ui/rom-spells/577010.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-40","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":542056,"sourceSkillId":492930,"name":"Vindictive Strike","description":"Inflicts (DMG0) DPS on the target, and Stuns it for (Buff4-Time) seconds.","target":"hostile","range":7,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":3},"source":{"imageId":577601,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503193,503194,503855,502719],"components":[{"id":503193,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-300,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-300,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503194,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777331,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503855,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":4,"effectFlagWords":[16777331,0],"abilityModifiers":[{"type":198,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502719,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":4,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492930,"name":"Vindictive Strike","description":"Inflicts (DMG0) DPS on the target, and Stuns it for (Buff4-Time) seconds.","target":"hostile","range":7,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":3},"source":{"imageId":577601,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503193,503194,503855,502719]}}],"icon":"/assets/ui/rom-spells/577601.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-45","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":45,"keyItemId":542086,"sourceSkillId":493038,"name":"Condensed Rage","description":"Instantly lets you enter Condensed Rage state for (Buff0-Time) seconds. When attacked in this state you recover (Buff-Dot-503301) HP.\n(Requires [491600])\n(After the effect has ended it cannot be triggered again for (Buff-Time-506323) seconds.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577661,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503280,503301,506323],"components":[{"id":503280,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":107,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":493056,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503301,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":137,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495293,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":0,"dotBase":50,"dot":{"timeSeconds":1,"type":0,"base":50,"skillLevelArg":20},"attackType":0,"damagePower":50,"fixedValue":0,"summonCreatureId":0},{"id":506323,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":65,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":493038,"name":"Condensed Rage","description":"Instantly lets you enter Condensed Rage state for (Buff0-Time) seconds. When attacked in this state you recover (Buff-Dot-503301) HP.\n(Requires [491600])\n(After the effect has ended it cannot be triggered again for (Buff-Time-506323) seconds.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577661,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503280,503301,506323]}}],"icon":"/assets/ui/rom-spells/577661.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-50","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":50,"keyItemId":542116,"sourceSkillId":493267,"name":"Fire Fairy","description":"Summons a fire fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102104},"source":{"imageId":577786,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503164],"components":[{"id":503164,"magicFunc":3,"magicType":2,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"summonCreatureId":102104,"summon":{"creatureId":102104,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":493267,"name":"Fire Fairy","description":"Summons a fire fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102104},"source":{"imageId":577786,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503164]}}],"icon":"/assets/ui/rom-spells/577786.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-60","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546799,"sourceSkillId":499984,"name":"Light Healer Fighting Spirit","description":"When [622997] hits a target, it can recover the caster's HP.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801287,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622997],"components":[{"id":622997,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499984,"name":"Light Healer Fighting Spirit","description":"When [622997] hits a target, it can recover the caster's HP.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801287,"sourceEffectType":2,"sourceTarget":0,"componentIds":[622997]}}],"icon":"/assets/ui/rom-spells/801287.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warrior-elite-70","classId":"rom-priest","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546800,"sourceSkillId":499982,"name":"Violent Kick","description":"When [493277] is in effect, [501791] carries a Stun effect and when this effect wears off, a Slow effect is invoked.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801335,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501791],"components":[{"id":501791,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1.8,"damagePowerSkillLevelArg":4,"fixedValue":0,"fixedType":1,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499982,"name":"Violent Kick","description":"When [493277] is in effect, [501791] carries a Stun effect and when this effect wears off, a Slow effect is invoked.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801335,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501791]}}],"icon":"/assets/ui/rom-spells/801335.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-15","classId":"rom-priest","secondaryClassId":"rom-champion","group":"passive","unlockLevel":15,"keyItemId":546031,"sourceSkillId":498610,"name":"Infused Light Chain","description":"Increases damage caused by Chain of Light and doesn't require cooldown time. Hits can carry an extra addition of rage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800176,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498610,"name":"Infused Light Chain","description":"Increases damage caused by Chain of Light and doesn't require cooldown time. Hits can carry an extra addition of rage.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800176,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800176.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-20","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":546032,"sourceSkillId":498612,"name":"Heart Rune Energy","description":"Restores (DMG1) HP to friendly targets. Also increases caster's [SC_SKILLTIPS_MND] by (Buff4-0)% for (Buff4-Time) seconds.","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":800177,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621152,621546,621547],"components":[{"id":621152,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0.4,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":20,"fixedValue":0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":621546,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":35,"fixedValue":0.2,"attack":{"type":0,"calculationType":5,"damagePower":35,"damagePowerSkillLevelArg":20,"fixedValue":0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":621547,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":7,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":164,"value":2}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498612,"name":"Heart Rune Energy","description":"Restores (DMG1) HP to friendly targets. Also increases caster's [SC_SKILLTIPS_MND] by (Buff4-0)% for (Buff4-Time) seconds.","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":800177,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621152,621546,621547]}}],"icon":"/assets/ui/rom-spells/800177.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-25","classId":"rom-priest","secondaryClassId":"rom-champion","group":"passive","unlockLevel":25,"keyItemId":546033,"sourceSkillId":498613,"name":"Protection Rune Seal","description":"Increases Regeneration's healing effect and carries an 8% chance to immediately reset the cooldown time of Heart Rune Energy every time Regeneration is invoked.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800178,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498613,"name":"Protection Rune Seal","description":"Increases Regeneration's healing effect and carries an 8% chance to immediately reset the cooldown time of Heart Rune Energy every time Regeneration is invoked.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800178,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800178.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-30","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":30,"keyItemId":546034,"sourceSkillId":498615,"name":"Healing Diamond Light","description":"Converts (Buff0-Dot)% MP to Diamond Light every second while in effect. Also recovers (DMG-621551) + (FixDMG-621551) x INT HP for all party members in contact in a range of 120. \n(This state ends when MP has been exhausted.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":29,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.35},"source":{"imageId":800179,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621550,621551],"components":[{"id":621550,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":111,"specialActionFlags":0,"assistType":-1,"clearFlags":2080,"abilityModifiers":[{"type":0,"value":8}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":498616,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":6,"dotBase":-7,"dot":{"timeSeconds":1,"type":6,"base":-7,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621551,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":35,"fixedValue":0.1,"attack":{"type":0,"calculationType":5,"damagePower":35,"damagePowerSkillLevelArg":12,"fixedValue":0.1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498615,"name":"Healing Diamond Light","description":"Converts (Buff0-Dot)% MP to Diamond Light every second while in effect. Also recovers (DMG-621551) + (FixDMG-621551) x INT HP for all party members in contact in a range of 120. \n(This state ends when MP has been exhausted.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":29,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.35},"source":{"imageId":800179,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621550,621551]}}],"icon":"/assets/ui/rom-spells/800179.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-35","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":35,"keyItemId":546035,"sourceSkillId":498617,"name":"Diamond Light Activation","description":"Immediately recovers (DMG4) MP and increases amount of healing by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800180,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621151,621150],"components":[{"id":621151,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"clearFlags":2048,"abilityModifiers":[{"type":149,"value":4}],"abilitySkillLevelArg":15,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621150,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":33,"fixedValue":0,"attack":{"type":1,"calculationType":8,"damagePower":33,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498617,"name":"Diamond Light Activation","description":"Immediately recovers (DMG4) MP and increases amount of healing by (Buff0-0)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800180,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621151,621150]}}],"icon":"/assets/ui/rom-spells/800180.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-40","classId":"rom-priest","secondaryClassId":"rom-champion","group":"passive","unlockLevel":40,"keyItemId":546036,"sourceSkillId":498618,"name":"Quick Heal","description":"Increases the amount of HP restored by Heart Rune Energy when current target's HP falls below 40%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800181,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498618,"name":"Quick Heal","description":"Increases the amount of HP restored by Heart Rune Energy when current target's HP falls below 40%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800181,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800181.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-45","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":45,"keyItemId":546037,"sourceSkillId":498619,"name":"Rune Footstep","description":"Increases [SC_SKILLTIPS_MOVE] by (Buff0-0)% and [SC_SKILLTIPS_HEAL] by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800182,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621552],"components":[{"id":621552,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10},{"type":149,"value":5}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498619,"name":"Rune Footstep","description":"Increases [SC_SKILLTIPS_MOVE] by (Buff0-0)% and [SC_SKILLTIPS_HEAL] by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800182,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621552]}}],"icon":"/assets/ui/rom-spells/800182.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-50","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":50,"keyItemId":546038,"sourceSkillId":498620,"name":"Beacon of Regeneration","description":"After a beacon has been created on a friendly party member, it will restore (DMG-621227) points of this member's HP every time you invoke a healing effect. \n(Beacon of Regeneration lasts for (Buff0-Time) seconds.)","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":29,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800183,"sourceEffectType":0,"sourceTarget":1,"componentIds":[620489,620490,621227],"components":[{"id":620489,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":0,"value":10},{"type":0,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620490,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":-10,"settingFlags":524481,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":0,"value":10},{"type":0,"value":10}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621227,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":35,"dot":{"timeSeconds":1,"type":0,"base":35,"skillLevelArg":30},"attackType":0,"damagePower":35,"fixedValue":0.2,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498620,"name":"Beacon of Regeneration","description":"After a beacon has been created on a friendly party member, it will restore (DMG-621227) points of this member's HP every time you invoke a healing effect. \n(Beacon of Regeneration lasts for (Buff0-Time) seconds.)","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":29,"percentage":false},{"resource":"mana","amount":1,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800183,"sourceEffectType":0,"sourceTarget":1,"componentIds":[620489,620490,621227]}}],"icon":"/assets/ui/rom-spells/800183.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-60","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":60,"keyItemId":546811,"sourceSkillId":498625,"name":"Tower of Vitality","description":"Creates a tower that increases the attributes of friendly targets within range by (Buff0-622051)% for 20 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":6,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801628,"sourceEffectType":0,"sourceTarget":0,"componentIds":[622047,622051],"components":[{"id":622047,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622051,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":166,"value":6}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":498625,"name":"Tower of Vitality","description":"Creates a tower that increases the attributes of friendly targets within range by (Buff0-622051)% for 20 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":6,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801628,"sourceEffectType":0,"sourceTarget":0,"componentIds":[622047,622051]}}],"icon":"/assets/ui/rom-spells/801628.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-champion-elite-70","classId":"rom-priest","secondaryClassId":"rom-champion","group":"elite","unlockLevel":70,"keyItemId":546812,"sourceSkillId":498626,"name":"Light Connection","description":"Creates a shield on a target party member that reduces damage taken by (Buff1-623068)% and increases the target's and caster's [SC_SKILLTIPS_MOVE] by (Buff0-623068)%.\n(Cannot be cast on yourself.)","target":"friendly","range":21.700000000000003,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801629,"sourceEffectType":0,"sourceTarget":1,"componentIds":[622994,623068],"components":[{"id":622994,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":268435456,"specialActionFlags":8,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623068,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":5},{"type":206,"value":-5},{"type":207,"value":-5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":498626,"name":"Light Connection","description":"Creates a shield on a target party member that reduces damage taken by (Buff1-623068)% and increases the target's and caster's [SC_SKILLTIPS_MOVE] by (Buff0-623068)%.\n(Cannot be cast on yourself.)","target":"friendly","range":21.700000000000003,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801629,"sourceEffectType":0,"sourceTarget":1,"componentIds":[622994,623068]}}],"icon":"/assets/ui/rom-spells/801629.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-15","classId":"rom-priest","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":541906,"sourceSkillId":491323,"name":"Embrace of the Water Spirit","description":"Beseeches the Water Spirits for their blessing, and raises your and your party members' [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501778,506321],"components":[{"id":501778,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":15,"value":20}],"abilitySkillLevelArg":40,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495292,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506321,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491323,"name":"Embrace of the Water Spirit","description":"Beseeches the Water Spirits for their blessing, and raises your and your party members' [SC_SKILLTIPS_02] by (current [SC_SKILLTIPS_02] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575261,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501778,506321]}}],"icon":"/assets/ui/rom-spells/575261.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-20","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":541936,"sourceSkillId":492396,"name":"Throat Stab","description":"Increase the range of Throat Attack","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575264,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":492396,"name":"Throat Stab","description":"Increase the range of Throat Attack","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575264,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575264.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-25","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":25,"keyItemId":541966,"sourceSkillId":492357,"name":"Enhanced Wave Armor","description":"Your Wave Armor now also increases defense.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575714,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":492357,"name":"Enhanced Wave Armor","description":"Your Wave Armor now also increases defense.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575714,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575714.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-30","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":30,"keyItemId":541996,"sourceSkillId":492398,"name":"Tide Control","description":"Rising Tide now additionaly causes ranged weapon damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575265,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":492398,"name":"Tide Control","description":"Rising Tide now additionaly causes ranged weapon damage.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575265,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575265.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-35","classId":"rom-priest","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":542027,"sourceSkillId":492636,"name":"Curing Shot","description":"Shoots an arrow filled with the power of Light on 5 friendly targets within reach, healing them for (DMG0) HP and additionally restores (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":12000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":577011,"sourceEffectType":0,"sourceTarget":16,"componentIds":[502905,502914],"components":[{"id":502905,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":20,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":20,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502914,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":10,"dot":{"timeSeconds":2,"type":0,"base":10,"skillLevelArg":15},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":492636,"name":"Curing Shot","description":"Shoots an arrow filled with the power of Light on 5 friendly targets within reach, healing them for (DMG0) HP and additionally restores (Buff4-Dot) HP every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":12000,"costs":[{"resource":"mana","amount":120,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":577011,"sourceEffectType":0,"sourceTarget":16,"componentIds":[502905,502914]}}],"icon":"/assets/ui/rom-spells/577011.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-40","classId":"rom-priest","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":542057,"sourceSkillId":490070,"name":"Ice Blade","description":"Turns magic into a knife blade to attack the target, causing (DMG0) [SC_SKILLTIPS_WATER].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":577602,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620410],"components":[{"id":620410,"magicFunc":0,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-25,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-25,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":490070,"name":"Ice Blade","description":"Turns magic into a knife blade to attack the target, causing (DMG0) [SC_SKILLTIPS_WATER].","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.25},"source":{"imageId":577602,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620410]}}],"icon":"/assets/ui/rom-spells/577602.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-45","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":542087,"sourceSkillId":493039,"name":"Saint's Blessing","description":"When you cast a Heal on a friendly target whose HP is lower than 30%, the healing effect will be additionally enhanced by (Buff0-503283) + (Buff0-620406)%.","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577662,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503283,620406],"components":[{"id":503283,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":81920,"abilityModifiers":[{"type":150,"value":30}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"summonCreatureId":0},{"id":620406,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":81920,"abilityModifiers":[{"type":149,"value":1}],"abilitySkillLevelArg":19,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":493039,"name":"Saint's Blessing","description":"When you cast a Heal on a friendly target whose HP is lower than 30%, the healing effect will be additionally enhanced by (Buff0-503283) + (Buff0-620406)%.","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577662,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503283,620406]}}],"icon":"/assets/ui/rom-spells/577662.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-50","classId":"rom-priest","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":542117,"sourceSkillId":493268,"name":"Water Fairy","description":"Summons a water fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102105},"source":{"imageId":577787,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503456],"components":[{"id":503456,"magicFunc":3,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102105,"summon":{"creatureId":102105,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493268,"name":"Water Fairy","description":"Summons a water fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102105},"source":{"imageId":577787,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503456]}}],"icon":"/assets/ui/rom-spells/577787.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-60","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546801,"sourceSkillId":499980,"name":"Area of Light Chain","description":"When [499979] hits, it recovers the HP of all party members within an area of 60.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801288,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499980,"name":"Area of Light Chain","description":"When [499979] hits, it recovers the HP of all party members within an area of 60.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801288,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801288.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-scout-elite-70","classId":"rom-priest","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546802,"sourceSkillId":499978,"name":"Waterstop Curse","description":"When [493278] is in effect, casting [499977] has a chance to reset the cooldown time of [492636].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801336,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499978,"name":"Waterstop Curse","description":"When [493278] is in effect, casting [499977] has a chance to reset the cooldown time of [492636].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801336,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801336.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-15","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":541907,"sourceSkillId":492403,"name":"Snake Curse","description":"Your curse inflicts (Buff0-Dot) points of Dark damage every 2 seconds for (Buff0-Time) seconds on your target.","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575708,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502663],"components":[{"id":502663,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":26},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":492403,"name":"Snake Curse","description":"Your curse inflicts (Buff0-Dot) points of Dark damage every 2 seconds for (Buff0-Time) seconds on your target.","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575708,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502663]}}],"icon":"/assets/ui/rom-spells/575708.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-20","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":541937,"sourceSkillId":492402,"name":"Infectious Wound","description":"Infects target's wounds, causing (DMG0) points of [SC_SKILLTIPS_DARK] and lowers the effectiveness of heals received by the target by (Buff4-0)%. Lasts (Buff4-Time) seconds.\n(This skill lowers the effectiveness of heals received by the target by a maximum of (Max-Buff0-502006)%.)\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575552,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620412,502006,504251],"components":[{"id":620412,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8256,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":25,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502006,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504251,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":492402,"name":"Infectious Wound","description":"Infects target's wounds, causing (DMG0) points of [SC_SKILLTIPS_DARK] and lowers the effectiveness of heals received by the target by (Buff4-0)%. Lasts (Buff4-Time) seconds.\n(This skill lowers the effectiveness of heals received by the target by a maximum of (Max-Buff0-502006)%.)\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":575552,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620412,502006,504251]}}],"icon":"/assets/ui/rom-spells/575552.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-25","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":541967,"sourceSkillId":492400,"name":"Quick Spellcasting","description":"Uses your Nimble Hands for greatly increased spell casting speed.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575551,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":492400,"name":"Quick Spellcasting","description":"Uses your Nimble Hands for greatly increased spell casting speed.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575551,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575551.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-30","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":541997,"sourceSkillId":492360,"name":"Purge","description":"Removes all beneficial effects on target.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575249,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502549],"components":[{"id":502549,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":492360,"name":"Purge","description":"Removes all beneficial effects on target.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":200,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575249,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502549]}}],"icon":"/assets/ui/rom-spells/575249.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-35","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542028,"sourceSkillId":492637,"name":"Lure of the Snake Woman","description":"Lures the target into a poisoned dreamland for (Buff-Time-502906) seconds. Inflicts (Buff0-Dot) Dark damage every 2 seconds for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":45000,"costs":[{"resource":"energy","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577012,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502882,502906,503865],"components":[{"id":502882,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":-10,"dot":{"timeSeconds":2,"type":0,"base":-10,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502906,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":43,"effectFlagWords":[33554547,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":492646,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503865,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":43,"effectFlagWords":[33554547,0],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":492646,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":492637,"name":"Lure of the Snake Woman","description":"Lures the target into a poisoned dreamland for (Buff-Time-502906) seconds. Inflicts (Buff0-Dot) Dark damage every 2 seconds for (Buff0-Time) seconds.\n(For players this effect lasts for (Buff5-Time) seconds.)","target":"hostile","range":15,"castTimeMs":1000,"cooldownMs":45000,"costs":[{"resource":"energy","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577012,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502882,502906,503865]}}],"icon":"/assets/ui/rom-spells/577012.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-40","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":542058,"sourceSkillId":492932,"name":"Shadow Fury","description":"Increases the whole party's [SC_SKILLTIPS_MCRI] by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577603,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503196],"components":[{"id":503196,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":492932,"name":"Shadow Fury","description":"Increases the whole party's [SC_SKILLTIPS_MCRI] by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577603,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503196]}}],"icon":"/assets/ui/rom-spells/577603.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-45","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":542088,"sourceSkillId":493040,"name":"Snake Spirit","description":"Replenishes your mana when the effect of your Snake Curse wears off. (This effect can only be used on one target at one time.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577663,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":493040,"name":"Snake Spirit","description":"Replenishes your mana when the effect of your Snake Curse wears off. (This effect can only be used on one target at one time.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577663,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577663.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-50","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":542118,"sourceSkillId":493269,"name":"Shadow Fairy","description":"Summons a shadow fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102106},"source":{"imageId":577788,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503458],"components":[{"id":503458,"magicFunc":3,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102106,"summon":{"creatureId":102106,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":493269,"name":"Shadow Fairy","description":"Summons a shadow fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102106},"source":{"imageId":577788,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503458]}}],"icon":"/assets/ui/rom-spells/577788.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-60","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546803,"sourceSkillId":499961,"name":"Toxic Feedback","description":"Makes your [499975] have a chance to make the next [499976] an instant spell.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801289,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499961,"name":"Toxic Feedback","description":"Makes your [499975] have a chance to make the next [499976] an instant spell.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801289,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801289.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-rogue-elite-70","classId":"rom-priest","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546804,"sourceSkillId":499974,"name":"Black Source Resonance","description":"When [493279] is in effect, [499973] can cause additional [SC_SKILLTIPS_DARK]. Lasts for (Buff-Time-623027) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801337,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623027],"components":[{"id":623027,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":1,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":1,"type":0,"base":-16,"skillLevelArg":30},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499974,"name":"Black Source Resonance","description":"When [493279] is in effect, [499973] can cause additional [SC_SKILLTIPS_DARK]. Lasts for (Buff-Time-623027) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801337,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623027]}}],"icon":"/assets/ui/rom-spells/801337.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-15","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541908,"sourceSkillId":491586,"name":"Freeze","description":"Frost roots your target for (Buff0-Time) seconds. (For players this effect lasts for (Buff1-Time) seconds. Effect is removed when target receives damage.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575250,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501961,503844],"components":[{"id":501961,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":10,"hateCost":50,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[83,0],"clearFlags":2,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503844,"magicFunc":1,"magicType":1,"effectType":0,"effectTime":5,"hateCost":50,"settingFlags":70,"specialActionFlags":0,"assistType":101,"effectFlagWords":[83,0],"clearFlags":2,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":493813,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491586,"name":"Freeze","description":"Frost roots your target for (Buff0-Time) seconds. (For players this effect lasts for (Buff1-Time) seconds. Effect is removed when target receives damage.)\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575250,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501961,503844]}}],"icon":"/assets/ui/rom-spells/575250.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-20","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":541938,"sourceSkillId":491646,"name":"Remove Curse","description":"Removes curse from target.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575252,"sourceEffectType":0,"sourceTarget":4,"componentIds":[502063],"components":[{"id":502063,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":491646,"name":"Remove Curse","description":"Removes curse from target.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":150,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575252,"sourceEffectType":0,"sourceTarget":4,"componentIds":[502063]}}],"icon":"/assets/ui/rom-spells/575252.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-25","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":541968,"sourceSkillId":491644,"name":"Angel's Blessing","description":"The Angel's Blessing grants your party restoration of additional (Buff0-Dot) MP every 5 seconds. Lasts (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575715,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502026],"components":[{"id":502026,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":600,"hateCost":-10,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":5,"dotType":1,"dotBase":10,"dot":{"timeSeconds":5,"type":1,"base":10,"skillLevelArg":8},"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491644,"name":"Angel's Blessing","description":"The Angel's Blessing grants your party restoration of additional (Buff0-Dot) MP every 5 seconds. Lasts (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575715,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502026]}}],"icon":"/assets/ui/rom-spells/575715.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-30","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":541998,"sourceSkillId":491365,"name":"Angel's Carol","description":"Angels appear among the group and all party members regenerate (DMG-502064) MP every 2 seconds. Lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575236,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501792,502064],"components":[{"id":501792,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":268435527,"specialActionFlags":0,"assistType":24,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":491647,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":60,"fixedValue":0,"summonCreatureId":0},{"id":502064,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":30,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":30,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491365,"name":"Angel's Carol","description":"Angels appear among the group and all party members regenerate (DMG-502064) MP every 2 seconds. Lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575236,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501792,502064]}}],"icon":"/assets/ui/rom-spells/575236.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-35","classId":"rom-priest","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":542029,"sourceSkillId":492638,"name":"Lightning Rod","description":"If Bone Chill is on the target, striking it with Lightning will also cause an Electric Shock, which raises suffered Water and Wind damage for (Buff-Time-502907) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577014,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502907],"components":[{"id":502907,"magicFunc":1,"magicType":3,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":28,"value":-50},{"type":30,"value":-50}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":492638,"name":"Lightning Rod","description":"If Bone Chill is on the target, striking it with Lightning will also cause an Electric Shock, which raises suffered Water and Wind damage for (Buff-Time-502907) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577014,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502907]}}],"icon":"/assets/ui/rom-spells/577014.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-40","classId":"rom-priest","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":542059,"sourceSkillId":492933,"name":"Enlightenment","description":"When you use Heal, you temporarily increase your Wisdom.\n(This skill increases your Wisdom by a maximum of (Max-Buff0-503197)%.)\n([SC_SKILLTIPS_CD_1](Buff-Time-506532)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577604,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503197,506532],"components":[{"id":503197,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":29,"abilityModifiers":[{"type":164,"value":1}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495295,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506532,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":492933,"name":"Enlightenment","description":"When you use Heal, you temporarily increase your Wisdom.\n(This skill increases your Wisdom by a maximum of (Max-Buff0-503197)%.)\n([SC_SKILLTIPS_CD_1](Buff-Time-506532)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577604,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503197,506532]}}],"icon":"/assets/ui/rom-spells/577604.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-45","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":542089,"sourceSkillId":493043,"name":"Icewind Blade","description":"Water and wind energies combine to form a sharpened blade that inflicts (DMG4) Wind damage and (DMG0) Water damage to the target.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":577664,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620413,620414],"components":[{"id":620413,"magicFunc":0,"magicType":1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620414,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-30,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-30,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":493043,"name":"Icewind Blade","description":"Water and wind energies combine to form a sharpened blade that inflicts (DMG4) Wind damage and (DMG0) Water damage to the target.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":577664,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620413,620414]}}],"icon":"/assets/ui/rom-spells/577664.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-50","classId":"rom-priest","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":542119,"sourceSkillId":493270,"name":"Wind Fairy","description":"Summons a wind fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102107},"source":{"imageId":577789,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503460],"components":[{"id":503460,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102107,"summon":{"creatureId":102107,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":493270,"name":"Wind Fairy","description":"Summons a wind fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102107},"source":{"imageId":577789,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503460]}}],"icon":"/assets/ui/rom-spells/577789.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-60","classId":"rom-priest","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546805,"sourceSkillId":499972,"name":"Element Defense","description":"Casting [499971] will earn a blessing that reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by 3%. Can be stacked a maximum of 3 times.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801290,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499972,"name":"Element Defense","description":"Casting [499971] will earn a blessing that reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by 3%. Can be stacked a maximum of 3 times.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801290,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801290.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-mage-elite-70","classId":"rom-priest","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546806,"sourceSkillId":499958,"name":"Spinning Wind","description":"While [499970] is in effect, the caster's [SC_SKILLTIPS_CAST] will increase by (Buff0-623018)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801338,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623018],"components":[{"id":623018,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"clearFlags":32,"abilityModifiers":[{"type":51,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499958,"name":"Spinning Wind","description":"While [499970] is in effect, the caster's [SC_SKILLTIPS_CAST] will increase by (Buff0-623018)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801338,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623018]}}],"icon":"/assets/ui/rom-spells/801338.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-15","classId":"rom-priest","secondaryClassId":"rom-knight","group":"passive","unlockLevel":15,"keyItemId":541909,"sourceSkillId":492355,"name":"Enhanced Grace of Life","description":"Your Grace of Life also increases the maximum MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575707,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490151],"sourceSkillId":492355,"name":"Enhanced Grace of Life","description":"Your Grace of Life also increases the maximum MP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575707,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575707.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-20","classId":"rom-priest","secondaryClassId":"rom-knight","group":"passive","unlockLevel":20,"keyItemId":541939,"sourceSkillId":492361,"name":"Life Link","description":"Your Urgent Heal now also heals you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575255,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490151],"sourceSkillId":492361,"name":"Life Link","description":"Your Urgent Heal now also heals you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575255,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575255.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-25","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":25,"keyItemId":541969,"sourceSkillId":491648,"name":"Last Prayer","description":"Your next spell's casting time is reduced to 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575717,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502030],"components":[{"id":502030,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"clearFlags":1601536,"abilityModifiers":[{"type":51,"value":-1000}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":1,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490151],"sourceSkillId":491648,"name":"Last Prayer","description":"Your next spell's casting time is reduced to 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575717,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502030]}}],"icon":"/assets/ui/rom-spells/575717.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-30","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":30,"keyItemId":541999,"sourceSkillId":491366,"name":"Divine Incarnation","description":"By transforming into a Divine Incarnation the effectiveness of your heals is increased by (Buff0-0)% and the MP cost is reduced by (Buff0-4)%, but [SC_SKILLTIPS_02] also decreases by (Buff0-3)%. Effect lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575237,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501793],"components":[{"id":501793,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":15},{"type":171,"value":-50},{"type":33,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490151],"sourceSkillId":491366,"name":"Divine Incarnation","description":"By transforming into a Divine Incarnation the effectiveness of your heals is increased by (Buff0-0)% and the MP cost is reduced by (Buff0-4)%, but [SC_SKILLTIPS_02] also decreases by (Buff0-3)%. Effect lasts for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575237,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501793]}}],"icon":"/assets/ui/rom-spells/575237.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-35","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":35,"keyItemId":542030,"sourceSkillId":492639,"name":"Calm Heart","description":"Cast on a friendly target making it resist Fear for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577016,"sourceEffectType":0,"sourceTarget":4,"componentIds":[502908],"components":[{"id":502908,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":17,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490151],"sourceSkillId":492639,"name":"Calm Heart","description":"Cast on a friendly target making it resist Fear for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577016,"sourceEffectType":0,"sourceTarget":4,"componentIds":[502908]}}],"icon":"/assets/ui/rom-spells/577016.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-40","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":40,"keyItemId":542060,"sourceSkillId":492934,"name":"Sacrificial Cure","description":"Sacrifice your own life energy to restore a party member's HP by (DMG0).\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":70,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":577605,"sourceEffectType":0,"sourceTarget":1,"componentIds":[503199],"components":[{"id":503199,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":30,"damagePowerSkillLevelArg":4.6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490151],"sourceSkillId":492934,"name":"Sacrificial Cure","description":"Sacrifice your own life energy to restore a party member's HP by (DMG0).\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"health","amount":70,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.3},"source":{"imageId":577605,"sourceEffectType":0,"sourceTarget":1,"componentIds":[503199]}}],"icon":"/assets/ui/rom-spells/577605.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-45","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":45,"keyItemId":542090,"sourceSkillId":493044,"name":"Holy Power","description":"Temporarily increases [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff0-1)% + (Buff0-0) for (Buff0-Time) seconds. This effect disappears if you use Heal three times.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577665,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503287,503445],"components":[{"id":503287,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"clearFlags":16384,"abilityModifiers":[{"type":5,"value":60},{"type":164,"value":1}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493090,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503445,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490151],"sourceSkillId":493044,"name":"Holy Power","description":"Temporarily increases [SC_SKILLTIPS_MND] by (current [SC_SKILLTIPS_MND] + (Buff0-0)) x (Buff0-1)% + (Buff0-0) for (Buff0-Time) seconds. This effect disappears if you use Heal three times.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577665,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503287,503445]}}],"icon":"/assets/ui/rom-spells/577665.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-50","classId":"rom-priest","secondaryClassId":"rom-knight","group":"elite","unlockLevel":50,"keyItemId":542120,"sourceSkillId":493271,"name":"Light Fairy","description":"Summons a light fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102108},"source":{"imageId":577790,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503506],"components":[{"id":503506,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102108,"summon":{"creatureId":102108,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490151],"sourceSkillId":493271,"name":"Light Fairy","description":"Summons a light fairy to assist you.","target":"self","range":5,"castTimeMs":6000,"cooldownMs":0,"costs":[{"resource":"mana","amount":250,"percentage":false}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102108},"source":{"imageId":577790,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503506]}}],"icon":"/assets/ui/rom-spells/577790.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-60","classId":"rom-priest","secondaryClassId":"rom-knight","group":"passive","unlockLevel":60,"keyItemId":546807,"sourceSkillId":499968,"name":"Splendor Ripple","description":"When [499967] is cast, it will recover extra HP for the target.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801291,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490151],"sourceSkillId":499968,"name":"Splendor Ripple","description":"When [499967] is cast, it will recover extra HP for the target.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801291,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801291.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-knight-elite-70","classId":"rom-priest","secondaryClassId":"rom-knight","group":"passive","unlockLevel":70,"keyItemId":546808,"sourceSkillId":499957,"name":"Light Guidance","description":"(While [499966] is in effect, the caster's [SC_SKILLTIPS_HEAL] will increase by (Buff0-623015)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801339,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623015],"components":[{"id":623015,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490151],"sourceSkillId":499957,"name":"Light Guidance","description":"(While [499966] is in effect, the caster's [SC_SKILLTIPS_HEAL] will increase by (Buff0-623015)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801339,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623015]}}],"icon":"/assets/ui/rom-spells/801339.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-15","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":15,"keyItemId":546023,"sourceSkillId":498766,"name":"Psychic Passage","description":"When Psychic Arrows hit, this skill restores (DMG-621518) HP to the target's current target.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800144,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621518],"components":[{"id":621518,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":50,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[497958],"sourceSkillId":498766,"name":"Psychic Passage","description":"When Psychic Arrows hit, this skill restores (DMG-621518) HP to the target's current target.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800144,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621518]}}],"icon":"/assets/ui/rom-spells/800144.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-20","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":20,"keyItemId":546024,"sourceSkillId":498769,"name":"Touch of Revival","description":"Restores (DMG0) HP to all party members in a fan-shaped range of 120.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":800145,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621519],"components":[{"id":621519,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[497958],"sourceSkillId":498769,"name":"Touch of Revival","description":"Restores (DMG0) HP to all party members in a fan-shaped range of 120.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.7},"source":{"imageId":800145,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621519]}}],"icon":"/assets/ui/rom-spells/800145.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-25","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":25,"keyItemId":546025,"sourceSkillId":498770,"name":"Prayer of Tribulation","description":"Continuously heals a friendly target 4 times. Each time restores (DMG0) HP. When target's HP reaches over 40%, the skill increases the target's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by 2% for (Buff-Time-621522) seconds. When the target's HP falls below 40%, this skill can be stacked 2 times at once, up to 8 times.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":577662,"sourceEffectType":0,"sourceTarget":7,"componentIds":[621520,621521,621522],"components":[{"id":621520,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":30,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":30,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621521,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621522,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":2},{"type":170,"value":2}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[497958],"sourceSkillId":498770,"name":"Prayer of Tribulation","description":"Continuously heals a friendly target 4 times. Each time restores (DMG0) HP. When target's HP reaches over 40%, the skill increases the target's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by 2% for (Buff-Time-621522) seconds. When the target's HP falls below 40%, this skill can be stacked 2 times at once, up to 8 times.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.3},"source":{"imageId":577662,"sourceEffectType":0,"sourceTarget":7,"componentIds":[621520,621521,621522]}}],"icon":"/assets/ui/rom-spells/577662.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-30","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":30,"keyItemId":546026,"sourceSkillId":498771,"name":"Soul Cleansing Ceremony","description":"Cleanse can also remove cursed states.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800147,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[497958],"sourceSkillId":498771,"name":"Soul Cleansing Ceremony","description":"Cleanse can also remove cursed states.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800147,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800147.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-35","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":35,"keyItemId":546027,"sourceSkillId":498773,"name":"Spirit Jump","description":"Blessed by the holy spirit, you are able to pull a friendly target close to you.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800148,"sourceEffectType":0,"sourceTarget":1,"componentIds":[621524],"components":[{"id":621524,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":-2147483648,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[497958],"sourceSkillId":498773,"name":"Spirit Jump","description":"Blessed by the holy spirit, you are able to pull a friendly target close to you.","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800148,"sourceEffectType":0,"sourceTarget":1,"componentIds":[621524]}}],"icon":"/assets/ui/rom-spells/800148.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-40","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"passive","unlockLevel":40,"keyItemId":546028,"sourceSkillId":498774,"name":"Spirit Spring","description":"Blessed Spring Water can increase the healing you receive.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800149,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[497958],"sourceSkillId":498774,"name":"Spirit Spring","description":"Blessed Spring Water can increase the healing you receive.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800149,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800149.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-45","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":45,"keyItemId":546029,"sourceSkillId":495296,"name":"Holy Salvation Candle","description":"Once this is used, your next Holy Aura can be cast on friendly targets. However, the effect time is reduced by 2 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800150,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621556,621557],"components":[{"id":621556,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"clearFlags":1072,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621557,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[497958],"sourceSkillId":495296,"name":"Holy Salvation Candle","description":"Once this is used, your next Holy Aura can be cast on friendly targets. However, the effect time is reduced by 2 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800150,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621556,621557]}}],"icon":"/assets/ui/rom-spells/800150.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-50","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":50,"keyItemId":546030,"sourceSkillId":498798,"name":"Spirit Embodiment","description":"Summons the Spirit Embodiment. For the duration of its existence, the embodiment will recover (DMG-621099) HP for the party member with the lowest HP every time a spell is cast. It also reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621149)% for (Buff-Time-621149) seconds.\nThe Spirit Embodiment remains for 30 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.9},"source":{"imageId":800151,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621097,621098,621099,621149],"components":[{"id":621097,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621098,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"clearFlags":48,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621099,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":90,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":90,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":621149,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":-1879048125,"specialActionFlags":0,"assistType":20,"clearFlags":48,"abilityModifiers":[{"type":206,"value":-10},{"type":207,"value":-10},{"type":209,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[497958],"sourceSkillId":498798,"name":"Spirit Embodiment","description":"Summons the Spirit Embodiment. For the duration of its existence, the embodiment will recover (DMG-621099) HP for the party member with the lowest HP every time a spell is cast. It also reduces [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621149)% for (Buff-Time-621149) seconds.\nThe Spirit Embodiment remains for 30 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.9},"source":{"imageId":800151,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621097,621098,621099,621149]}}],"icon":"/assets/ui/rom-spells/800151.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-60","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":60,"keyItemId":546809,"sourceSkillId":498628,"name":"Spatial Jump","description":"Blessed by the holy spirit, you are able to pull friendly targets in a range of 180 close to you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801626,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623175],"components":[{"id":623175,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[497958],"sourceSkillId":498628,"name":"Spatial Jump","description":"Blessed by the holy spirit, you are able to pull friendly targets in a range of 180 close to you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801626,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623175]}}],"icon":"/assets/ui/rom-spells/801626.png","iconResolution":"native-interface-fdb"},{"id":"rom-priest-rom-warlock-elite-70","classId":"rom-priest","secondaryClassId":"rom-warlock","group":"elite","unlockLevel":70,"keyItemId":546810,"sourceSkillId":499829,"name":"Life Surge","description":"Continuous casting for 15 seconds. Increases all attributes of friendly targets in range by (Buff4-0)% and recovers (DMG0) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801627,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623468,623200],"components":[{"id":623468,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":4,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":4,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623200,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":2,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":166,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[497958],"sourceSkillId":499829,"name":"Life Surge","description":"Continuous casting for 15 seconds. Increases all attributes of friendly targets in range by (Buff4-0)% and recovers (DMG0) HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801627,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623468,623200]}}],"icon":"/assets/ui/rom-spells/801627.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-15","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":15,"keyItemId":541910,"sourceSkillId":491609,"name":"Whirlwind Shield Mastery","description":"Increases the main hand weapon damage dealt by Whirlwind Shield.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575555,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":491609,"name":"Whirlwind Shield Mastery","description":"Increases the main hand weapon damage dealt by Whirlwind Shield.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575555,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575555.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-20","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":541940,"sourceSkillId":490065,"name":"Weapon Master","description":"Allows you to equip all swords, axes, and hammers and increases their damage by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575229,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500221],"components":[{"id":500221,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":-1,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":56,"value":4},{"type":92,"value":1},{"type":88,"value":1}],"abilitySkillLevelArg":17,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":490065,"name":"Weapon Master","description":"Allows you to equip all swords, axes, and hammers and increases their damage by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575229,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500221]}}],"icon":"/assets/ui/rom-spells/575229.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-25","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":541970,"sourceSkillId":491639,"name":"Deadly Whirlwind","description":"The rage cost for Whirlwind is reduced by 10 points, cooldown is reduced by 20 seconds. For 10 seconds the target suffers Deadly Wounds and the effectiveness of healings is reduced by 30%.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575549,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":491639,"name":"Deadly Whirlwind","description":"The rage cost for Whirlwind is reduced by 10 points, cooldown is reduced by 20 seconds. For 10 seconds the target suffers Deadly Wounds and the effectiveness of healings is reduced by 30%.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575549,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575549.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-30","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":542001,"sourceSkillId":490064,"name":"Quick Reflexes","description":"Gives you panther-like reflexes. Raises your [SC_SKILLTIPS_PARRY] by (Buff0-0) and your critical hit rate by (Buff0-1) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575209,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500220],"components":[{"id":500220,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":210},{"type":18,"value":150},{"type":20,"value":150}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":490064,"name":"Quick Reflexes","description":"Gives you panther-like reflexes. Raises your [SC_SKILLTIPS_PARRY] by (Buff0-0) and your critical hit rate by (Buff0-1) for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575209,"sourceEffectType":1,"sourceTarget":0,"componentIds":[500220]}}],"icon":"/assets/ui/rom-spells/575209.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-35","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":542031,"sourceSkillId":490088,"name":"Fearless","description":"Increases your courage. During the effect time, you are immune against Fear. Also increases [SC_SKILLTIPS_STR] and [SC_SKILLTIPS_STA] for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577017,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502113],"components":[{"id":502113,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":17,"abilityModifiers":[{"type":161,"value":3},{"type":162,"value":3}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":490088,"name":"Fearless","description":"Increases your courage. During the effect time, you are immune against Fear. Also increases [SC_SKILLTIPS_STR] and [SC_SKILLTIPS_STA] for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"self","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577017,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502113]}}],"icon":"/assets/ui/rom-spells/577017.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-40","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":542061,"sourceSkillId":492935,"name":"Master of Parry","description":"Increases your [SC_SKILLTIPS_PARRY] by (Buff0-0). (Disappears after two successful blocks)","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577606,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503192],"components":[{"id":503192,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":103,"specialActionFlags":0,"assistType":33,"abilityModifiers":[{"type":22,"value":5000}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":493094,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":492935,"name":"Master of Parry","description":"Increases your [SC_SKILLTIPS_PARRY] by (Buff0-0). (Disappears after two successful blocks)","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577606,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503192]}}],"icon":"/assets/ui/rom-spells/577606.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-45","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":542091,"sourceSkillId":490086,"name":"Survival Instinct","description":"When attacked while under [490085] and [490084] states, there is a chance that [502114] will be activated and the cooldown time of [492935] will be reduced by 1 second.\n[502114]: Temporarily increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_AGI] for (Buff-Time-502114) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577666,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502114],"components":[{"id":502114,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":2},{"type":165,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":490086,"name":"Survival Instinct","description":"When attacked while under [490085] and [490084] states, there is a chance that [502114] will be activated and the cooldown time of [492935] will be reduced by 1 second.\n[502114]: Temporarily increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_AGI] for (Buff-Time-502114) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577666,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502114]}}],"icon":"/assets/ui/rom-spells/577666.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-50","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":50,"keyItemId":542121,"sourceSkillId":490018,"name":"Authoritative Deterrence","description":"Forces a target to face and attack you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622319)%. Increases all damage on the target by (Buff4-0)% for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577796,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503557,502112,622319],"components":[{"id":503557,"magicFunc":7,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502112,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":5},{"type":207,"value":5}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622319,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":1}],"abilitySkillLevelArg":14,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":490018,"name":"Authoritative Deterrence","description":"Forces a target to face and attack you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622319)%. Increases all damage on the target by (Buff4-0)% for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577796,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503557,502112,622319]}}],"icon":"/assets/ui/rom-spells/577796.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-60","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":60,"keyItemId":546813,"sourceSkillId":499930,"name":"United Efforts","description":"Rushes to party members and provides a shield for them and you. Reduces [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-0)%. Lasts for (Buff0-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801292,"sourceEffectType":0,"sourceTarget":1,"componentIds":[623154],"components":[{"id":623154,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":30},{"type":142,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499930,"name":"United Efforts","description":"Rushes to party members and provides a shield for them and you. Reduces [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] by (Buff0-0)%. Lasts for (Buff0-Time) seconds.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801292,"sourceEffectType":0,"sourceTarget":1,"componentIds":[623154]}}],"icon":"/assets/ui/rom-spells/801292.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-warrior-elite-70","classId":"rom-knight","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546814,"sourceSkillId":491608,"name":"Divine Punishment","description":"Increases damage dealt by [490151] by (Buff0-500284)%. When [490151] hits the target, it will increase the Light damage on the target by (Buff0-502052)% for (Buff-Time-502052) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801340,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500284,502052],"components":[{"id":500284,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":1},{"type":205,"value":1}],"abilitySkillLevelArg":50,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502052,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":190,"abilityModifiers":[{"type":225,"value":1}],"abilitySkillLevelArg":50,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":491608,"name":"Divine Punishment","description":"Increases damage dealt by [490151] by (Buff0-500284)%. When [490151] hits the target, it will increase the Light damage on the target by (Buff0-502052)% for (Buff-Time-502052) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801340,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500284,502052]}}],"icon":"/assets/ui/rom-spells/801340.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-15","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":541911,"sourceSkillId":491616,"name":"Arrow of Vengeance","description":"Fires an arrow full of aggro that taunts your target. You become the one with the most aggro. Also increases your aggro by (Buff0-622326)%.\n(Requires ranged weapon.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575253,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502061,622326],"components":[{"id":502061,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":200,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"summonCreatureId":0},{"id":622326,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":491616,"name":"Arrow of Vengeance","description":"Fires an arrow full of aggro that taunts your target. You become the one with the most aggro. Also increases your aggro by (Buff0-622326)%.\n(Requires ranged weapon.)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575253,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502061,622326]}}],"icon":"/assets/ui/rom-spells/575253.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-20","classId":"rom-knight","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":541941,"sourceSkillId":491610,"name":"Enhanced Holy Strike","description":"Increases the main weapon damage of your Holy Strike.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575550,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":491610,"name":"Enhanced Holy Strike","description":"Increases the main weapon damage of your Holy Strike.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575550,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575550.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-25","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":541971,"sourceSkillId":491613,"name":"Holy Chains","description":"Roots your target with your holy powers for (Buff0-Time) seconds. (Can only be used on undead and demons)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575548,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502058],"components":[{"id":502058,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":0,"effectFlagWords":[67,0],"clearFlags":2,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":491613,"name":"Holy Chains","description":"Roots your target with your holy powers for (Buff0-Time) seconds. (Can only be used on undead and demons)","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575548,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502058]}}],"icon":"/assets/ui/rom-spells/575548.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-30","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":542002,"sourceSkillId":491354,"name":"Heavenly Arrow","description":"As you pray for the power of the holy Light, an arrow of Light shoots down from the sky and taunts up the enemies within a range of 100. You become the one with the most aggro. Also increases your aggro by (Buff0-622320)%.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575207,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501795,622320],"components":[{"id":501795,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":200,"settingFlags":66,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"summonCreatureId":0},{"id":622320,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":491354,"name":"Heavenly Arrow","description":"As you pray for the power of the holy Light, an arrow of Light shoots down from the sky and taunts up the enemies within a range of 100. You become the one with the most aggro. Also increases your aggro by (Buff0-622320)%.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575207,"sourceEffectType":0,"sourceTarget":6,"componentIds":[501795,622320]}}],"icon":"/assets/ui/rom-spells/575207.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-35","classId":"rom-knight","secondaryClassId":"rom-scout","group":"passive","unlockLevel":35,"keyItemId":542032,"sourceSkillId":490066,"name":"Weaken Weapon Strength","description":"When you use your Heavenly Arrow to taunt a target, the physical damage of the target will be lowered.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577018,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":490066,"name":"Weaken Weapon Strength","description":"When you use your Heavenly Arrow to taunt a target, the physical damage of the target will be lowered.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577018,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577018.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-40","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":542062,"sourceSkillId":492939,"name":"Sacred Resistance","description":"Causes (DMG0) ranged weapon DPS to your target and increases your [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff4-0)) x (Buff8-0)% + (Buff4-0) for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503454)[SC_SKILLTIPS_CD_2])","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577610,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503206,503207,506236,503454],"components":[{"id":503206,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":-1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.6,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503207,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342701795,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":6,"value":20}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493246,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506236,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268959841,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":165,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503454,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":524289,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":492939,"name":"Sacred Resistance","description":"Causes (DMG0) ranged weapon DPS to your target and increases your [SC_SKILLTIPS_AGI] by (current [SC_SKILLTIPS_AGI] + (Buff4-0)) x (Buff8-0)% + (Buff4-0) for (Buff4-Time) seconds.\n([SC_SKILLTIPS_CD_1](Buff-Time-503454)[SC_SKILLTIPS_CD_2])","target":"hostile","range":6,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577610,"sourceEffectType":1,"sourceTarget":6,"componentIds":[503206,503207,506236,503454]}}],"icon":"/assets/ui/rom-spells/577610.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-45","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":45,"keyItemId":542092,"sourceSkillId":493046,"name":"Sacred Protection","description":"Focuses holy energy onto your shield, temporarily increasing your chance to shield block by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577667,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503290],"components":[{"id":503290,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":33,"abilityModifiers":[{"type":172,"value":100}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":493046,"name":"Sacred Protection","description":"Focuses holy energy onto your shield, temporarily increasing your chance to shield block by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":60,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577667,"sourceEffectType":0,"sourceTarget":0,"componentIds":[503290]}}],"icon":"/assets/ui/rom-spells/577667.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-50","classId":"rom-knight","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":542122,"sourceSkillId":493273,"name":"Disregard Danger","description":"Shares (Buff0-0)% damage of one attack on a party member. Also increases [SC_SKILLTIPS_PARRY] by (Buff4-0) for (Buff4-Time) seconds.\n(Cannot be cast on yourself.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577797,"sourceEffectType":1,"sourceTarget":1,"componentIds":[502056,506305],"components":[{"id":502056,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":143,"value":40}],"abilitySkillLevelArg":2,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":491614,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506305,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":20}],"abilitySkillLevelArg":12.4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":493273,"name":"Disregard Danger","description":"Shares (Buff0-0)% damage of one attack on a party member. Also increases [SC_SKILLTIPS_PARRY] by (Buff4-0) for (Buff4-Time) seconds.\n(Cannot be cast on yourself.)\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577797,"sourceEffectType":1,"sourceTarget":1,"componentIds":[502056,506305]}}],"icon":"/assets/ui/rom-spells/577797.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-60","classId":"rom-knight","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546815,"sourceSkillId":499926,"name":"Evil Shackles","description":"[499925] is not limited to any target type, but when target is not an Undead or Demon target, effect time is reduced by half.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801293,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499926,"name":"Evil Shackles","description":"[499925] is not limited to any target type, but when target is not an Undead or Demon target, effect time is reduced by half.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801293,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801293.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-scout-elite-70","classId":"rom-knight","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546816,"sourceSkillId":499923,"name":"Blood Punishment","description":"When [499924] is activated it increases your received healing by (Buff0-623167)%. Also increases damage inflicted by [499923] by (Buff0-623168)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801341,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623167,623168],"components":[{"id":623167,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":101,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilityModifiers":[{"type":144,"value":50}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":499910,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623168,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":100},{"type":205,"value":100}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499923,"name":"Blood Punishment","description":"When [499924] is activated it increases your received healing by (Buff0-623167)%. Also increases damage inflicted by [499923] by (Buff0-623168)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801341,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623167,623168]}}],"icon":"/assets/ui/rom-spells/801341.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-15","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":15,"keyItemId":541912,"sourceSkillId":491621,"name":"God's Sword","description":"Your Holy Strike's critical hit rate is increased by 40%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575232,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":491621,"name":"God's Sword","description":"Your Holy Strike's critical hit rate is increased by 40%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575232,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575232.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-20","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":541942,"sourceSkillId":490019,"name":"Smash","description":"Direct attack on your enemy causing (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-504896) [SC_SKILLTIPS_DMG|Physical Light Damage]. (Can only be used after you inflict a critical hit.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":7,"percentage":true}],"passive":false,"effect":{"kind":"dot","coefficient":0.9,"ticks":5,"intervalMs":2000},"source":{"imageId":575702,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504896],"components":[{"id":504896,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":106,"specialActionFlags":0,"assistType":39,"abilityModifiers":[{"type":138,"value":20}],"abilitySkillLevelArg":5,"dotTime":10,"dotType":0,"dotBase":20,"dot":{"timeSeconds":10,"type":0,"base":20,"skillLevelArg":5},"attackType":0,"damagePower":-90,"fixedValue":-0.2,"attack":{"type":0,"calculationType":9,"damagePower":-90,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":8,"fixedDamageSkillLevelArg":2,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":490019,"name":"Smash","description":"Direct attack on your enemy causing (DMG0) + current [SC_SKILLTIPS_STA] x (FixDMG-504896) [SC_SKILLTIPS_DMG|Physical Light Damage]. (Can only be used after you inflict a critical hit.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"health","amount":7,"percentage":true}],"passive":false,"effect":{"kind":"dot","coefficient":0.9,"ticks":5,"intervalMs":2000},"source":{"imageId":575702,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504896]}}],"icon":"/assets/ui/rom-spells/575702.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-25","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":541972,"sourceSkillId":491618,"name":"Blind Stab Mastery","description":"Extends the Blind effect of your Blind Stab to (Buff-Time-501990) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575721,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501990],"components":[{"id":501990,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":117,"effectFlagWords":[32,0],"abilityModifiers":[{"type":197,"value":-40}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":491618,"name":"Blind Stab Mastery","description":"Extends the Blind effect of your Blind Stab to (Buff-Time-501990) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575721,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501990]}}],"icon":"/assets/ui/rom-spells/575721.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-30","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":542003,"sourceSkillId":491355,"name":"Crazy Blades","description":"For (Buff0-Time) seconds your [SC_SKILLTIPS_CRI] is increased by (Buff0-0).","target":"self","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575208,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501796],"components":[{"id":501796,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":491355,"name":"Crazy Blades","description":"For (Buff0-Time) seconds your [SC_SKILLTIPS_CRI] is increased by (Buff0-0).","target":"self","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575208,"sourceEffectType":1,"sourceTarget":0,"componentIds":[501796]}}],"icon":"/assets/ui/rom-spells/575208.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-35","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":542033,"sourceSkillId":490020,"name":"Dance of Two Blades","description":"The whirling weapons inflict two times (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second to multiple targets inside a range of 50.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577019,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502048],"components":[{"id":502048,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.4,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.4,"damagePowerSkillLevelArg":8,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":3,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":490020,"name":"Dance of Two Blades","description":"The whirling weapons inflict two times (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] per second to multiple targets inside a range of 50.","target":"self","range":5,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":577019,"sourceEffectType":1,"sourceTarget":0,"componentIds":[502048]}}],"icon":"/assets/ui/rom-spells/577019.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-40","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":542063,"sourceSkillId":495402,"name":"Leopard Instinct","description":"Your reaction time will become like that of a leopard for (Buff0-Time) seconds, increasing your dodge rate by (Buff0-0)%. There is also a chance of absorbing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG]. \n(This effect will cease after absorbing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] 3 times.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":577608,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620144,620141],"components":[{"id":620144,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":524481,"specialActionFlags":0,"assistType":31,"abilityModifiers":[{"type":198,"value":50}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497926,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620141,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":483,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":497924,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":1,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":495402,"name":"Leopard Instinct","description":"Your reaction time will become like that of a leopard for (Buff0-Time) seconds, increasing your dodge rate by (Buff0-0)%. There is also a chance of absorbing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG]. \n(This effect will cease after absorbing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] 3 times.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":10000},"source":{"imageId":577608,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620144,620141]}}],"icon":"/assets/ui/rom-spells/577608.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-45","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":542093,"sourceSkillId":493047,"name":"Panther's Blessing","description":"When attacked while under the protection of Shield of Valor or Shield of Discipline, there is a chance that your dodge rate increases temporarily. Lasts (Buff-Time-503282) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577668,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503282],"components":[{"id":503282,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":2}],"abilitySkillLevelArg":8,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":493183,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":493047,"name":"Panther's Blessing","description":"When attacked while under the protection of Shield of Valor or Shield of Discipline, there is a chance that your dodge rate increases temporarily. Lasts (Buff-Time-503282) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577668,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503282]}}],"icon":"/assets/ui/rom-spells/577668.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-50","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":50,"keyItemId":542123,"sourceSkillId":499934,"name":"God's Vengeance","description":"When your [499909] hits the target, there is a 50% chance that the Holy Seal won't be consumed, but it will still cause the damage that the Holy Seal deals.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577798,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":499934,"name":"God's Vengeance","description":"When your [499909] hits the target, there is a 50% chance that the Holy Seal won't be consumed, but it will still cause the damage that the Holy Seal deals.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577798,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577798.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-60","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546817,"sourceSkillId":490028,"name":"Approach","description":"Makes [490029] increase the Light damage on the target by (Buff0-501941)% and reduce the damage received by (Buff0-501942)% for (Buff-Time-501941) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801294,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501941,501942],"components":[{"id":501941,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":225,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0},{"id":501942,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":206,"value":-20},{"type":207,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":490028,"name":"Approach","description":"Makes [490029] increase the Light damage on the target by (Buff0-501941)% and reduce the damage received by (Buff0-501942)% for (Buff-Time-501941) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801294,"sourceEffectType":2,"sourceTarget":0,"componentIds":[501941,501942]}}],"icon":"/assets/ui/rom-spells/801294.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-rogue-elite-70","classId":"rom-knight","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546818,"sourceSkillId":490021,"name":"Revenge Instinct","description":"[490022] doesn't require consumption anymore. Increases the damage dealt by [490022] and gives the target 1 Holy Seal. There is a 50% chance of giving the target another layer of Holy Seal.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801342,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":490021,"name":"Revenge Instinct","description":"[490022] doesn't require consumption anymore. Increases the damage dealt by [490022] and gives the target 1 Holy Seal. There is a 50% chance of giving the target another layer of Holy Seal.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801342,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801342.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-15","classId":"rom-knight","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":541913,"sourceSkillId":491606,"name":"Holy Light Domain","description":"The power of the holy light in you inflicts (DMG-502050) + [SC_SKILLTIPS_STA] x (FixDMG-502050) [SC_SKILLTIPS_LIGHT] every 2 seconds to surrounding targets within range. Also adds a [502051] and lasts for (Buff-Time-502049) seconds.\n[502051]: Reduces damage by (Buff0-502051)%. The effect lasts (Buff-Time-502051) seconds.\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":575553,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502049,502050,502051],"components":[{"id":502049,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":-10,"settingFlags":5,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":497471,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":502050,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":10,"hateCost":20,"settingFlags":0,"specialActionFlags":0,"assistType":38,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-20,"damagePowerSkillLevelArg":25,"fixedValue":-0.2,"fixedType":8,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502051,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":1,"abilityModifiers":[{"type":173,"value":-1},{"type":44,"value":-1}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":491606,"name":"Holy Light Domain","description":"The power of the holy light in you inflicts (DMG-502050) + [SC_SKILLTIPS_STA] x (FixDMG-502050) [SC_SKILLTIPS_LIGHT] every 2 seconds to surrounding targets within range. Also adds a [502051] and lasts for (Buff-Time-502049) seconds.\n[502051]: Reduces damage by (Buff0-502051)%. The effect lasts (Buff-Time-502051) seconds.\n[SC_SKILLTIPS_03]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.2},"source":{"imageId":575553,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502049,502050,502051]}}],"icon":"/assets/ui/rom-spells/575553.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-20","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":20,"keyItemId":541943,"sourceSkillId":491630,"name":"Lightning Shield","description":"Your Whirlwind Shield now deals extra wind damage and slows the target for 5 seconds.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575723,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":491630,"name":"Lightning Shield","description":"Your Whirlwind Shield now deals extra wind damage and slows the target for 5 seconds.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575723,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575723.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-25","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":25,"keyItemId":541973,"sourceSkillId":491625,"name":"Divine Intensification","description":"Doubles the effect time of Intensification and increases the Light damage dealt by you.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577020,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":491625,"name":"Divine Intensification","description":"Doubles the effect time of Intensification and increases the Light damage dealt by you.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577020,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577020.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-30","classId":"rom-knight","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":542004,"sourceSkillId":491350,"name":"Mana Shield","description":"Instantly restores (DMG4) MP and increases maximum MP by (Buff0-0)%. Each point of damage absorbed by the Mana Shield costs 1 MP. This shield lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":30000},"source":{"imageId":575746,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501797,506311],"components":[{"id":501797,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilityModifiers":[{"type":168,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":0,"effect":0,"point":0,"skillLevelArg":0}},{"id":506311,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":-10,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":100,"fixedValue":0,"attack":{"type":1,"calculationType":8,"damagePower":100,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":491350,"name":"Mana Shield","description":"Instantly restores (DMG4) MP and increases maximum MP by (Buff0-0)%. Each point of damage absorbed by the Mana Shield costs 1 MP. This shield lasts (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":30000},"source":{"imageId":575746,"sourceEffectType":0,"sourceTarget":0,"componentIds":[501797,506311]}}],"icon":"/assets/ui/rom-spells/575746.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-35","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":542034,"sourceSkillId":490076,"name":"Confession Judgment","description":"Makes [490077] deal extra [SC_SKILLTIPS_LIGHT] and adds 4 stacks of Holy Seal effect. The cooldown time of [490151] will also be immediately reset.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":803164,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":490076,"name":"Confession Judgment","description":"Makes [490077] deal extra [SC_SKILLTIPS_LIGHT] and adds 4 stacks of Holy Seal effect. The cooldown time of [490151] will also be immediately reset.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":803164,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/803164.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-40","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":542064,"sourceSkillId":490035,"name":"Hall of Order","description":"Increases damage dealt by [491628] and the effect time of [500292] by 6 seconds. The caster's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] will be increased as well.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577609,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500292],"components":[{"id":500292,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":1,"abilityModifiers":[{"type":173,"value":-1},{"type":44,"value":-1}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-9.975,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":490035,"name":"Hall of Order","description":"Increases damage dealt by [491628] and the effect time of [500292] by 6 seconds. The caster's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] will be increased as well.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577609,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500292]}}],"icon":"/assets/ui/rom-spells/577609.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-45","classId":"rom-knight","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":542094,"sourceSkillId":490034,"name":"Light Energy Weapon","description":"The weapon obtains the power of light, giving your normal attack additional (Buff0-0) Light damage.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570957,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502105],"components":[{"id":502105,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":110,"abilityModifiers":[{"type":188,"value":100}],"abilitySkillLevelArg":15,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":490034,"name":"Light Energy Weapon","description":"The weapon obtains the power of light, giving your normal attack additional (Buff0-0) Light damage.","target":"self","range":30,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":40,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":570957,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502105]}}],"icon":"/assets/ui/rom-spells/570957.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-50","classId":"rom-knight","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":542124,"sourceSkillId":490078,"name":"War Prayer","description":"Deals (DMG0) + [SC_SKILLTIPS_STA] x (FixDMG-502102) Light damage on the target and adds one layer of Holy Seal every 3 seconds for (Buff4-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":577799,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502102,502103],"components":[{"id":502102,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":30,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-65,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-65,"damagePowerSkillLevelArg":25,"fixedValue":-0.2,"fixedType":8,"fixedDamageSkillLevelArg":20,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":502103,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":70,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":490079,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":490078,"name":"War Prayer","description":"Deals (DMG0) + [SC_SKILLTIPS_STA] x (FixDMG-502102) Light damage on the target and adds one layer of Holy Seal every 3 seconds for (Buff4-Time) seconds.\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":577799,"sourceEffectType":0,"sourceTarget":6,"componentIds":[502102,502103]}}],"icon":"/assets/ui/rom-spells/577799.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-60","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546819,"sourceSkillId":499917,"name":"Magic Healing","description":"While your [499626] is in effect, an extra 1% of HP is recovered every second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801295,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499917,"name":"Magic Healing","description":"While your [499626] is in effect, an extra 1% of HP is recovered every second.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801295,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801295.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-mage-elite-70","classId":"rom-knight","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546820,"sourceSkillId":490031,"name":"Confessor","description":"Reduces the cooldown time of [490032] by 4 seconds, and the cooldown time of [490033] by 10 seconds. When both skills hit the target, the caster's [SC_SKILLTIPS_MOVE] will be increased by (Buff0-502101)% for (Buff-Time-502101) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801343,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502101],"components":[{"id":502101,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":33}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-2.7,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":490031,"name":"Confessor","description":"Reduces the cooldown time of [490032] by 4 seconds, and the cooldown time of [490033] by 10 seconds. When both skills hit the target, the caster's [SC_SKILLTIPS_MOVE] will be increased by (Buff0-502101)% for (Buff-Time-502101) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801343,"sourceEffectType":2,"sourceTarget":0,"componentIds":[502101]}}],"icon":"/assets/ui/rom-spells/801343.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-15","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":15,"keyItemId":541914,"sourceSkillId":491635,"name":"Holy Light's Fury","description":"Reduces the cooldown time of [490149] by 3 seconds, also increases the damage dealt.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575554,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":491635,"name":"Holy Light's Fury","description":"Reduces the cooldown time of [490149] by 3 seconds, also increases the damage dealt.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":575554,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/575554.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-20","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":20,"keyItemId":541944,"sourceSkillId":490194,"name":"Holy Smite","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] each second. If the target has the Holy Seal effect, it will all be consumed to heal the caster and a nearby party member, restoring an amount of HP between (DMG-500206) and (DMG-500209) maximum HP, according to the amount of the Holy Seal.\n|cff99FF37 Each Holy Seal restores (DMG-500206) maximum HP.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575547,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500108,500206,500209],"components":[{"id":500108,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.5,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.5,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500206,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":2,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":2,"damagePowerSkillLevelArg":3,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":500209,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":8,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":8,"damagePowerSkillLevelArg":3,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":490194,"name":"Holy Smite","description":"Deals (DMG0) main hand weapon [SC_SKILLTIPS_DMG|Physical Light Damage] each second. If the target has the Holy Seal effect, it will all be consumed to heal the caster and a nearby party member, restoring an amount of HP between (DMG-500206) and (DMG-500209) maximum HP, according to the amount of the Holy Seal.\n|cff99FF37 Each Holy Seal restores (DMG-500206) maximum HP.\nIt can be stacked up to 4 times.|r\n[SC_SKILLTIPS_03]","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":575547,"sourceEffectType":1,"sourceTarget":6,"componentIds":[500108,500206,500209]}}],"icon":"/assets/ui/rom-spells/575547.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-25","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":25,"keyItemId":541974,"sourceSkillId":491640,"name":"Holy Protection","description":"Reduces inflicted aggro by (Buff0-0)% and increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-1)% for (Buff0-Time) seconds. If you cast it on yourself, it will increase the inflicted aggro by (Buff1-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575251,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500673,500674],"components":[{"id":500673,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":98,"abilityModifiers":[{"type":138,"value":-2},{"type":135,"value":2},{"type":170,"value":2}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":50,"summonCreatureId":0},{"id":500674,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":900,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":98,"abilityModifiers":[{"type":138,"value":2},{"type":170,"value":2},{"type":135,"value":2}],"abilitySkillLevelArg":23,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":491640,"name":"Holy Protection","description":"Reduces inflicted aggro by (Buff0-0)% and increases [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-1)% for (Buff0-Time) seconds. If you cast it on yourself, it will increase the inflicted aggro by (Buff1-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"friendly","range":15,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575251,"sourceEffectType":0,"sourceTarget":4,"componentIds":[500673,500674]}}],"icon":"/assets/ui/rom-spells/575251.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-30","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":30,"keyItemId":542005,"sourceSkillId":491351,"name":"Free Will","description":"Target is immune against Root and Slow effects for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575210,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501798],"components":[{"id":501798,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":491351,"name":"Free Will","description":"Target is immune against Root and Slow effects for (Buff0-Time) seconds.\n[SC_SKILLTIPS_FEAR]","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":575210,"sourceEffectType":0,"sourceTarget":4,"componentIds":[501798]}}],"icon":"/assets/ui/rom-spells/575210.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-35","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":542035,"sourceSkillId":490080,"name":"Truth Oracle","description":"Reduces the cooldown time of [490081] by 30 seconds. When you use [490081], there is a chance of not consuming Holy Seal, but it will still cause the damage that the Holy Seal deals.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577021,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":490080,"name":"Truth Oracle","description":"Reduces the cooldown time of [490081] by 30 seconds. When you use [490081], there is a chance of not consuming Holy Seal, but it will still cause the damage that the Holy Seal deals.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577021,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577021.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-40","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":40,"keyItemId":542065,"sourceSkillId":490030,"name":"Concentration Practice","description":"Increases [SC_SKILLTIPS_HITP] and [SC_SKILLTIPS_MAG_HITP] by (Buff0-0)%, as well as [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] by (Buff4-0).\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577607,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503201,501944],"components":[{"id":503201,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":197,"value":2},{"type":199,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":501944,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":30,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":20,"value":30},{"type":18,"value":30}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-200,"fixedValue":50,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":490030,"name":"Concentration Practice","description":"Increases [SC_SKILLTIPS_HITP] and [SC_SKILLTIPS_MAG_HITP] by (Buff0-0)%, as well as [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] by (Buff4-0).\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577607,"sourceEffectType":2,"sourceTarget":0,"componentIds":[503201,501944]}}],"icon":"/assets/ui/rom-spells/577607.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-45","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":45,"keyItemId":542095,"sourceSkillId":490036,"name":"Great Inspiration","description":"Let your [490037] increase your maximum HP and enable the party members in a range of 60 to block one attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577670,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":490036,"name":"Great Inspiration","description":"Let your [490037] increase your maximum HP and enable the party members in a range of 60 to block one attack.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":577670,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/577670.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-50","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":50,"keyItemId":542125,"sourceSkillId":491632,"name":"Holy Illumination","description":"Boosts the healing capacity of party members within a radius of 60 by (Buff0-0)%, [SC_SKILLTIPS_DMG] by (Buff0-1)% and [SC_SKILLTIPS_MDMG] by (Buff0-2)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":50,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577800,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502106],"components":[{"id":502106,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":174,"abilityModifiers":[{"type":144,"value":4},{"type":173,"value":2},{"type":192,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":491632,"name":"Holy Illumination","description":"Boosts the healing capacity of party members within a radius of 60 by (Buff0-0)%, [SC_SKILLTIPS_DMG] by (Buff0-1)% and [SC_SKILLTIPS_MDMG] by (Buff0-2)% for (Buff0-Time) seconds.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":50,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":577800,"sourceEffectType":0,"sourceTarget":0,"componentIds":[502106]}}],"icon":"/assets/ui/rom-spells/577800.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-60","classId":"rom-knight","secondaryClassId":"rom-priest","group":"elite","unlockLevel":60,"keyItemId":546821,"sourceSkillId":499913,"name":"Angel Salvation","description":"Uses the holy light to resurrect a player. \n(Can be used in battle.)","target":"friendly","range":15,"castTimeMs":4000,"cooldownMs":180000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":801296,"sourceEffectType":0,"sourceTarget":15,"componentIds":[623182],"components":[{"id":623182,"magicFunc":8,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"raise":{"experiencePercent":0},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499913,"name":"Angel Salvation","description":"Uses the holy light to resurrect a player. \n(Can be used in battle.)","target":"friendly","range":15,"castTimeMs":4000,"cooldownMs":180000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"resurrection","coefficient":0.35},"source":{"imageId":801296,"sourceEffectType":0,"sourceTarget":15,"componentIds":[623182]}}],"icon":"/assets/ui/rom-spells/801296.png","iconResolution":"native-interface-fdb"},{"id":"rom-knight-rom-priest-elite-70","classId":"rom-knight","secondaryClassId":"rom-priest","group":"passive","unlockLevel":70,"keyItemId":546822,"sourceSkillId":499914,"name":"Divine Protection","description":"When [499912] is cast, the party members can receive an extra (Buff0-623183)% damage reduction and a (Buff-Dot-623361) HP recovery every second.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801344,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623183,623361],"components":[{"id":623183,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":2},{"type":143,"value":2}],"abilitySkillLevelArg":24,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-152.95,"fixedValue":0,"summonCreatureId":0},{"id":623361,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":5,"hateCost":-10,"settingFlags":9,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":1,"dotType":0,"dotBase":20,"dot":{"timeSeconds":1,"type":0,"base":20,"skillLevelArg":14},"attackType":0,"damagePower":-152.95,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499914,"name":"Divine Protection","description":"When [499912] is cast, the party members can receive an extra (Buff0-623183)% damage reduction and a (Buff-Dot-623361) HP recovery every second.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801344,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623183,623361]}}],"icon":"/assets/ui/rom-spells/801344.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-15","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":543080,"sourceSkillId":494001,"name":"Double Chop","description":"Inflicts (DMG0) main hand weapon DPS twice.\n(Each skill level adds to aggro)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579061,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504510],"components":[{"id":504510,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.6,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.6,"damagePowerSkillLevelArg":5.5,"fixedValue":-0.1,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":494001,"name":"Double Chop","description":"Inflicts (DMG0) main hand weapon DPS twice.\n(Each skill level adds to aggro)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":3000,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579061,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504510]}}],"icon":"/assets/ui/rom-spells/579061.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-20","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":20,"keyItemId":543090,"sourceSkillId":494002,"name":"Beast Chop","description":"Inflicts (DMG0) main hand weapon DPS and a [620690] for (Buff4-Time) seconds.\n(Each skill level adds to aggro)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579062,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504511,620690],"components":[{"id":504511,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":-0.1,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0},{"id":620690,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":181,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":494002,"name":"Beast Chop","description":"Inflicts (DMG0) main hand weapon DPS and a [620690] for (Buff4-Time) seconds.\n(Each skill level adds to aggro)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579062,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504511,620690]}}],"icon":"/assets/ui/rom-spells/579062.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-25","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":25,"keyItemId":543100,"sourceSkillId":494003,"name":"Ire","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622321)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579063,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504512,622321],"components":[{"id":504512,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":622321,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":494003,"name":"Ire","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff0-622321)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579063,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504512,622321]}}],"icon":"/assets/ui/rom-spells/579063.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-30","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":543110,"sourceSkillId":498220,"name":"Immortal Power","description":"Immortal power flows from the deepest recesses of your being. You can withstand [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] three times over the course of (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":35,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":579847,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620707,620751],"components":[{"id":620707,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":483,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498231,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":1,"skillLevelArg":0}},{"id":620751,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498230,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":498220,"name":"Immortal Power","description":"Immortal power flows from the deepest recesses of your being. You can withstand [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] three times over the course of (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":35,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":15000},"source":{"imageId":579847,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620707,620751]}}],"icon":"/assets/ui/rom-spells/579847.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-35","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":543120,"sourceSkillId":493607,"name":"Pulse Mastery","description":"You can only cast it on targets with a [620690]. Causes (DMG0) main weapon DPS to the target and for (Buff8-Time) seconds aggro created by attacks in increased by (Buff8-0)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578291,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620691,620690,620727,620692],"components":[{"id":620691,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1.1,"fixedValue":-0.2,"attack":{"type":0,"calculationType":0,"damagePower":-1.1,"damagePowerSkillLevelArg":6,"fixedValue":-0.2,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0},{"id":620690,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":7,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":181,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620727,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":181,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620692,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":15,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":493607,"name":"Pulse Mastery","description":"You can only cast it on targets with a [620690]. Causes (DMG0) main weapon DPS to the target and for (Buff8-Time) seconds aggro created by attacks in increased by (Buff8-0)%.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"rage","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578291,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620691,620690,620727,620692]}}],"icon":"/assets/ui/rom-spells/578291.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-40","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":40,"keyItemId":543130,"sourceSkillId":494354,"name":"Resilience of Life","description":"Allows you to equip plate armor, and also reduces the damage received from monsters by 5%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579849,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620693],"components":[{"id":620693,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":207,"value":-5},{"type":99,"value":1}],"abilitySkillLevelArg":10.2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":494354,"name":"Resilience of Life","description":"Allows you to equip plate armor, and also reduces the damage received from monsters by 5%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579849,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620693]}}],"icon":"/assets/ui/rom-spells/579849.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-45","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":543140,"sourceSkillId":494610,"name":"Will Attack","description":"When your [493391] hits the target, it will reduce the damage dealt by target by (Buff0-620694)% for (Buff-Time-620694) seconds.","target":"self","range":7.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581114,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620694],"components":[{"id":620694,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":-10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":494610,"name":"Will Attack","description":"When your [493391] hits the target, it will reduce the damage dealt by target by (Buff0-620694)% for (Buff-Time-620694) seconds.","target":"self","range":7.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581114,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620694]}}],"icon":"/assets/ui/rom-spells/581114.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-50","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":50,"keyItemId":543150,"sourceSkillId":494611,"name":"Coat of Arms","description":"When you cast [494611] on a friendly party member, it increases your and the friendly member's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":35,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581115,"sourceEffectType":0,"sourceTarget":4,"componentIds":[620695,621116],"components":[{"id":620695,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":192,"abilityModifiers":[{"type":170,"value":30},{"type":135,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621116,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":524387,"specialActionFlags":0,"assistType":192,"abilityModifiers":[{"type":170,"value":30},{"type":135,"value":30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":494611,"name":"Coat of Arms","description":"When you cast [494611] on a friendly party member, it increases your and the friendly member's [SC_SKILLTIPS_DEF] and [SC_SKILLTIPS_MDEF] by (Buff0-0)% for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":35,"percentage":false},{"resource":"mana","amount":2,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581115,"sourceEffectType":0,"sourceTarget":4,"componentIds":[620695,621116]}}],"icon":"/assets/ui/rom-spells/581115.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-60","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546823,"sourceSkillId":499902,"name":"Elf Blessing","description":"When [499903] is used, it causes an increase of the caster's [SC_SKILLTIPS_DEF] and recovers HP every second.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801297,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499902,"name":"Elf Blessing","description":"When [499903] is used, it causes an increase of the caster's [SC_SKILLTIPS_DEF] and recovers HP every second.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801297,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801297.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-warrior-elite-70","classId":"rom-warden","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":70,"keyItemId":546824,"sourceSkillId":499900,"name":"Feral Leader","description":"Increases your inflicted damage by (Buff0-623248)% for (Buff-Time-623248) seconds and reduces your damage received by (Buff3-623248)%. Also reduces aggro for your party members.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801345,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623248,623250],"components":[{"id":623248,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":50},{"type":192,"value":50},{"type":207,"value":-30},{"type":206,"value":-30}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623250,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499900,"name":"Feral Leader","description":"Increases your inflicted damage by (Buff0-623248)% for (Buff-Time-623248) seconds and reduces your damage received by (Buff3-623248)%. Also reduces aggro for your party members.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801345,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623248,623250]}}],"icon":"/assets/ui/rom-spells/801345.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-15","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":543081,"sourceSkillId":494004,"name":"Anti-Magic Arrow","description":"Inflicts (DMG0) ranged weapon DPS and has a chance of restoring (DMG4) of your mana. (Requires ranged weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579064,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504513,504565],"components":[{"id":504513,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":3,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504565,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":25,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":25,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":494004,"name":"Anti-Magic Arrow","description":"Inflicts (DMG0) ranged weapon DPS and has a chance of restoring (DMG4) of your mana. (Requires ranged weapon.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"focus","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579064,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504513,504565]}}],"icon":"/assets/ui/rom-spells/579064.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-20","classId":"rom-warden","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":543091,"sourceSkillId":494005,"name":"Beast Tamer","description":"Increase your pet's [SC_SKILLTIPS_CRI] by (Buff0-504514) points and [SC_SKILLTIPS_DOGE] by (Buff0-506421) points.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579068,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504514,506421],"components":[{"id":504514,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":30}],"abilitySkillLevelArg":22,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506421,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":17,"value":35}],"abilitySkillLevelArg":12.5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":494005,"name":"Beast Tamer","description":"Increase your pet's [SC_SKILLTIPS_CRI] by (Buff0-504514) points and [SC_SKILLTIPS_DOGE] by (Buff0-506421) points.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579068,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504514,506421]}}],"icon":"/assets/ui/rom-spells/579068.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-25","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":543101,"sourceSkillId":494006,"name":"Untamable","description":"Inflicts (DMG0) main hand weapon DPS on the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"focus","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579066,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620697],"components":[{"id":620697,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":494006,"name":"Untamable","description":"Inflicts (DMG0) main hand weapon DPS on the target.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"focus","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579066,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620697]}}],"icon":"/assets/ui/rom-spells/579066.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-30","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":543111,"sourceSkillId":494212,"name":"Summon Chiron the Centaur","description":"Summons the centaur Chiron to help you in battle.","target":"self","range":5,"castTimeMs":8000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102803},"source":{"imageId":579850,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504605,500499],"components":[{"id":504605,"magicFunc":3,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":102803,"summon":{"creatureId":102803,"level":0,"rangeLevel":0,"lifetimeSeconds":-1,"skillLevelArg":0,"type":0,"groupId":0,"ownerPowerRate":0}},{"id":500499,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"clearFlags":1056,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":498200,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":494212,"name":"Summon Chiron the Centaur","description":"Summons the centaur Chiron to help you in battle.","target":"self","range":5,"castTimeMs":8000,"cooldownMs":0,"costs":[{"resource":"mana","amount":15,"percentage":true}],"passive":false,"effect":{"kind":"summon","coefficient":0.75,"creatureId":102803},"source":{"imageId":579850,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504605,500499]}}],"icon":"/assets/ui/rom-spells/579850.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-35","classId":"rom-warden","secondaryClassId":"rom-scout","group":"passive","unlockLevel":35,"keyItemId":543121,"sourceSkillId":494356,"name":"Secret Agreement","description":"Permanently increases your melee weapon damage by (Buff0-0)% and all damage caused by Chiron the Centaur by (Buff0-505184)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579852,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504919,505184],"components":[{"id":504919,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":56,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505184,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":173,"value":5}],"abilitySkillLevelArg":6,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":494356,"name":"Secret Agreement","description":"Permanently increases your melee weapon damage by (Buff0-0)% and all damage caused by Chiron the Centaur by (Buff0-505184)%.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579852,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504919,505184]}}],"icon":"/assets/ui/rom-spells/579852.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-40","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":543131,"sourceSkillId":494357,"name":"Morale Boost","description":"Temporarily increases your and your party members' [SC_SKILLTIPS_DMG] by (Buff0-1) + (Buff4-1)% and [SC_SKILLTIPS_MDMG] by (Buff0-0) + (Buff4-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579853,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505150,620696],"components":[{"id":505150,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":203,"abilityModifiers":[{"type":191,"value":20},{"type":25,"value":30}],"abilitySkillLevelArg":7,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":493562,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620696,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435521,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":2},{"type":173,"value":2}],"abilitySkillLevelArg":7,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":494357,"name":"Morale Boost","description":"Temporarily increases your and your party members' [SC_SKILLTIPS_DMG] by (Buff0-1) + (Buff4-1)% and [SC_SKILLTIPS_MDMG] by (Buff0-0) + (Buff4-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"focus","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579853,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505150,620696]}}],"icon":"/assets/ui/rom-spells/579853.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-45","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":45,"keyItemId":543141,"sourceSkillId":494612,"name":"Valiant Shot","description":"Inflicts (DMG0) physical damage and increases the [SC_SKILLTIPS_01] of pet and master by (Buff0-505745)% for (Buff-Time-505745) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-505746)[SC_SKILLTIPS_CD_2])\n[SC_SKILL_COLLECT_01]","target":"hostile","range":25,"castTimeMs":2000,"cooldownMs":6000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":581116,"sourceEffectType":0,"sourceTarget":6,"componentIds":[505695,505760,505745,505746],"components":[{"id":505695,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-45,"fixedValue":0,"attack":{"type":0,"calculationType":9,"damagePower":-45,"damagePowerSkillLevelArg":22,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505760,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505745,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":8}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494959,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505746,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":25,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":494612,"name":"Valiant Shot","description":"Inflicts (DMG0) physical damage and increases the [SC_SKILLTIPS_01] of pet and master by (Buff0-505745)% for (Buff-Time-505745) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-505746)[SC_SKILLTIPS_CD_2])\n[SC_SKILL_COLLECT_01]","target":"hostile","range":25,"castTimeMs":2000,"cooldownMs":6000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.45},"source":{"imageId":581116,"sourceEffectType":0,"sourceTarget":6,"componentIds":[505695,505760,505745,505746]}}],"icon":"/assets/ui/rom-spells/581116.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-50","classId":"rom-warden","secondaryClassId":"rom-scout","group":"elite","unlockLevel":50,"keyItemId":543151,"sourceSkillId":494613,"name":"Sacrifice","description":"Sacrifices your pet to restore you (DMG0) HP and (DMG4) MP. However, your pet will be exhausted and unable to move for (Buff-Time-503639) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.5},"source":{"imageId":581117,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505696,505747,505748,503639],"components":[{"id":505696,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":50,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505747,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":50,"fixedValue":0,"attack":{"type":1,"calculationType":8,"damagePower":50,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505748,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503639,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[4195,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":494613,"name":"Sacrifice","description":"Sacrifices your pet to restore you (DMG0) HP and (DMG4) MP. However, your pet will be exhausted and unable to move for (Buff-Time-503639) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.5},"source":{"imageId":581117,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505696,505747,505748,503639]}}],"icon":"/assets/ui/rom-spells/581117.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-60","classId":"rom-warden","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546825,"sourceSkillId":499898,"name":"Forest Surround","description":"Increases [102803|Chiron the Centaur's] [SC_SKILLTIPS_CAST] by (Buff0-623251)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801298,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623251],"components":[{"id":623251,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499898,"name":"Forest Surround","description":"Increases [102803|Chiron the Centaur's] [SC_SKILLTIPS_CAST] by (Buff0-623251)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801298,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623251]}}],"icon":"/assets/ui/rom-spells/801298.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-scout-elite-70","classId":"rom-warden","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546826,"sourceSkillId":499899,"name":"Wind-piercing Arrow","description":"When the [498206] of [102803] hits, it will increase the caster's [SC_SKILLTIPS_DPS] by (Buff0-623252)%. Can be stacked a maximum of 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801346,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623252],"components":[{"id":623252,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":32867,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-5}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499899,"name":"Wind-piercing Arrow","description":"When the [498206] of [102803] hits, it will increase the caster's [SC_SKILLTIPS_DPS] by (Buff0-623252)%. Can be stacked a maximum of 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801346,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623252]}}],"icon":"/assets/ui/rom-spells/801346.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-15","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":543082,"sourceSkillId":494007,"name":"Achilles' Heel Strike","description":"Attacks the target's Achilles' heel. Inflicts (DMG0) main hand weapon DPS, and it has a chance of increasing both your pet's and your [SC_SKILLTIPS_CRI] by (Buff0-504569) points for (Buff-Time-504569) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504715)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":2000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578396,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623259,623254,504516,504570,504569,504715],"components":[{"id":623259,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":-0.1,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623254,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504516,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504570,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504569,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":1342177507,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":20}],"abilitySkillLevelArg":12.4,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494334,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504715,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":25,"hateCost":0,"settingFlags":268443649,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":494007,"name":"Achilles' Heel Strike","description":"Attacks the target's Achilles' heel. Inflicts (DMG0) main hand weapon DPS, and it has a chance of increasing both your pet's and your [SC_SKILLTIPS_CRI] by (Buff0-504569) points for (Buff-Time-504569) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504715)[SC_SKILLTIPS_CD_2])","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":2000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":578396,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623259,623254,504516,504570,504569,504715]}}],"icon":"/assets/ui/rom-spells/578396.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-20","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":20,"keyItemId":543092,"sourceSkillId":494202,"name":"Thorn Upgrade","description":"Increases damage done by thorny vines and has a chance of restoring your mana when the effect ends.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578413,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":494202,"name":"Thorn Upgrade","description":"Increases damage done by thorny vines and has a chance of restoring your mana when the effect ends.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578413,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/578413.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-25","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":25,"keyItemId":543102,"sourceSkillId":494009,"name":"Gravel Attack","description":"Inflicts (DMG0) main hand weapon DPS on target. It also additionally deals (Buff4-Dot) earth damage every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579074,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623256,623254,504518,504571],"components":[{"id":623256,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5.5,"fixedValue":-0.1,"fixedType":6,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623254,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504518,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5.5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504571,"magicFunc":1,"magicType":0,"effectType":1,"effectTime":6,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-6,"dot":{"timeSeconds":2,"type":0,"base":-6,"skillLevelArg":50},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":494009,"name":"Gravel Attack","description":"Inflicts (DMG0) main hand weapon DPS on target. It also additionally deals (Buff4-Dot) earth damage every 2 seconds for (Buff4-Time) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579074,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623256,623254,504518,504571]}}],"icon":"/assets/ui/rom-spells/579074.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-30","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":30,"keyItemId":543112,"sourceSkillId":494213,"name":"Soul of the Spirit Tree","description":"Increases the damage inflicted by Power of the Wood Spirit. When the target's HP reaches 30%, the critical hit chance of the Wood Spirit increases by 15%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579854,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":494213,"name":"Soul of the Spirit Tree","description":"Increases the damage inflicted by Power of the Wood Spirit. When the target's HP reaches 30%, the critical hit chance of the Wood Spirit increases by 15%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579854,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579854.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-35","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":35,"keyItemId":543122,"sourceSkillId":494358,"name":"Store Power","description":"Slightly increases the damage of your Charged Chop, and also increases its critical hit rate by 10%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579855,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":494358,"name":"Store Power","description":"Slightly increases the damage of your Charged Chop, and also increases its critical hit rate by 10%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579855,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579855.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-40","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":40,"keyItemId":543132,"sourceSkillId":494359,"name":"Critical Feeling","description":"If your Oak Walkers' skill successfully hits its target, there is a chance of your next 2 attacks within (Buff-Time-505185) seconds being critical hits.\n([SC_SKILLTIPS_CD_1]30[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579856,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505185],"components":[{"id":505185,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":494359,"name":"Critical Feeling","description":"If your Oak Walkers' skill successfully hits its target, there is a chance of your next 2 attacks within (Buff-Time-505185) seconds being critical hits.\n([SC_SKILLTIPS_CD_1]30[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579856,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505185]}}],"icon":"/assets/ui/rom-spells/579856.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-45","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":45,"keyItemId":543142,"sourceSkillId":494614,"name":"Walker Spirit","description":"Awakens the spirit of the Oak Walker within you, temporarily increasing your movement speed by (Buff0-0)% and dodge rate by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581118,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505697],"components":[{"id":505697,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":50},{"type":198,"value":50}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":494614,"name":"Walker Spirit","description":"Awakens the spirit of the Oak Walker within you, temporarily increasing your movement speed by (Buff0-0)% and dodge rate by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581118,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505697]}}],"icon":"/assets/ui/rom-spells/581118.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-50","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":543152,"sourceSkillId":494615,"name":"Together","description":"Immediately inflicts (DMG0) main hand weapon DPS to your target and simultaneously increases the damage dealt by you and your pet by (Buff0-505939)% for (Buff-Time-505939) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581119,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505698,505940,505939],"components":[{"id":505698,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-3,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-3,"damagePowerSkillLevelArg":5,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505940,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505939,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":15,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":205,"value":10},{"type":204,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1000,"fixedValue":3,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":494615,"name":"Together","description":"Immediately inflicts (DMG0) main hand weapon DPS to your target and simultaneously increases the damage dealt by you and your pet by (Buff0-505939)% for (Buff-Time-505939) seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"energy","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581119,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505698,505940,505939]}}],"icon":"/assets/ui/rom-spells/581119.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-60","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546827,"sourceSkillId":499896,"name":"Force Fountain","description":"While your [499897] is in effect, it causes an additional increase in [SC_SKILLTIPS_STR].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801299,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499896,"name":"Force Fountain","description":"While your [499897] is in effect, it causes an additional increase in [SC_SKILLTIPS_STR].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801299,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801299.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-rogue-elite-70","classId":"rom-warden","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":70,"keyItemId":546828,"sourceSkillId":499894,"name":"Enemy Sigil","description":"Inflicts [499894] on target and makes your [494581], [494342], [494007] and [494009] cause additional [SC_SKILLTIPS_STR] damage.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801347,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623254],"components":[{"id":623254,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499894,"name":"Enemy Sigil","description":"Inflicts [499894] on target and makes your [494581], [494342], [494007] and [494009] cause additional [SC_SKILLTIPS_STR] damage.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":55,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801347,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623254]}}],"icon":"/assets/ui/rom-spells/801347.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-15","classId":"rom-warden","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":543083,"sourceSkillId":494010,"name":"Wind Chop","description":"Inflicts (DMG0) main hand weapon DPS. Each successful hit has an additional chance of inflicting (DMG4) wind damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579070,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504519,504601],"components":[{"id":504519,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504601,"magicFunc":0,"magicType":3,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-20,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-20,"damagePowerSkillLevelArg":50,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":494010,"name":"Wind Chop","description":"Inflicts (DMG0) main hand weapon DPS. Each successful hit has an additional chance of inflicting (DMG4) wind damage.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579070,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504519,504601]}}],"icon":"/assets/ui/rom-spells/579070.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-20","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":20,"keyItemId":543093,"sourceSkillId":494207,"name":"Tough Oak","description":"Increases your pet's [SC_SKILLTIPS_DEF] by (Buff0-504600)% and reduces [SC_SKILLTIPS_CDTIME] from [493382] and [493385] by 1 second.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578412,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504600],"components":[{"id":504600,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":5}],"abilitySkillLevelArg":20,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":494207,"name":"Tough Oak","description":"Increases your pet's [SC_SKILLTIPS_DEF] by (Buff0-504600)% and reduces [SC_SKILLTIPS_CDTIME] from [493382] and [493385] by 1 second.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578412,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504600]}}],"icon":"/assets/ui/rom-spells/578412.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-25","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":25,"keyItemId":543103,"sourceSkillId":494011,"name":"Oak Blessing","description":"During the effect time of [491668], increases your [SC_SKILLTIPS_01] by (Buff0-620679)% and restores your HP by (Buff-Dot-620679)% every 3 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579065,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620679],"components":[{"id":620679,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":363,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":5}],"abilitySkillLevelArg":0,"dotTime":3,"dotType":5,"dotBase":1,"dot":{"timeSeconds":3,"type":5,"base":1,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":1,"effect":0,"point":2,"skillLevelArg":0}}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":494011,"name":"Oak Blessing","description":"During the effect time of [491668], increases your [SC_SKILLTIPS_01] by (Buff0-620679)% and restores your HP by (Buff-Dot-620679)% every 3 seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579065,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620679]}}],"icon":"/assets/ui/rom-spells/579065.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-30","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":30,"keyItemId":543113,"sourceSkillId":498205,"name":"Nature's Revenge","description":"Enhances the skills of your pet [102325]. Increases the resisted damage of [498201] by (Buff-Shield-620702)% and the effect of [498202] by (Buff0-620703)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579857,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620702,620703],"components":[{"id":620702,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435811,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":15,"skillLevelArg":0}},{"id":620703,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-8},{"type":51,"value":-8}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":498205,"name":"Nature's Revenge","description":"Enhances the skills of your pet [102325]. Increases the resisted damage of [498201] by (Buff-Shield-620702)% and the effect of [498202] by (Buff0-620703)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579857,"sourceEffectType":2,"sourceTarget":0,"componentIds":[620702,620703]}}],"icon":"/assets/ui/rom-spells/579857.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-35","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":543123,"sourceSkillId":498227,"name":"Spiritual Feedback","description":"Enhances the power of your pet \"Oak Walker\". When your skill delivers a critical hit, the attack power of the Oak Walker's Sepal Stab will be greatly enhanced.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579858,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":498227,"name":"Spiritual Feedback","description":"Enhances the power of your pet \"Oak Walker\". When your skill delivers a critical hit, the attack power of the Oak Walker's Sepal Stab will be greatly enhanced.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579858,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579858.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-40","classId":"rom-warden","secondaryClassId":"rom-mage","group":"elite","unlockLevel":40,"keyItemId":543133,"sourceSkillId":498219,"name":"Crystal Protection","description":"Orders your Nature Crystal to protect team members by wrapping them in its shards. Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of multiple friendly targets by (Buff0-505154)% within a radius of 100. The effect lasts for (Buff-Time-505154) seconds.","target":"self","range":40,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":588116,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505154],"components":[{"id":505154,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":143,"value":20},{"type":142,"value":20}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":498219,"name":"Crystal Protection","description":"Orders your Nature Crystal to protect team members by wrapping them in its shards. Reduces the [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] of multiple friendly targets by (Buff0-505154)% within a radius of 100. The effect lasts for (Buff-Time-505154) seconds.","target":"self","range":40,"castTimeMs":0,"cooldownMs":120000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":588116,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505154]}}],"icon":"/assets/ui/rom-spells/588116.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-45","classId":"rom-warden","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":543143,"sourceSkillId":494616,"name":"Narrow Escape","description":"Your pet is under the effect of [505705] and will be reborn immediately after death.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581120,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505897,505705],"components":[{"id":505897,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505705,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":494616,"name":"Narrow Escape","description":"Your pet is under the effect of [505705] and will be reborn immediately after death.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581120,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505897,505705]}}],"icon":"/assets/ui/rom-spells/581120.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-50","classId":"rom-warden","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":543153,"sourceSkillId":498214,"name":"Pet Enhance","description":"Temporarily enhances your pet, increasing its [SC_SKILLTIPS_01] and [SC_SKILLTIPS_DMG] by (Buff0-620713)% for (Buff-Time-620713) seconds.","target":"self","range":25,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581121,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620714,620713],"components":[{"id":620714,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620713,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":30},{"type":173,"value":30}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":498214,"name":"Pet Enhance","description":"Temporarily enhances your pet, increasing its [SC_SKILLTIPS_01] and [SC_SKILLTIPS_DMG] by (Buff0-620713)% for (Buff-Time-620713) seconds.","target":"self","range":25,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":3,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581121,"sourceEffectType":0,"sourceTarget":0,"componentIds":[620714,620713]}}],"icon":"/assets/ui/rom-spells/581121.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-60","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546829,"sourceSkillId":499893,"name":"Resonation of Wind","description":"When your [494010] hits a target and triggers [SC_SKILLTIPS_WIND], this will reduce your [493347] cooldown time by 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801300,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499893,"name":"Resonation of Wind","description":"When your [494010] hits a target and triggers [SC_SKILLTIPS_WIND], this will reduce your [493347] cooldown time by 5 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801300,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801300.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-mage-elite-70","classId":"rom-warden","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546830,"sourceSkillId":499891,"name":"Wild Offensive","description":"Makes your [499892] increase the pet's [SC_SKILLTIPS_DPS] and reduces the cooldown time of [499892].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801348,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499891,"name":"Wild Offensive","description":"Makes your [499892] increase the pet's [SC_SKILLTIPS_DPS] and reduces the cooldown time of [499892].","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801348,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801348.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-15","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":15,"keyItemId":543084,"sourceSkillId":494013,"name":"Dispel Curse","description":"Cleanses a Curse from one friendly target.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579073,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504522],"components":[{"id":504522,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493528],"sourceSkillId":494013,"name":"Dispel Curse","description":"Cleanses a Curse from one friendly target.","target":"friendly","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579073,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504522]}}],"icon":"/assets/ui/rom-spells/579073.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-20","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":20,"keyItemId":543094,"sourceSkillId":493389,"name":"Magic Control","description":"Restricts target's magic energy. Decreases target's [SC_SKILLTIPS_02] and [SC_SKILLTIPS_01] by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578271,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503624],"components":[{"id":503624,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":172,"abilityModifiers":[{"type":171,"value":-2},{"type":173,"value":-2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[493528],"sourceSkillId":493389,"name":"Magic Control","description":"Restricts target's magic energy. Decreases target's [SC_SKILLTIPS_02] and [SC_SKILLTIPS_01] by (Buff0-0)% for (Buff0-Time) seconds.","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":578271,"sourceEffectType":0,"sourceTarget":6,"componentIds":[503624]}}],"icon":"/assets/ui/rom-spells/578271.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-25","classId":"rom-warden","secondaryClassId":"rom-druid","group":"passive","unlockLevel":25,"keyItemId":543104,"sourceSkillId":494208,"name":"Quick Reflexes","description":"Increases [SC_SKILLTIPS_CRI_PASSIVE] of yours and your pet's by (Buff0-0) and [SC_SKILLTIPS_DOGEP] by (Buff4-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578411,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504711,506422],"components":[{"id":504711,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":182,"value":200}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506422,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":198,"value":2}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[493528],"sourceSkillId":494208,"name":"Quick Reflexes","description":"Increases [SC_SKILLTIPS_CRI_PASSIVE] of yours and your pet's by (Buff0-0) and [SC_SKILLTIPS_DOGEP] by (Buff4-0)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578411,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504711,506422]}}],"icon":"/assets/ui/rom-spells/578411.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-30","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":30,"keyItemId":543114,"sourceSkillId":494215,"name":"Earth Spirit Essence","description":"Cloaks your weapon in the power of earth. Normal attacks inflict (Buff0-0) earth damage, and (Buff0-1)% [SC_SKILLTIPS_DMG] is resisted for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579860,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504847],"components":[{"id":504847,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":184,"value":100},{"type":143,"value":2}],"abilitySkillLevelArg":10,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493528],"sourceSkillId":494215,"name":"Earth Spirit Essence","description":"Cloaks your weapon in the power of earth. Normal attacks inflict (Buff0-0) earth damage, and (Buff0-1)% [SC_SKILLTIPS_DMG] is resisted for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579860,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504847]}}],"icon":"/assets/ui/rom-spells/579860.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-35","classId":"rom-warden","secondaryClassId":"rom-druid","group":"passive","unlockLevel":35,"keyItemId":543124,"sourceSkillId":494362,"name":"Natural Spring","description":"When your [493395] hits the target, you can heal party members within a range of 75. The skill can't be triggered again within (Buff-Time-505205) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579861,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505205],"components":[{"id":505205,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493528],"sourceSkillId":494362,"name":"Natural Spring","description":"When your [493395] hits the target, you can heal party members within a range of 75. The skill can't be triggered again within (Buff-Time-505205) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579861,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505205]}}],"icon":"/assets/ui/rom-spells/579861.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-40","classId":"rom-warden","secondaryClassId":"rom-druid","group":"passive","unlockLevel":40,"keyItemId":543134,"sourceSkillId":494363,"name":"Connection","description":"Your Elven Prayer can bestow an additional spell onto you and your pet, increasing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] for (Buff-Time-505155) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579878,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505155],"components":[{"id":505155,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":10},{"type":173,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493528],"sourceSkillId":494363,"name":"Connection","description":"Your Elven Prayer can bestow an additional spell onto you and your pet, increasing [SC_SKILLTIPS_DMG] and [SC_SKILLTIPS_MDMG] for (Buff-Time-505155) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579878,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505155]}}],"icon":"/assets/ui/rom-spells/579878.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-45","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":45,"keyItemId":543144,"sourceSkillId":494618,"name":"Blade of Protection","description":"An attack with the Power to Protect. Inflicts (DMG0) main hand weapon DPS. Upon hitting a target it may increase the [SC_SKILLTIPS_DEF] of party members within a radius of 70 by (Buff0-505752)% for (Buff-Time-505752) seconds.\n(Increases the [SC_SKILLTIPS_DEF] by a maximum of (Max-Buff0-505752)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581122,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505701,505751,623270,505752],"components":[{"id":505701,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.7,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.7,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":5},"summonCreatureId":0},{"id":505751,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":524293,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":494960,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623270,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":524288,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505752,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":135,"value":1}],"abilitySkillLevelArg":18,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493528],"sourceSkillId":494618,"name":"Blade of Protection","description":"An attack with the Power to Protect. Inflicts (DMG0) main hand weapon DPS. Upon hitting a target it may increase the [SC_SKILLTIPS_DEF] of party members within a radius of 70 by (Buff0-505752)% for (Buff-Time-505752) seconds.\n(Increases the [SC_SKILLTIPS_DEF] by a maximum of (Max-Buff0-505752)%.)","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":7000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":581122,"sourceEffectType":1,"sourceTarget":6,"componentIds":[505701,505751,623270,505752]}}],"icon":"/assets/ui/rom-spells/581122.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-50","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":50,"keyItemId":543154,"sourceSkillId":491669,"name":"Thorn Sigil","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff4-0)% for 15 seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801358,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504512,503949],"components":[{"id":504512,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":268435522,"specialActionFlags":0,"assistType":169,"effectFlagWords":[262144,0],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503949,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":67,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493528],"sourceSkillId":491669,"name":"Thorn Sigil","description":"Forces the target to turn towards you, and you become the one with the most aggro. Also increases your aggro by (Buff4-0)% for 15 seconds.","target":"hostile","range":15,"castTimeMs":0,"cooldownMs":25000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801358,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504512,503949]}}],"icon":"/assets/ui/rom-spells/801358.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-60","classId":"rom-warden","secondaryClassId":"rom-druid","group":"passive","unlockLevel":60,"keyItemId":546831,"sourceSkillId":499888,"name":"Briar Control","description":"Your [499889] increases your [SC_SKILLTIPS_HEAL] and [SC_SKILLTIPS_HEAL_PASSIVE]. Every time you use [499886], you earn a shield that is 5% of Maximum HP.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801301,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[493528],"sourceSkillId":499888,"name":"Briar Control","description":"Your [499889] increases your [SC_SKILLTIPS_HEAL] and [SC_SKILLTIPS_HEAL_PASSIVE]. Every time you use [499886], you earn a shield that is 5% of Maximum HP.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801301,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801301.png","iconResolution":"native-interface-fdb"},{"id":"rom-warden-rom-druid-elite-70","classId":"rom-warden","secondaryClassId":"rom-druid","group":"elite","unlockLevel":70,"keyItemId":546832,"sourceSkillId":499885,"name":"Beast Awakening","description":"Increases Maximum HP (Buff0-0)% and lasts for (Buff0-Time) seconds. When [494618] hits, reduces [499885] cooldown time for the target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801349,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623269],"components":[{"id":623269,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493528],"sourceSkillId":499885,"name":"Beast Awakening","description":"Increases Maximum HP (Buff0-0)% and lasts for (Buff0-Time) seconds. When [494618] hits, reduces [499885] cooldown time for the target.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":300,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801349,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623269]}}],"icon":"/assets/ui/rom-spells/801349.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-15","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":15,"keyItemId":543085,"sourceSkillId":494016,"name":"Natural Attack","description":"Gathers the power of nature to launch an attack. Inflicts ((DMG0) main hand weapon DPS + (FixDMG-504525) x Wisdom) damage. When you are hit, you receive 1 point of Nature's Power.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579076,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504525,504575,623080],"components":[{"id":504525,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504575,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623080,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":3},{"type":164,"value":3}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":494016,"name":"Natural Attack","description":"Gathers the power of nature to launch an attack. Inflicts ((DMG0) main hand weapon DPS + (FixDMG-504525) x Wisdom) damage. When you are hit, you receive 1 point of Nature's Power.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":4000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579076,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504525,504575,623080]}}],"icon":"/assets/ui/rom-spells/579076.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-20","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":20,"keyItemId":543095,"sourceSkillId":494017,"name":"Glory Wand","description":"Increases your attack speed by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds. Also, during physical attacks, a protective shield will appear that absorbs (Buff-Shield-504725) damage for (Buff-Time-504725) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504727)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":8000},"source":{"imageId":579077,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504526,504725,504727],"components":[{"id":504526,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":23,"value":-1},{"type":144,"value":1}],"abilitySkillLevelArg":19,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":493605,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504725,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1342177763,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494015,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":2,"effect":0,"point":200,"skillLevelArg":19}},{"id":504727,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":494017,"name":"Glory Wand","description":"Increases your attack speed by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds. Also, during physical attacks, a protective shield will appear that absorbs (Buff-Shield-504725) damage for (Buff-Time-504725) seconds. \n([SC_SKILLTIPS_CD_1](Buff-Time-504727)[SC_SKILLTIPS_CD_2])","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":8000},"source":{"imageId":579077,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504526,504725,504727]}}],"icon":"/assets/ui/rom-spells/579077.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-25","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":25,"keyItemId":543105,"sourceSkillId":494018,"name":"Cross of Thorns Attack","description":"Launches a rapid Double Attack on the target. Inflicts twice (DMG1) main hand weapon DPS plus (FixDMG1) times wisdom damage on the target, and restores 1 point of Nature's Power to you when you hit the target.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance the power and Inflicts (2 x (DMG0) main hand weapon DPS + (FixDMG0) x Wisdom) damage on the target. There is also a chance of restoring 1 point of Nature's Power if you hit the target.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579078,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620461,503827,620460,504527,504576],"components":[{"id":620461,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620460,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504527,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504576,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":494018,"name":"Cross of Thorns Attack","description":"Launches a rapid Double Attack on the target. Inflicts twice (DMG1) main hand weapon DPS plus (FixDMG1) times wisdom damage on the target, and restores 1 point of Nature's Power to you when you hit the target.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance the power and Inflicts (2 x (DMG0) main hand weapon DPS + (FixDMG0) x Wisdom) damage on the target. There is also a chance of restoring 1 point of Nature's Power if you hit the target.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579078,"sourceEffectType":1,"sourceTarget":6,"componentIds":[620461,503827,620460,504527,504576]}}],"icon":"/assets/ui/rom-spells/579078.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-30","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":30,"keyItemId":543115,"sourceSkillId":494216,"name":"Heart Piercing","description":"Concentrates the power of nature in your body to launch a severe attack on your target. Inflicts (DMG1) main hand weapon DPS on target. Each successful hit will produce (DMG4) points of rage.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) main hand weapon DPS on target. Each successful hit will produce (DMG4) points of rage.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579862,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504860,503827,620462,504882,623080],"components":[{"id":504860,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-1,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-1,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620462,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":0,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":6,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504882,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":15,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":15,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":623080,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":3},{"type":164,"value":3}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":494216,"name":"Heart Piercing","description":"Concentrates the power of nature in your body to launch a severe attack on your target. Inflicts (DMG1) main hand weapon DPS on target. Each successful hit will produce (DMG4) points of rage.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) main hand weapon DPS on target. Each successful hit will produce (DMG4) points of rage.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":8000,"costs":[{"resource":"mana","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579862,"sourceEffectType":1,"sourceTarget":6,"componentIds":[504860,503827,620462,504882,623080]}}],"icon":"/assets/ui/rom-spells/579862.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-35","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":543125,"sourceSkillId":494364,"name":"Awakening of the Wild","description":"Increases your and your party members' [SC_SKILLTIPS_01] by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) as well as [SC_SKILLTIPS_DMG] by (Buff0-1), both for (Buff0-Time) seconds.\n(This effect cannot co-exist with similar effects.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579863,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505157,506538],"components":[{"id":505157,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":42,"abilityModifiers":[{"type":12,"value":40},{"type":25,"value":25}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":5,"onBuffTimeoutMagicId":495576,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506538,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":524321,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":1}],"abilitySkillLevelArg":9,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":5,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":494364,"name":"Awakening of the Wild","description":"Increases your and your party members' [SC_SKILLTIPS_01] by (current [SC_SKILLTIPS_01] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) as well as [SC_SKILLTIPS_DMG] by (Buff0-1), both for (Buff0-Time) seconds.\n(This effect cannot co-exist with similar effects.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579863,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505157,506538]}}],"icon":"/assets/ui/rom-spells/579863.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-40","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":543135,"sourceSkillId":494365,"name":"Healing Wind","description":"Restores (DMG1) HP to you and your party members in a range of 100.\nWhen you have Nature's Power, 1 point of it will automatically be consumed to increase abilities as well as heal (DMG0) of your HP as well as the HP of party members within a range of 100.","target":"self","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.65},"source":{"imageId":579864,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505158,503827,620463,620441],"components":[{"id":505158,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":65,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":65,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620463,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":50,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":50,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":494365,"name":"Healing Wind","description":"Restores (DMG1) HP to you and your party members in a range of 100.\nWhen you have Nature's Power, 1 point of it will automatically be consumed to increase abilities as well as heal (DMG0) of your HP as well as the HP of party members within a range of 100.","target":"self","range":5,"castTimeMs":0,"cooldownMs":5000,"costs":[{"resource":"rage","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.65},"source":{"imageId":579864,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505158,503827,620463,620441]}}],"icon":"/assets/ui/rom-spells/579864.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-45","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":45,"keyItemId":543145,"sourceSkillId":494929,"name":"Slash Fury","description":"Increases the attack range of your Slash, and upon hitting a target with Slash, it has a chance of increasing your healing and rage generation.\n([SC_SKILLTIPS_CD_1](Buff-Time-505733)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581124,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505733],"components":[{"id":505733,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":268959809,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":494929,"name":"Slash Fury","description":"Increases the attack range of your Slash, and upon hitting a target with Slash, it has a chance of increasing your healing and rage generation.\n([SC_SKILLTIPS_CD_1](Buff-Time-505733)[SC_SKILLTIPS_CD_2])","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581124,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505733]}}],"icon":"/assets/ui/rom-spells/581124.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-50","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":50,"keyItemId":543155,"sourceSkillId":494930,"name":"Nourish","description":"It causes Nature's Power to be stored in a friendly target for (Buff0-Time) seconds. When the target's HP drops below 40%, it will immediately restore (DMG-505736) HP and restore 2 points of Nature's Power to you. (Healing effect requires a (Buff-Time-505899) seconds cooldown.)","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":581125,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505704,505898,505736,505899],"components":[{"id":505704,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":120,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505898,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":130,"hateCost":0,"settingFlags":524417,"specialActionFlags":0,"assistType":-1,"clearFlags":2,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495062,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505736,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":15,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":15,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505899,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":494930,"name":"Nourish","description":"It causes Nature's Power to be stored in a friendly target for (Buff0-Time) seconds. When the target's HP drops below 40%, it will immediately restore (DMG-505736) HP and restore 2 points of Nature's Power to you. (Healing effect requires a (Buff-Time-505899) seconds cooldown.)","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":581125,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505704,505898,505736,505899]}}],"icon":"/assets/ui/rom-spells/581125.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-60","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546833,"sourceSkillId":499955,"name":"Briar Technique","description":"When your [494016], [499956] or [494216] hits a target, you can earn the Briar Technique effect. This provides an extra increase of [SC_SKILLTIPS_01] by (Buff0-623080)% and of [SC_SKILLTIPS_MND] by (Buff1-623080)%. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801302,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623080],"components":[{"id":623080,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":134,"value":3},{"type":164,"value":3}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499955,"name":"Briar Technique","description":"When your [494016], [499956] or [494216] hits a target, you can earn the Briar Technique effect. This provides an extra increase of [SC_SKILLTIPS_01] by (Buff0-623080)% and of [SC_SKILLTIPS_MND] by (Buff1-623080)%. Can be stacked 5 times.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801302,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623080]}}],"icon":"/assets/ui/rom-spells/801302.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-60-499956","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":60,"keyItemId":546833,"sourceSkillId":499956,"name":"Cross of Thorns Attacks","description":"Launches a rapid Double Attack on the target. Inflicts twice (DMG1) main hand weapon DPS plus (FixDMG1) times wisdom damage on the target, and restores 1 point of Nature's Power to you when you hit the target.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance the power and Inflicts (2 x (DMG0) main hand weapon DPS + (FixDMG0) x Wisdom) damage on the target. There is also a chance of restoring 1 point of Nature's Power if you hit the target.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579078,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623084,503827,623085,504527,620460,504576],"components":[{"id":623084,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623085,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504527,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.9,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.9,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620460,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-0.8,"fixedValue":-0.1,"attack":{"type":0,"calculationType":0,"damagePower":-0.8,"damagePowerSkillLevelArg":5,"fixedValue":-0.1,"fixedType":9,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504576,"magicFunc":7,"magicType":-1,"effectType":1,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[499955],"sourceSkillId":499956,"name":"Cross of Thorns Attacks","description":"Launches a rapid Double Attack on the target. Inflicts twice (DMG1) main hand weapon DPS plus (FixDMG1) times wisdom damage on the target, and restores 1 point of Nature's Power to you when you hit the target.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance the power and Inflicts (2 x (DMG0) main hand weapon DPS + (FixDMG0) x Wisdom) damage on the target. There is also a chance of restoring 1 point of Nature's Power if you hit the target.","target":"hostile","range":9,"castTimeMs":0,"cooldownMs":6000,"costs":[{"resource":"rage","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.15},"source":{"imageId":579078,"sourceEffectType":1,"sourceTarget":6,"componentIds":[623084,503827,623085,504527,620460,504576]}}],"icon":"/assets/ui/rom-spells/579078.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warrior-elite-70","classId":"rom-druid","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546834,"sourceSkillId":499953,"name":"Heart of the Wild","description":"Allows you to equip Leather Armor and Chainmail and increases [SC_SKILLTIPS_POWER] by (Buff0-2)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801350,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623081],"components":[{"id":623081,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":100,"value":1},{"type":101,"value":1},{"type":56,"value":5}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499953,"name":"Heart of the Wild","description":"Allows you to equip Leather Armor and Chainmail and increases [SC_SKILLTIPS_POWER] by (Buff0-2)%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801350,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623081]}}],"icon":"/assets/ui/rom-spells/801350.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-15","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":15,"keyItemId":543086,"sourceSkillId":494019,"name":"Camellia Flower","description":"Causes target to recover (Buff3-Dot) HP per second for (Buff0-Time) seconds. Can be stacked up to 3 times.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579079,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504578,504577,504528],"components":[{"id":504578,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":268443755,"specialActionFlags":0,"assistType":136,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":35,"dot":{"timeSeconds":1,"type":0,"base":35,"skillLevelArg":16},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504577,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":268443755,"specialActionFlags":0,"assistType":136,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":25,"dot":{"timeSeconds":1,"type":0,"base":25,"skillLevelArg":16},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504528,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":268443755,"specialActionFlags":0,"assistType":136,"abilitySkillLevelArg":5,"dotTime":1,"dotType":0,"dotBase":15,"dot":{"timeSeconds":1,"type":0,"base":15,"skillLevelArg":16},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490420],"sourceSkillId":494019,"name":"Camellia Flower","description":"Causes target to recover (Buff3-Dot) HP per second for (Buff0-Time) seconds. Can be stacked up to 3 times.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579079,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504578,504577,504528]}}],"icon":"/assets/ui/rom-spells/579079.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-20","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":20,"keyItemId":543096,"sourceSkillId":494020,"name":"Life Guide","description":"Causes you to recover HP every 2 seconds when you use Recover.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579080,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490420],"sourceSkillId":494020,"name":"Life Guide","description":"Causes you to recover HP every 2 seconds when you use Recover.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579080,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579080.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-25","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":25,"keyItemId":543106,"sourceSkillId":494021,"name":"Healing Arrows","description":"Restores (Buff1-Dot) HP every 2 seconds to 5 friendly targets in range. Lasts for (Buff0-Time) seconds. \nIf you possess Nature's Power, it automatically will consume 1 point of Nature's Power to enhance abilities and restore (Buff0-Dot) HP. \n(Requires ranged weapon.)","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":5000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579081,"sourceEffectType":0,"sourceTarget":16,"componentIds":[504529,503827,620446,620441],"components":[{"id":504529,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620446,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":16,"dot":{"timeSeconds":2,"type":0,"base":16,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490420],"sourceSkillId":494021,"name":"Healing Arrows","description":"Restores (Buff1-Dot) HP every 2 seconds to 5 friendly targets in range. Lasts for (Buff0-Time) seconds. \nIf you possess Nature's Power, it automatically will consume 1 point of Nature's Power to enhance abilities and restore (Buff0-Dot) HP. \n(Requires ranged weapon.)","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":5000,"costs":[{"resource":"focus","amount":20,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579081,"sourceEffectType":0,"sourceTarget":16,"componentIds":[504529,503827,620446,620441]}}],"icon":"/assets/ui/rom-spells/579081.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-30","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":30,"keyItemId":543116,"sourceSkillId":494217,"name":"Group Exorcism","description":"Requires 1 point of Nature's Power. Removes harmful effects from multiple friendly targets within a range of 50.","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579865,"sourceEffectType":0,"sourceTarget":16,"componentIds":[504861,504109],"components":[{"id":504861,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":1,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504109,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490420],"sourceSkillId":494217,"name":"Group Exorcism","description":"Requires 1 point of Nature's Power. Removes harmful effects from multiple friendly targets within a range of 50.","target":"hostile","range":18,"castTimeMs":1000,"cooldownMs":10000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579865,"sourceEffectType":0,"sourceTarget":16,"componentIds":[504861,504109]}}],"icon":"/assets/ui/rom-spells/579865.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-35","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":35,"keyItemId":543126,"sourceSkillId":494366,"name":"Warm Spring","description":"Party members within a range of 100 recover (DMG-505201) MP every 2 seconds for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579866,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505159,505201],"components":[{"id":505159,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":268435527,"specialActionFlags":0,"assistType":24,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":494621,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505201,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":67108865,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":1,"damagePower":30,"fixedValue":0,"attack":{"type":1,"calculationType":4,"damagePower":30,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490420],"sourceSkillId":494366,"name":"Warm Spring","description":"Party members within a range of 100 recover (DMG-505201) MP every 2 seconds for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579866,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505159,505201]}}],"icon":"/assets/ui/rom-spells/579866.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-40","classId":"rom-druid","secondaryClassId":"rom-scout","group":"elite","unlockLevel":40,"keyItemId":543136,"sourceSkillId":494367,"name":"Mother Earth's Blessing","description":"Increases your healing power by (Buff0-505160) for (Buff-Time-505160) seconds. This effect ends after you have used healings spells for 3 times. (This spell will reward you 2 points of Nature's Power.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579867,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505160,505181,505199],"components":[{"id":505160,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":129,"specialActionFlags":0,"assistType":-1,"clearFlags":16384,"abilityModifiers":[{"type":150,"value":25}],"abilitySkillLevelArg":20,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":494351,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505181,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505199,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490420],"sourceSkillId":494367,"name":"Mother Earth's Blessing","description":"Increases your healing power by (Buff0-505160) for (Buff-Time-505160) seconds. This effect ends after you have used healings spells for 3 times. (This spell will reward you 2 points of Nature's Power.)","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":40,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579867,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505160,505181,505199]}}],"icon":"/assets/ui/rom-spells/579867.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-45","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":45,"keyItemId":543146,"sourceSkillId":494931,"name":"Brilliance of Nature","description":"Increases your maximum amount of Nature's Power up to 15.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581126,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490420],"sourceSkillId":494931,"name":"Brilliance of Nature","description":"Increases your maximum amount of Nature's Power up to 15.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581126,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581126.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-50","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":50,"keyItemId":543156,"sourceSkillId":494932,"name":"Spring Flower Eulogy","description":"When casting [499935], if the target's HP is lower than 50%, the effect will automatically be stacked 3 times. There is also a chance of restoring 1 Nature's Power to you. When [499935] ends, it will restore additional HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581127,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490420],"sourceSkillId":494932,"name":"Spring Flower Eulogy","description":"When casting [499935], if the target's HP is lower than 50%, the effect will automatically be stacked 3 times. There is also a chance of restoring 1 Nature's Power to you. When [499935] ends, it will restore additional HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581127,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581127.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-60","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":60,"keyItemId":546835,"sourceSkillId":499952,"name":"Spring Carol","description":"Reduces your [499951] cooldown time to 30 seconds and gives your [499954] an area effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801303,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490420],"sourceSkillId":499952,"name":"Spring Carol","description":"Reduces your [499951] cooldown time to 30 seconds and gives your [499954] an area effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801303,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801303.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-scout-elite-70","classId":"rom-druid","secondaryClassId":"rom-scout","group":"passive","unlockLevel":70,"keyItemId":546836,"sourceSkillId":499949,"name":"Spirit Shackles","description":"Allows your [499950] to be used on players, but it won't make them become friendly. In fact it makes the target player unable to move, attack or cast spells. [SC_SKILLTIPS_HEAL_PASSIVE] is also reduced by (Buff0-623093)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801351,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623093],"components":[{"id":623093,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[65619,0],"abilityModifiers":[{"type":144,"value":-100}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490420],"sourceSkillId":499949,"name":"Spirit Shackles","description":"Allows your [499950] to be used on players, but it won't make them become friendly. In fact it makes the target player unable to move, attack or cast spells. [SC_SKILLTIPS_HEAL_PASSIVE] is also reduced by (Buff0-623093)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801351,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623093]}}],"icon":"/assets/ui/rom-spells/801351.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-15","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":543087,"sourceSkillId":494022,"name":"Poisonous Widow Embrace","description":"Summons the sinister plant, Poisonous Widow, to seize and attack your target. Inflicts (DMG1) [SC_SKILLTIPS_DARK] and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_DARK] on your targets. Also, 1 point of Nature's Power will be restored.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":579082,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620438,503827,620215,504717],"components":[{"id":620438,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-65,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-65,"damagePowerSkillLevelArg":32,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620215,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-50,"damagePowerSkillLevelArg":32,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504717,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":494022,"name":"Poisonous Widow Embrace","description":"Summons the sinister plant, Poisonous Widow, to seize and attack your target. Inflicts (DMG1) [SC_SKILLTIPS_DARK] and restores 1 point of Nature's Power.\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_DARK] on your targets. Also, 1 point of Nature's Power will be restored.","target":"hostile","range":20,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.65},"source":{"imageId":579082,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620438,503827,620215,504717]}}],"icon":"/assets/ui/rom-spells/579082.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-20","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":20,"keyItemId":543097,"sourceSkillId":494023,"name":"Speed Catalysis","description":"Temporarily raises the physical attack and casting speed of party members within a range of 150 by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579083,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504532],"components":[{"id":504532,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":9,"abilityModifiers":[{"type":23,"value":-20},{"type":51,"value":-20}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":494023,"name":"Speed Catalysis","description":"Temporarily raises the physical attack and casting speed of party members within a range of 150 by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"energy","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579083,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504532]}}],"icon":"/assets/ui/rom-spells/579083.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-25","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":25,"keyItemId":543107,"sourceSkillId":494024,"name":"Corrosive Poison","description":"Corrodes your target, inflicting (Buff0-Dot) points of dark damage every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579084,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504533],"components":[{"id":504533,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":26},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":494024,"name":"Corrosive Poison","description":"Corrodes your target, inflicting (Buff0-Dot) points of dark damage every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579084,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504533]}}],"icon":"/assets/ui/rom-spells/579084.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-30","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":30,"keyItemId":543117,"sourceSkillId":494321,"name":"Necrotic Wound","description":"Reduces healing received by target by (Buff2-0)% for (Buff0-Time) seconds.\n(If the target is a player, the amount he is healed is decreased by (Buff3-0)% for (Buff1-Time) seconds.)\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and reduce healing received by target by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579868,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504862,503827,504252,620448,620447,623094],"components":[{"id":504862,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":48,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504252,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":48,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620448,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620447,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":23,"abilityModifiers":[{"type":144,"value":-2}],"abilitySkillLevelArg":38,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623094,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":494321,"name":"Necrotic Wound","description":"Reduces healing received by target by (Buff2-0)% for (Buff0-Time) seconds.\n(If the target is a player, the amount he is healed is decreased by (Buff3-0)% for (Buff1-Time) seconds.)\nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and reduce healing received by target by (Buff0-0)%.\n[SC_SKILLTIPS_LEVEL50]","target":"hostile","range":18,"castTimeMs":0,"cooldownMs":10000,"costs":[{"resource":"energy","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579868,"sourceEffectType":0,"sourceTarget":6,"componentIds":[504862,503827,504252,620448,620447,623094]}}],"icon":"/assets/ui/rom-spells/579868.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-35","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":35,"keyItemId":543127,"sourceSkillId":494368,"name":"Shadow Contract","description":"Increases your maximum MP by (Buff0-0) and your [SC_SKILLTIPS_DARK] by (Buff4-1)%, but reduces healing power by (Buff4-0)% for (Buff0-Time) seconds.\n(Your [SC_SKILLTIPS_DARK] can be increased up to a maximum of (Max-Buff1-506309)% and healing power can be decreased up to (Max-Buff0-506309)%.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579869,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505161,506309],"components":[{"id":505161,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":227,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":70}],"abilitySkillLevelArg":18,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495286,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506309,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":524385,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":149,"value":-5},{"type":50,"value":5}],"abilitySkillLevelArg":16,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":494368,"name":"Shadow Contract","description":"Increases your maximum MP by (Buff0-0) and your [SC_SKILLTIPS_DARK] by (Buff4-1)%, but reduces healing power by (Buff4-0)% for (Buff0-Time) seconds.\n(Your [SC_SKILLTIPS_DARK] can be increased up to a maximum of (Max-Buff1-506309)% and healing power can be decreased up to (Max-Buff0-506309)%.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579869,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505161,506309]}}],"icon":"/assets/ui/rom-spells/579869.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-40","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":543137,"sourceSkillId":494369,"name":"Magic Turmoil","description":"Increases your magical critical hit rate by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579870,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505162],"components":[{"id":505162,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":177,"abilityModifiers":[{"type":20,"value":25}],"abilitySkillLevelArg":15.3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":494369,"name":"Magic Turmoil","description":"Increases your magical critical hit rate by (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":90000,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579870,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505162]}}],"icon":"/assets/ui/rom-spells/579870.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-45","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":45,"keyItemId":543147,"sourceSkillId":494933,"name":"Curtain of Darkness","description":"Covers you in the power of darkness, permanently reducing magical damage received by (Buff0-0)% and making it so your [494969] and [494941] no longer require Nature's Power to recover their original abilities.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581128,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505707],"components":[{"id":505707,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":142,"value":2}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":494933,"name":"Curtain of Darkness","description":"Covers you in the power of darkness, permanently reducing magical damage received by (Buff0-0)% and making it so your [494969] and [494941] no longer require Nature's Power to recover their original abilities.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581128,"sourceEffectType":2,"sourceTarget":0,"componentIds":[505707]}}],"icon":"/assets/ui/rom-spells/581128.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-50","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":543157,"sourceSkillId":494934,"name":"Dark Moon","description":"Increases the [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] of a friendly target by (Buff0-0) for (Buff0-Time) seconds. Also, when their attacks go critical, you may gain the Power of the Dark Moon status which increases your magic power by (Buff0-505912)% and healing power by (Buff1-505912)% for (Buff-Time-505912) seconds.\n(This skill cannot be used on yourself.)","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581129,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505911,504871,505912],"components":[{"id":505911,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":18,"value":145},{"type":20,"value":145}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":490068,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":504871,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":268959873,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505912,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":140,"abilityModifiers":[{"type":171,"value":5},{"type":149,"value":5}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":495103,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":494934,"name":"Dark Moon","description":"Increases the [SC_SKILLTIPS_CRI] and [SC_SKILLTIPS_MCRI] of a friendly target by (Buff0-0) for (Buff0-Time) seconds. Also, when their attacks go critical, you may gain the Power of the Dark Moon status which increases your magic power by (Buff0-505912)% and healing power by (Buff1-505912)% for (Buff-Time-505912) seconds.\n(This skill cannot be used on yourself.)","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581129,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505911,504871,505912]}}],"icon":"/assets/ui/rom-spells/581129.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-60","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546837,"sourceSkillId":499946,"name":"Wasteland","description":"Enables [499948] to inflict extra [SC_SKILLTIPS_DARK]. While the falling rocks are in effect, the target's critical hit rate resistance is reduced.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801304,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499946,"name":"Wasteland","description":"Enables [499948] to inflict extra [SC_SKILLTIPS_DARK]. While the falling rocks are in effect, the target's critical hit rate resistance is reduced.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801304,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801304.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-rogue-elite-70","classId":"rom-druid","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546838,"sourceSkillId":499944,"name":"Knee Ulcer","description":"Casts a [494321] and roots the target for (Buff-Time-623094) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801352,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623094],"components":[{"id":623094,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":45,"effectFlagWords":[64,0],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499944,"name":"Knee Ulcer","description":"Casts a [494321] and roots the target for (Buff-Time-623094) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801352,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623094]}}],"icon":"/assets/ui/rom-spells/801352.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-15","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":15,"keyItemId":543088,"sourceSkillId":494025,"name":"Earth Chain","description":"Inflicts (DMG1) [SC_SKILLTIPS_EARTH] to 3 targets within a radius of 60. Each hit does only 70% the damage of the preceding hit. \nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_EARTH] on targets. Each hit does only 70% the damage of the preceding hit.","target":"hostile","range":18,"castTimeMs":2000,"cooldownMs":4000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":579085,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620437,503827,620216,504886],"components":[{"id":620437,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-60,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-60,"damagePowerSkillLevelArg":24,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620216,"magicFunc":0,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-40,"fixedValue":-0.3,"attack":{"type":0,"calculationType":1,"damagePower":-40,"damagePowerSkillLevelArg":24,"fixedValue":-0.3,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":504886,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":494025,"name":"Earth Chain","description":"Inflicts (DMG1) [SC_SKILLTIPS_EARTH] to 3 targets within a radius of 60. Each hit does only 70% the damage of the preceding hit. \nIf you possess Nature's Power, it will automatically consume 1 point of Nature's Power to enhance abilities and inflict (DMG0) [SC_SKILLTIPS_EARTH] on targets. Each hit does only 70% the damage of the preceding hit.","target":"hostile","range":18,"castTimeMs":2000,"cooldownMs":4000,"costs":[{"resource":"mana","amount":35,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":0.6},"source":{"imageId":579085,"sourceEffectType":0,"sourceTarget":6,"componentIds":[620437,503827,620216,504886]}}],"icon":"/assets/ui/rom-spells/579085.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-20","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":543098,"sourceSkillId":494026,"name":"Spring of Blessings","description":"Causes party members within a range of 120 to recover (Buff0-Dot) HP every 2 seconds, for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579086,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504535],"components":[{"id":504535,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":12,"hateCost":0,"settingFlags":8299,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":15,"dot":{"timeSeconds":2,"type":0,"base":15,"skillLevelArg":22},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":494026,"name":"Spring of Blessings","description":"Causes party members within a range of 120 to recover (Buff0-Dot) HP every 2 seconds, for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":12000,"costs":[{"resource":"mana","amount":50,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579086,"sourceEffectType":0,"sourceTarget":0,"componentIds":[504535]}}],"icon":"/assets/ui/rom-spells/579086.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-25","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":25,"keyItemId":543108,"sourceSkillId":494027,"name":"Shield of Light","description":"Baths 3 friendly targets within a range of 60 in a shield of light that can absorb (Buff0-Shield)% HP damage for (Buff0-Time) seconds. (Effect cannot be used in conjunction with Wave Armor)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":579087,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620449],"components":[{"id":620449,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":60,"hateCost":-10,"settingFlags":355,"specialActionFlags":0,"assistType":50,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0,"magicShield":{"rawBaseWord":0,"type":3,"effect":0,"point":5,"skillLevelArg":2}}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":494027,"name":"Shield of Light","description":"Baths 3 friendly targets within a range of 60 in a shield of light that can absorb (Buff0-Shield)% HP damage for (Buff0-Time) seconds. (Effect cannot be used in conjunction with Wave Armor)","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":60000,"costs":[{"resource":"mana","amount":70,"percentage":false}],"passive":false,"effect":{"kind":"absorb","coefficient":0,"durationMs":60000},"source":{"imageId":579087,"sourceEffectType":0,"sourceTarget":16,"componentIds":[620449]}}],"icon":"/assets/ui/rom-spells/579087.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-30","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":30,"keyItemId":543118,"sourceSkillId":494322,"name":"Inspiration","description":"When your Fireball hits there is a chance that you will be Inspired, reducing the casting time of your next spell to less than 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579871,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":494322,"name":"Inspiration","description":"When your Fireball hits there is a chance that you will be Inspired, reducing the casting time of your next spell to less than 1 second.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579871,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579871.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-35","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":35,"keyItemId":543128,"sourceSkillId":494370,"name":"Spiritual Gush","description":"Reduces the mana requirement for your spells by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579872,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505163],"components":[{"id":505163,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":33,"value":10}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":494370,"name":"Spiritual Gush","description":"Reduces the mana requirement for your spells by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":90000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579872,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505163]}}],"icon":"/assets/ui/rom-spells/579872.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-40","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":40,"keyItemId":543138,"sourceSkillId":494371,"name":"Quick Help","description":"When the effect of Rock Protection ends you will additionally recover MP and HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579873,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":494371,"name":"Quick Help","description":"When the effect of Rock Protection ends you will additionally recover MP and HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579873,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579873.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-45","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":45,"keyItemId":543148,"sourceSkillId":494935,"name":"Holy Fury","description":"Increases the amount of damage caused by Mother Nature's Wrath when you do not have any of Nature's Power and lengthens effect time by 6 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581130,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":494935,"name":"Holy Fury","description":"Increases the amount of damage caused by Mother Nature's Wrath when you do not have any of Nature's Power and lengthens effect time by 6 seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":581130,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/581130.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-50","classId":"rom-druid","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":543158,"sourceSkillId":494936,"name":"Summer Banquet","description":"Temporarily increases the [SC_SKILLTIPS_PARRY] of a friendly target by (Buff0-0) and increases their [SC_SKILLTIPS_HP] by (Buff4-0)% for (Buff0-Time) seconds. When they parry, you may gain the Power of Summer status, which increases your [SC_SKILLTIPS_02] by (Buff0-505910)% and healing power by (Buff1-505910)% for (Buff-Time-505910) seconds.\n(You cannot use this skill on yourself.)","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581131,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505909,506402,505910],"components":[{"id":505909,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":22,"value":145}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":495067,"onBuffTimeoutMagicId":495408,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":506402,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":300,"hateCost":0,"settingFlags":268959745,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505910,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":268435555,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":171,"value":5},{"type":149,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":494936,"name":"Summer Banquet","description":"Temporarily increases the [SC_SKILLTIPS_PARRY] of a friendly target by (Buff0-0) and increases their [SC_SKILLTIPS_HP] by (Buff4-0)% for (Buff0-Time) seconds. When they parry, you may gain the Power of Summer status, which increases your [SC_SKILLTIPS_02] by (Buff0-505910)% and healing power by (Buff1-505910)% for (Buff-Time-505910) seconds.\n(You cannot use this skill on yourself.)","target":"friendly","range":25,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":30,"percentage":false},{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581131,"sourceEffectType":0,"sourceTarget":4,"componentIds":[505909,506402,505910]}}],"icon":"/assets/ui/rom-spells/581131.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-60","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546839,"sourceSkillId":499931,"name":"Sounds of Season","description":"Power of Summer that is triggered by [499933] is transferred from a personal effect to a party effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801305,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499931,"name":"Sounds of Season","description":"Power of Summer that is triggered by [499933] is transferred from a personal effect to a party effect.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801305,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801305.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-mage-elite-70","classId":"rom-druid","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546840,"sourceSkillId":499941,"name":"Inspiration Display","description":"[499942] can also trigger an Inspiration effect. In a [494370] state, the triggered Inspiration has a chance that it will be doubled.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801353,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499941,"name":"Inspiration Display","description":"[499942] can also trigger an Inspiration effect. In a [494370] state, the triggered Inspiration has a chance that it will be doubled.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801353,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801353.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-15","classId":"rom-druid","secondaryClassId":"rom-warden","group":"passive","unlockLevel":15,"keyItemId":543089,"sourceSkillId":494028,"name":"Enhanced Briar Shield","description":"Allows your Briar Shield to be used on other friendly targets to protect both you and them. However, friendly targets won't receive any increase in [SC_SKILLTIPS_DEF]. \nMana is restored when Briar Shield reflects damage.\n(Can only be placed on one player at a time. The restoration effect can only be triggered once every (Buff-Time-504870) seconds.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579088,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504870],"components":[{"id":504870,"magicFunc":1,"magicType":0,"effectType":0,"effectTime":8,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[493395],"sourceSkillId":494028,"name":"Enhanced Briar Shield","description":"Allows your Briar Shield to be used on other friendly targets to protect both you and them. However, friendly targets won't receive any increase in [SC_SKILLTIPS_DEF]. \nMana is restored when Briar Shield reflects damage.\n(Can only be placed on one player at a time. The restoration effect can only be triggered once every (Buff-Time-504870) seconds.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579088,"sourceEffectType":2,"sourceTarget":0,"componentIds":[504870]}}],"icon":"/assets/ui/rom-spells/579088.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-20","classId":"rom-druid","secondaryClassId":"rom-warden","group":"passive","unlockLevel":20,"keyItemId":543099,"sourceSkillId":494029,"name":"Avalanche","description":"Causes your Rockslide to cause additional Earth damage. Also has a chance of restoring 1 point of Nature's power to you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579089,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[493395],"sourceSkillId":494029,"name":"Avalanche","description":"Causes your Rockslide to cause additional Earth damage. Also has a chance of restoring 1 point of Nature's power to you.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":579089,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/579089.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-25","classId":"rom-druid","secondaryClassId":"rom-warden","group":"passive","unlockLevel":25,"keyItemId":543109,"sourceSkillId":494200,"name":"Extended Recovery","description":"Prolongs the effect of your Recover spell by 6 seconds, and has a chance of restoring 1 point of Nature's Power to you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578410,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[493395],"sourceSkillId":494200,"name":"Extended Recovery","description":"Prolongs the effect of your Recover spell by 6 seconds, and has a chance of restoring 1 point of Nature's Power to you.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":578410,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/578410.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-30","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":30,"keyItemId":543119,"sourceSkillId":494323,"name":"Healing Ripple","description":"Restores (DMG1) HP to up to 3 friendly targets in a range of 60. Each time healing power is halved.\nIf you possess Nature's Power, it will cosume 1 point of Nature's Power to enhance the power and restores (DMG0) HP to the friendly targets. Each time healing power is halved.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.6},"source":{"imageId":579874,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504864,503827,620436,620441],"components":[{"id":504864,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":60,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":60,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":503827,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32835,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620436,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":45,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":45,"damagePowerSkillLevelArg":30,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620441,"magicFunc":7,"magicType":0,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[493395],"sourceSkillId":494323,"name":"Healing Ripple","description":"Restores (DMG1) HP to up to 3 friendly targets in a range of 60. Each time healing power is halved.\nIf you possess Nature's Power, it will cosume 1 point of Nature's Power to enhance the power and restores (DMG0) HP to the friendly targets. Each time healing power is halved.","target":"friendly","range":25,"castTimeMs":2000,"cooldownMs":0,"costs":[{"resource":"mana","amount":30,"percentage":false}],"passive":false,"effect":{"kind":"heal","coefficient":0.6},"source":{"imageId":579874,"sourceEffectType":0,"sourceTarget":4,"componentIds":[504864,503827,620436,620441]}}],"icon":"/assets/ui/rom-spells/579874.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-35","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":35,"keyItemId":543129,"sourceSkillId":494372,"name":"Mysterious Grace","description":"Increases your and your party members' [SC_SKILLTIPS_MDMG] by (current [SC_SKILLTIPS_MDMG] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579875,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505165,620451],"components":[{"id":505165,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":268435683,"specialActionFlags":0,"assistType":182,"abilityModifiers":[{"type":191,"value":15}],"abilitySkillLevelArg":10,"triggers":{"onTimeMagicId":0,"onTimeSeconds":0,"onHitMagicId":0,"onBuffTimeoutMagicId":496897,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":620451,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":268959841,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":192,"value":1}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[493395],"sourceSkillId":494372,"name":"Mysterious Grace","description":"Increases your and your party members' [SC_SKILLTIPS_MDMG] by (current [SC_SKILLTIPS_MDMG] + (Buff0-0)) x (Buff4-0)% + (Buff0-0) for (Buff0-Time) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579875,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505165,620451]}}],"icon":"/assets/ui/rom-spells/579875.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-40","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":40,"keyItemId":543139,"sourceSkillId":494373,"name":"Essence Extraction","description":"Converts 10% MP into 4 points of Nature's Power.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579876,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505166],"components":[{"id":505166,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[493395],"sourceSkillId":494373,"name":"Essence Extraction","description":"Converts 10% MP into 4 points of Nature's Power.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":120000,"costs":[{"resource":"mana","amount":10,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":579876,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505166]}}],"icon":"/assets/ui/rom-spells/579876.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-45","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":45,"keyItemId":543149,"sourceSkillId":494937,"name":"Grace of the Forest","description":"Increases your mana by (Buff0-0) and healing by (Buff0-1)% for (Buff0-Time) seconds. Also, when you have Nature's Power it will additionally increase your maximum mana by (Buff0-505711)% and healing by (Buff1-505711)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581132,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505901,505711],"components":[{"id":505901,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":1800,"hateCost":0,"settingFlags":201326695,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":9,"value":500},{"type":149,"value":3}],"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":495063,"onTimeSeconds":3,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505711,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":4,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":168,"value":10},{"type":149,"value":3}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[493395],"sourceSkillId":494937,"name":"Grace of the Forest","description":"Increases your mana by (Buff0-0) and healing by (Buff0-1)% for (Buff0-Time) seconds. Also, when you have Nature's Power it will additionally increase your maximum mana by (Buff0-505711)% and healing by (Buff1-505711)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"mana","amount":5,"percentage":true}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":581132,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505901,505711]}}],"icon":"/assets/ui/rom-spells/581132.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-50","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":50,"keyItemId":543159,"sourceSkillId":494938,"name":"Spirit of Life","description":"Summons a [494938] brimming with the energy of the earth. It heals (DMG-505712) + (DMG-620452) HP to all friendly targets within a range of 70 every 4 seconds.\nThe [494938] lasts for (Buff-Time-505938) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":50,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":1},"source":{"imageId":581133,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505946,505712,620452,505938],"components":[{"id":505946,"magicFunc":6,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":505712,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":100,"fixedValue":0,"attack":{"type":0,"calculationType":4,"damagePower":100,"damagePowerSkillLevelArg":15,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":620452,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":1,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":1,"damagePowerSkillLevelArg":9,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":505938,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":40,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[493395],"sourceSkillId":494938,"name":"Spirit of Life","description":"Summons a [494938] brimming with the energy of the earth. It heals (DMG-505712) + (DMG-620452) HP to all friendly targets within a range of 70 every 4 seconds.\nThe [494938] lasts for (Buff-Time-505938) seconds.","target":"self","range":5,"castTimeMs":0,"cooldownMs":180000,"costs":[{"resource":"mana","amount":50,"percentage":false},{"resource":"mana","amount":8,"percentage":true}],"passive":false,"effect":{"kind":"heal","coefficient":1},"source":{"imageId":581133,"sourceEffectType":0,"sourceTarget":0,"componentIds":[505946,505712,620452,505938]}}],"icon":"/assets/ui/rom-spells/581133.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-60","classId":"rom-druid","secondaryClassId":"rom-warden","group":"passive","unlockLevel":60,"keyItemId":546841,"sourceSkillId":499938,"name":"Briar Life","description":"Gives [494062] an additional increase in [SC_SKILLTIPS_HEAL_PASSIVE]. When [494028] is triggered and MP are recovered, it causes an extra (DMG-623125) healing effect with a range of 50.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801306,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623125],"components":[{"id":623125,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":32,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[493395],"sourceSkillId":499938,"name":"Briar Life","description":"Gives [494062] an additional increase in [SC_SKILLTIPS_HEAL_PASSIVE]. When [494028] is triggered and MP are recovered, it causes an extra (DMG-623125) healing effect with a range of 50.\n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801306,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623125]}}],"icon":"/assets/ui/rom-spells/801306.png","iconResolution":"native-interface-fdb"},{"id":"rom-druid-rom-warden-elite-70","classId":"rom-druid","secondaryClassId":"rom-warden","group":"elite","unlockLevel":70,"keyItemId":546842,"sourceSkillId":499936,"name":"Gift Pulse","description":"Consumes all Power of Nature and heals nearby party members. Every point of power of nature that is consumed heals (DMG-623140) HP. The maximum amount of healing is 100%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801354,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623149,623140],"components":[{"id":623149,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":268435456,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623140,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":268435457,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":10,"fixedValue":0,"attack":{"type":0,"calculationType":8,"damagePower":10,"damagePowerSkillLevelArg":100,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[493395],"sourceSkillId":499936,"name":"Gift Pulse","description":"Consumes all Power of Nature and heals nearby party members. Every point of power of nature that is consumed heals (DMG-623140) HP. The maximum amount of healing is 100%.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.15},"source":{"imageId":801354,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623149,623140]}}],"icon":"/assets/ui/rom-spells/801354.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-15","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":15,"keyItemId":545880,"sourceSkillId":498631,"name":"Psychic Slash","description":"Combines psychic powers with a slash move to cause greater magical damage in a farther range. Also, Bleed never requires special weapon activation.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800006,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[490053],"sourceSkillId":498631,"name":"Psychic Slash","description":"Combines psychic powers with a slash move to cause greater magical damage in a farther range. Also, Bleed never requires special weapon activation.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800006,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800006.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-20","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":20,"keyItemId":545881,"sourceSkillId":498636,"name":"Mind-Body Unification","description":"Increases damage caused by Psychic Arrows and earns rage for each hit.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800007,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":20,"prerequisites":[490053],"sourceSkillId":498636,"name":"Mind-Body Unification","description":"Increases damage caused by Psychic Arrows and earns rage for each hit.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800007,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800007.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-25","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":25,"keyItemId":545882,"sourceSkillId":498638,"name":"Vigorous Maneuver","description":"Berserk inflicts an extra increase in magical attack power and casting speed. Defensive Formation inflicts an increase in movement speed and casting speed.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800008,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":25,"prerequisites":[490053],"sourceSkillId":498638,"name":"Vigorous Maneuver","description":"Berserk inflicts an extra increase in magical attack power and casting speed. Defensive Formation inflicts an increase in movement speed and casting speed.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800008,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800008.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-30","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":30,"keyItemId":545883,"sourceSkillId":498634,"name":"Breathing Control","description":"Using Enraged can recover extra focus. When casting Psychic Arrow, Warp Charge or Weakening Weave Curse, there is a chance to reset the cooldown time of Enraged.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800009,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[490053],"sourceSkillId":498634,"name":"Breathing Control","description":"Using Enraged can recover extra focus. When casting Psychic Arrow, Warp Charge or Weakening Weave Curse, there is a chance to reset the cooldown time of Enraged.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800009,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800009.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-35","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":35,"keyItemId":545884,"sourceSkillId":498642,"name":"Mind Transference","description":"Converts all rage to psi. Each 35 points of rage can be exchanged for 1 psi.\n[SC_SKILLTIPS_9_PLUS2]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800010,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621320],"components":[{"id":621320,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"clearFlags":9,"abilityModifiers":[{"type":134,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":20,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490053],"sourceSkillId":498642,"name":"Mind Transference","description":"Converts all rage to psi. Each 35 points of rage can be exchanged for 1 psi.\n[SC_SKILLTIPS_9_PLUS2]","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800010,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621320]}}],"icon":"/assets/ui/rom-spells/800010.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-40","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":40,"keyItemId":545885,"sourceSkillId":498645,"name":"Heart Fence","description":"[SC_SKILLTIPS_P2]\nReduces friendly target's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621321)% for (Buff-Time-621321) seconds and consumes all rage. Effect can be extended by 1 second for every 20 points rage that is consumed.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800011,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621323,621321],"components":[{"id":621323,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":30,"hateCost":0,"settingFlags":3,"specialActionFlags":0,"assistType":-1,"clearFlags":9,"abilityModifiers":[{"type":134,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":3,"damagePower":20,"fixedValue":0,"summonCreatureId":0},{"id":621321,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":2,"hateCost":-10,"settingFlags":99,"specialActionFlags":0,"assistType":179,"abilityModifiers":[{"type":206,"value":-50},{"type":207,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490053],"sourceSkillId":498645,"name":"Heart Fence","description":"[SC_SKILLTIPS_P2]\nReduces friendly target's [SC_SKILLTIPS_HURT_PASSIVE] and [SC_SKILLTIPS_MHURT_PASSIVE] by (Buff0-621321)% for (Buff-Time-621321) seconds and consumes all rage. Effect can be extended by 1 second for every 20 points rage that is consumed.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800011,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621323,621321]}}],"icon":"/assets/ui/rom-spells/800011.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-45","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"elite","unlockLevel":45,"keyItemId":545886,"sourceSkillId":498646,"name":"Consistent Heart Strike","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on target. If target is in a [501577] state, then the state's effective time will be reset and full rage will be restored. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800012,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621325,501577],"components":[{"id":621325,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-120,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-120,"damagePowerSkillLevelArg":50,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":10,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":501577,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":226,"value":3}],"abilitySkillLevelArg":2,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490053],"sourceSkillId":498646,"name":"Consistent Heart Strike","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on target. If target is in a [501577] state, then the state's effective time will be reset and full rage will be restored. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800012,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621325,501577]}}],"icon":"/assets/ui/rom-spells/800012.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-50","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":50,"keyItemId":545887,"sourceSkillId":498647,"name":"Heart Death","description":"Extends time for Bleed effect caused by Slash. Also further reduces dark attribute resistance and increases damage inflicted by Soul Pain.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800013,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[490053],"sourceSkillId":498647,"name":"Heart Death","description":"Extends time for Bleed effect caused by Slash. Also further reduces dark attribute resistance and increases damage inflicted by Soul Pain.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800013,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800013.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-60","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":60,"keyItemId":546843,"sourceSkillId":499870,"name":"Deep Breathing Control","description":"Your [498634] recovers more focus and an extra 10% HP.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801630,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490053],"sourceSkillId":499870,"name":"Deep Breathing Control","description":"Your [498634] recovers more focus and an extra 10% HP.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801630,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801630.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-warrior-elite-70","classId":"rom-warlock","secondaryClassId":"rom-warrior","group":"passive","unlockLevel":70,"keyItemId":546844,"sourceSkillId":499868,"name":"Enhanced Mind Transference","description":"The rage consumption of [499869] drops from 35 to 20 and yields 1 extra psi.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801631,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490053],"sourceSkillId":499868,"name":"Enhanced Mind Transference","description":"The rage consumption of [499869] drops from 35 to 20 and yields 1 extra psi.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801631,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801631.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-15","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":15,"keyItemId":545912,"sourceSkillId":498650,"name":"Saces' Fury","description":"When the skill lands a critical hit during your next 5 attacks, it will increase [SC_SKILLTIPS_MCRI_POWER] by (Buff0-621331)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800063,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621439,621331],"components":[{"id":621439,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621331,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32903,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":21,"value":50}],"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":851623,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[498521],"sourceSkillId":498650,"name":"Saces' Fury","description":"When the skill lands a critical hit during your next 5 attacks, it will increase [SC_SKILLTIPS_MCRI_POWER] by (Buff0-621331)%.","target":"self","range":5,"castTimeMs":0,"cooldownMs":30000,"costs":[{"resource":"rage","amount":10,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800063,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621439,621331]}}],"icon":"/assets/ui/rom-spells/800063.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-20","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":20,"keyItemId":545913,"sourceSkillId":498665,"name":"Mind Rune","description":"Increases maximum HP by (Buff0-0)% and [SC_SKILLTIPS_INT] by (Buff0-1). Increases (Buff0-Dot) rage every 2 seconds for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800064,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621395],"components":[{"id":621395,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":900,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":10},{"type":4,"value":80}],"abilitySkillLevelArg":8,"dotTime":2,"dotType":2,"dotBase":10,"dot":{"timeSeconds":2,"type":2,"base":10,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[498521],"sourceSkillId":498665,"name":"Mind Rune","description":"Increases maximum HP by (Buff0-0)% and [SC_SKILLTIPS_INT] by (Buff0-1). Increases (Buff0-Dot) rage every 2 seconds for (Buff0-Time) seconds. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800064,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621395]}}],"icon":"/assets/ui/rom-spells/800064.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-25","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"passive","unlockLevel":25,"keyItemId":545914,"sourceSkillId":498667,"name":"Electric Transference","description":"Extends the [498522] state by 10 seconds and also increases [SC_SKILLTIPS_DARK] on the target by (Buff0-621396)%.\n\nAnd your [498522] will also give this effect:\n[SC_SKILLTIPS_9_1S]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800065,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621396],"components":[{"id":621396,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524354,"specialActionFlags":0,"assistType":-1,"clearFlags":66560,"abilityModifiers":[{"type":226,"value":10}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[498521],"sourceSkillId":498667,"name":"Electric Transference","description":"Extends the [498522] state by 10 seconds and also increases [SC_SKILLTIPS_DARK] on the target by (Buff0-621396)%.\n\nAnd your [498522] will also give this effect:\n[SC_SKILLTIPS_9_1S]","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800065,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621396]}}],"icon":"/assets/ui/rom-spells/800065.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-30","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"passive","unlockLevel":30,"keyItemId":545915,"sourceSkillId":498669,"name":"Runecraft - Ingenuity","description":"Defense Net cooldown time is reduced by 30 seconds. Caster will also earn Defense Net when skill is used on friendly targets.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800066,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[498521],"sourceSkillId":498669,"name":"Runecraft - Ingenuity","description":"Defense Net cooldown time is reduced by 30 seconds. Caster will also earn Defense Net when skill is used on friendly targets.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800066,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800066.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-35","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":35,"keyItemId":545916,"sourceSkillId":498673,"name":"Rune Energy Devotion","description":"Reduces inflicted aggro by (Buff0-1)% and increases dark attribute magic power by (Buff0-0)% for (Buff0-Time) seconds. Also immediately restores (DMG4) rage. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800067,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621403,621681],"components":[{"id":621403,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":50,"value":7},{"type":138,"value":-8}],"abilitySkillLevelArg":8,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621681,"magicFunc":0,"magicType":-1,"effectType":1,"effectTime":30,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"clearFlags":9,"abilityModifiers":[{"type":134,"value":40}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":2,"damagePower":35,"fixedValue":0,"attack":{"type":2,"calculationType":4,"damagePower":35,"damagePowerSkillLevelArg":0,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[498521],"sourceSkillId":498673,"name":"Rune Energy Devotion","description":"Reduces inflicted aggro by (Buff0-1)% and increases dark attribute magic power by (Buff0-0)% for (Buff0-Time) seconds. Also immediately restores (DMG4) rage. \n[SC_SKILLTIPS_LEVEL50]","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":60000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800067,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621403,621681]}}],"icon":"/assets/ui/rom-spells/800067.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-40","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":40,"keyItemId":545917,"sourceSkillId":498676,"name":"Imagination Release","description":"[SC_SKILLTIPS_P2]\nConverts the target's [621190] effect to 35 focus.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800068,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621405,621190],"components":[{"id":621405,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-50,"fixedValue":0,"summonCreatureId":0},{"id":621190,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"effectFlagWords":[0,1024],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[498521],"sourceSkillId":498676,"name":"Imagination Release","description":"[SC_SKILLTIPS_P2]\nConverts the target's [621190] effect to 35 focus.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800068,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621405,621190]}}],"icon":"/assets/ui/rom-spells/800068.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-45","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":45,"keyItemId":545918,"sourceSkillId":498677,"name":"Saces' Impulse","description":"[SC_SKILLTIPS_P1]\nRecovers (Buff0-Dot)% HP every second and increases [SC_SKILLTIPS_INT] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800069,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621407],"components":[{"id":621407,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":163,"value":9}],"abilitySkillLevelArg":8,"dotTime":1,"dotType":5,"dotBase":4,"dot":{"timeSeconds":1,"type":5,"base":4,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[498521],"sourceSkillId":498677,"name":"Saces' Impulse","description":"[SC_SKILLTIPS_P1]\nRecovers (Buff0-Dot)% HP every second and increases [SC_SKILLTIPS_INT] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800069,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621407]}}],"icon":"/assets/ui/rom-spells/800069.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-50","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"passive","unlockLevel":50,"keyItemId":545919,"sourceSkillId":498681,"name":"Psychic Extension","description":"Your [498522] and [498526] can be cast over long distances and cause [SC_SKILLTIPS_DARK]. Reduces [498522] cooldown time by 2 seconds, and [498526] cooldown time by 3 seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800070,"sourceEffectType":2,"sourceTarget":6,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[498521],"sourceSkillId":498681,"name":"Psychic Extension","description":"Your [498522] and [498526] can be cast over long distances and cause [SC_SKILLTIPS_DARK]. Reduces [498522] cooldown time by 2 seconds, and [498526] cooldown time by 3 seconds.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800070,"sourceEffectType":2,"sourceTarget":6,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800070.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-60","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"elite","unlockLevel":60,"keyItemId":546851,"sourceSkillId":499854,"name":"Rage Sublimation","description":"Consumes 100 rage and yields 6 psi points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"rage","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801638,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623472],"components":[{"id":623472,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[498521],"sourceSkillId":499854,"name":"Rage Sublimation","description":"Consumes 100 rage and yields 6 psi points.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"rage","amount":100,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801638,"sourceEffectType":0,"sourceTarget":0,"componentIds":[623472]}}],"icon":"/assets/ui/rom-spells/801638.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-champion-elite-70","classId":"rom-warlock","secondaryClassId":"rom-champion","group":"passive","unlockLevel":70,"keyItemId":546852,"sourceSkillId":499852,"name":"Psychic Tap","description":"When a target has been hit by [497957], there is a chance that your [SC_SKILLTIPS_MDMG] will be increased and a shield will be invoked that absorbs damage up to 10% of your HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801639,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[498521],"sourceSkillId":499852,"name":"Psychic Tap","description":"When a target has been hit by [497957], there is a chance that your [SC_SKILLTIPS_MDMG] will be increased and a shield will be invoked that absorbs damage up to 10% of your HP.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801639,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801639.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-15","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":15,"keyItemId":545888,"sourceSkillId":498670,"name":"Soul Poisoned Fang","description":"Reduces all of target's resistance by (Buff0-0) points and inflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] on target every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800014,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621399],"components":[{"id":621399,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":22,"hateCost":0,"settingFlags":74,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":26,"value":-16}],"abilitySkillLevelArg":100,"dotTime":2,"dotType":0,"dotBase":-16,"dot":{"timeSeconds":2,"type":0,"base":-16,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490306],"sourceSkillId":498670,"name":"Soul Poisoned Fang","description":"Reduces all of target's resistance by (Buff0-0) points and inflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] on target every 2 seconds for (Buff0-Time) seconds.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":0,"costs":[{"resource":"energy","amount":25,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800014,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621399]}}],"icon":"/assets/ui/rom-spells/800014.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-20","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":20,"keyItemId":545889,"sourceSkillId":498672,"name":"Soul Hit","description":"Shadowstab doesn't require a dagger and inflicts magical damage. \nThe effect time of [500654] will be extended by 12 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800015,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500654],"components":[{"id":500654,"magicFunc":1,"magicType":-1,"effectType":1,"effectTime":10,"hateCost":0,"settingFlags":8266,"specialActionFlags":0,"assistType":35,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-5,"dot":{"timeSeconds":2,"type":0,"base":-5,"skillLevelArg":45},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490306],"sourceSkillId":498672,"name":"Soul Hit","description":"Shadowstab doesn't require a dagger and inflicts magical damage. \nThe effect time of [500654] will be extended by 12 seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800015,"sourceEffectType":2,"sourceTarget":0,"componentIds":[500654]}}],"icon":"/assets/ui/rom-spells/800015.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-25","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":25,"keyItemId":545890,"sourceSkillId":498675,"name":"Ready and Waiting","description":"Increases [SC_SKILLTIPS_INT] when you enter a Willpower Blade or Willpower Construct state for (Buff-Time-621404) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800016,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621404],"components":[{"id":621404,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":18,"hateCost":0,"settingFlags":524355,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":163,"value":2}],"abilitySkillLevelArg":9,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490306],"sourceSkillId":498675,"name":"Ready and Waiting","description":"Increases [SC_SKILLTIPS_INT] when you enter a Willpower Blade or Willpower Construct state for (Buff-Time-621404) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800016,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621404]}}],"icon":"/assets/ui/rom-spells/800016.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-30","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":30,"keyItemId":545891,"sourceSkillId":498678,"name":"Soul Raid","description":"Increases [SC_SKILLTIPS_MOVE] and dark damage after Shadow Step is used. Lasts for (Buff-Time-621406) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800017,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621406],"components":[{"id":621406,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":6,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":24,"value":10},{"type":50,"value":10}],"abilitySkillLevelArg":3,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490306],"sourceSkillId":498678,"name":"Soul Raid","description":"Increases [SC_SKILLTIPS_MOVE] and dark damage after Shadow Step is used. Lasts for (Buff-Time-621406) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800017,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621406]}}],"icon":"/assets/ui/rom-spells/800017.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-35","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":35,"keyItemId":545892,"sourceSkillId":498679,"name":"Spirit Revival","description":"Gives 1 psi after a Willpower Blade or Willpower Construct state ends.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800018,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[490306],"sourceSkillId":498679,"name":"Spirit Revival","description":"Gives 1 psi after a Willpower Blade or Willpower Construct state ends.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800018,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800018.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-40","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":40,"keyItemId":545893,"sourceSkillId":498695,"name":"Liquidation Suffering","description":"[SC_SKILLTIPS_P2]\nTemporarily increases aggro caused by a friendly target by (Buff0-0)% and reduces the aggro caused by the caster and other party members by (Buff0-621433)%. Lasts for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800019,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621432,621654,621433],"components":[{"id":621432,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621654,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621433,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":35,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":138,"value":-5}],"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490306],"sourceSkillId":498695,"name":"Liquidation Suffering","description":"[SC_SKILLTIPS_P2]\nTemporarily increases aggro caused by a friendly target by (Buff0-0)% and reduces the aggro caused by the caster and other party members by (Buff0-621433)%. Lasts for (Buff0-Time) seconds.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800019,"sourceEffectType":0,"sourceTarget":4,"componentIds":[621432,621654,621433]}}],"icon":"/assets/ui/rom-spells/800019.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-45","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":45,"keyItemId":545894,"sourceSkillId":498699,"name":"End of Thought","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on target. If target's HP is less than 35%, the caster will earn 1 psi for every second. This can happen 4 times. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.8},"source":{"imageId":800020,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621435],"components":[{"id":621435,"magicFunc":0,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-80,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-80,"damagePowerSkillLevelArg":45,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490306],"sourceSkillId":498699,"name":"End of Thought","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on target. If target's HP is less than 35%, the caster will earn 1 psi for every second. This can happen 4 times. \n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":15000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":0.8},"source":{"imageId":800020,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621435]}}],"icon":"/assets/ui/rom-spells/800020.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-50","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"elite","unlockLevel":50,"keyItemId":545895,"sourceSkillId":498700,"name":"Crime and Punishment","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on the target. If the target has been affected by Perception Extraction, Soul Pain or Soul Poisoned Fang then each additional state will increase damage caused by [498700] by 25% and will reset the effect duration of these states.\n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800021,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621440],"components":[{"id":621440,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-120,"fixedValue":0,"attack":{"type":0,"calculationType":1,"damagePower":-120,"damagePowerSkillLevelArg":50,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490306],"sourceSkillId":498700,"name":"Crime and Punishment","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG0) [SC_SKILLTIPS_DARK] on the target. If the target has been affected by Perception Extraction, Soul Pain or Soul Poisoned Fang then each additional state will increase damage caused by [498700] by 25% and will reset the effect duration of these states.\n[SC_SKILLTIPS_03]","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":4000,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1.2},"source":{"imageId":800021,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621440]}}],"icon":"/assets/ui/rom-spells/800021.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-60","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":60,"keyItemId":546845,"sourceSkillId":499866,"name":"Psychic Projectile","description":"When a target is hit by [499867], all damage caused by the target is decreased by (Buff0-623417)% for (Buff-Time-623417) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801632,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623417],"components":[{"id":623417,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":5,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":204,"value":-50},{"type":205,"value":-50}],"abilitySkillLevelArg":0,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[490306],"sourceSkillId":499866,"name":"Psychic Projectile","description":"When a target is hit by [499867], all damage caused by the target is decreased by (Buff0-623417)% for (Buff-Time-623417) seconds.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801632,"sourceEffectType":2,"sourceTarget":0,"componentIds":[623417]}}],"icon":"/assets/ui/rom-spells/801632.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-rogue-elite-70","classId":"rom-warlock","secondaryClassId":"rom-rogue","group":"passive","unlockLevel":70,"keyItemId":546846,"sourceSkillId":499864,"name":"Shadowstab Guile","description":"When using [499865] you will obtain 1 additional psi and 3 extra psi when using [499666].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801633,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490306],"sourceSkillId":499864,"name":"Shadowstab Guile","description":"When using [499865] you will obtain 1 additional psi and 3 extra psi when using [499666].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801633,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801633.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-15","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":15,"keyItemId":545896,"sourceSkillId":498694,"name":"Psychic Flash","description":"Psychic Arrows and Weakening Weave Curse can cause an extra (FixDMG-621434) x INT [SC_SKILLTIPS_MDMG].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800027,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621434],"components":[{"id":621434,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-0.4,"attack":{"type":0,"calculationType":4,"damagePower":0,"damagePowerSkillLevelArg":0,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":15,"prerequisites":[490204],"sourceSkillId":498694,"name":"Psychic Flash","description":"Psychic Arrows and Weakening Weave Curse can cause an extra (FixDMG-621434) x INT [SC_SKILLTIPS_MDMG].","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800027,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621434]}}],"icon":"/assets/ui/rom-spells/800027.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-20","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":20,"keyItemId":545897,"sourceSkillId":498697,"name":"Flaming Heart Strike","description":"Inflicts (DMG0) + (FixDMG-621438) x INT [SC_SKILLTIPS_FLAME] on target. \n[SC_SKILLTIPS_9_3S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":65000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800028,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621438],"components":[{"id":621438,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":-1,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":45,"fixedValue":-1,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[490204],"sourceSkillId":498697,"name":"Flaming Heart Strike","description":"Inflicts (DMG0) + (FixDMG-621438) x INT [SC_SKILLTIPS_FLAME] on target. \n[SC_SKILLTIPS_9_3S]\n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":65000,"costs":[{"resource":"mana","amount":45,"percentage":false}],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800028,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621438]}}],"icon":"/assets/ui/rom-spells/800028.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-25","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":25,"keyItemId":545898,"sourceSkillId":498698,"name":"Warp Flash","description":"Warp Charge inflicts an extra (FixDMG-621434) x INT [SC_SKILLTIPS_MDMG] and when the skill hits, it raises the [SC_SKILLTIPS_DPS] and [SC_SKILLTIPS_CAST] of nearby party members.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800029,"sourceEffectType":2,"sourceTarget":6,"componentIds":[621434],"components":[{"id":621434,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":-0.4,"attack":{"type":0,"calculationType":4,"damagePower":0,"damagePowerSkillLevelArg":0,"fixedValue":-0.4,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":0,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[490204],"sourceSkillId":498698,"name":"Warp Flash","description":"Warp Charge inflicts an extra (FixDMG-621434) x INT [SC_SKILLTIPS_MDMG] and when the skill hits, it raises the [SC_SKILLTIPS_DPS] and [SC_SKILLTIPS_CAST] of nearby party members.","target":"hostile","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800029,"sourceEffectType":2,"sourceTarget":6,"componentIds":[621434]}}],"icon":"/assets/ui/rom-spells/800029.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-30","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":30,"keyItemId":545899,"sourceSkillId":498703,"name":"Focus Building","description":"Increases [SC_SKILLTIPS_INT] by (Buff0-621443)% every second while in effect. Can be stacked a maximum of 10 times, but effect is re-stacked after moving. \n(This skill consumes (Buff0-Dot) focus every second. Effect stops if there is insufficient focus.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800030,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621444,621443],"components":[{"id":621444,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":-10,"settingFlags":47,"specialActionFlags":0,"assistType":-1,"clearFlags":256,"abilitySkillLevelArg":0,"triggers":{"onTimeMagicId":498704,"onTimeSeconds":1,"onHitMagicId":0,"onBuffTimeoutMagicId":497740,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":1,"dotType":3,"dotBase":-2,"dot":{"timeSeconds":1,"type":3,"base":-2,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621443,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":3,"hateCost":-10,"settingFlags":32771,"specialActionFlags":0,"assistType":-1,"clearFlags":4,"abilityModifiers":[{"type":163,"value":3}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":30,"prerequisites":[490204],"sourceSkillId":498703,"name":"Focus Building","description":"Increases [SC_SKILLTIPS_INT] by (Buff0-621443)% every second while in effect. Can be stacked a maximum of 10 times, but effect is re-stacked after moving. \n(This skill consumes (Buff0-Dot) focus every second. Effect stops if there is insufficient focus.)","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800030,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621444,621443]}}],"icon":"/assets/ui/rom-spells/800030.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-35","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":35,"keyItemId":545900,"sourceSkillId":498705,"name":"Soul Brand","description":"When [497964], [497960] or [498545] hits, it carries an extra Soul Brand effect. It increases the [SC_SKILLTIPS_DARK] and [SC_SKILLTIPS_FLAME] on target by (Buff0-621446)% for (Buff-Time-621446) seconds. This effect can be stacked 4 times.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800031,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621446],"components":[{"id":621446,"magicFunc":1,"magicType":2,"effectType":0,"effectTime":20,"hateCost":0,"settingFlags":557122,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":223,"value":9},{"type":226,"value":9}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":35,"prerequisites":[490204],"sourceSkillId":498705,"name":"Soul Brand","description":"When [497964], [497960] or [498545] hits, it carries an extra Soul Brand effect. It increases the [SC_SKILLTIPS_DARK] and [SC_SKILLTIPS_FLAME] on target by (Buff0-621446)% for (Buff-Time-621446) seconds. This effect can be stacked 4 times.","target":"self","range":5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800031,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621446]}}],"icon":"/assets/ui/rom-spells/800031.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-40","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":40,"keyItemId":545901,"sourceSkillId":498709,"name":"Saces' Cracking Spell","description":"[SC_SKILLTIPS_P2]\nReduces target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE] by (Buff0-0). Lasts for (Buff0-Time) seconds.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800032,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621450],"components":[{"id":621450,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":15,"hateCost":0,"settingFlags":66,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":182,"value":-20},{"type":183,"value":-20}],"abilitySkillLevelArg":45,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[490204],"sourceSkillId":498709,"name":"Saces' Cracking Spell","description":"[SC_SKILLTIPS_P2]\nReduces target's [SC_SKILLTIPS_CRI_PASSIVE] and [SC_SKILLTIPS_MCRI_PASSIVE] by (Buff0-0). Lasts for (Buff0-Time) seconds.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800032,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621450]}}],"icon":"/assets/ui/rom-spells/800032.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-45","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":45,"keyItemId":545902,"sourceSkillId":498710,"name":"Soul Brand Sting","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG4) + (FixDMG-621473) x INT [SC_SKILLTIPS_DARK] and [SC_SKILLTIPS_FLAME] on target and resets the cooldown time for Flaming Heart Strike. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800033,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621473,621474],"components":[{"id":621473,"magicFunc":0,"magicType":2,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":3,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0},{"id":621474,"magicFunc":0,"magicType":5,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":-100,"fixedValue":-0.2,"attack":{"type":0,"calculationType":1,"damagePower":-100,"damagePowerSkillLevelArg":30,"fixedValue":-0.2,"fixedType":5,"fixedDamageSkillLevelArg":3,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[490204],"sourceSkillId":498710,"name":"Soul Brand Sting","description":"[SC_SKILLTIPS_P1]\nInflicts (DMG4) + (FixDMG-621473) x INT [SC_SKILLTIPS_DARK] and [SC_SKILLTIPS_FLAME] on target and resets the cooldown time for Flaming Heart Strike. \n[SC_SKILLTIPS_03]","target":"hostile","range":22.5,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"damage","coefficient":1},"source":{"imageId":800033,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621473,621474]}}],"icon":"/assets/ui/rom-spells/800033.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-50","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"elite","unlockLevel":50,"keyItemId":545903,"sourceSkillId":498711,"name":"Thinking Overload","description":"Restores (Buff0-Dot) focus every 2 seconds and increases [SC_SKILLTIPS_CAST] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800034,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621451],"components":[{"id":621451,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":60,"hateCost":0,"settingFlags":107,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":51,"value":-15}],"abilitySkillLevelArg":0,"dotTime":2,"dotType":3,"dotBase":5,"dot":{"timeSeconds":2,"type":3,"base":5,"skillLevelArg":0},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":50,"prerequisites":[490204],"sourceSkillId":498711,"name":"Thinking Overload","description":"Restores (Buff0-Dot) focus every 2 seconds and increases [SC_SKILLTIPS_CAST] by (Buff0-0)% for (Buff0-Time) seconds.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":180000,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800034,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621451]}}],"icon":"/assets/ui/rom-spells/800034.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-60","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":60,"keyItemId":546847,"sourceSkillId":499862,"name":"Blazing Barrier","description":"[499863] increases your [SC_SKILLTIPS_FLAME].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801634,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":60,"prerequisites":[490204],"sourceSkillId":499862,"name":"Blazing Barrier","description":"[499863] increases your [SC_SKILLTIPS_FLAME].","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801634,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801634.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-mage-elite-70","classId":"rom-warlock","secondaryClassId":"rom-mage","group":"passive","unlockLevel":70,"keyItemId":546848,"sourceSkillId":499860,"name":"Silent Seal","description":"When hit by [499861], the target will be marked out. The next time it is hit, the damage received will be doubled.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801635,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":70,"prerequisites":[490204],"sourceSkillId":499860,"name":"Silent Seal","description":"When hit by [499861], the target will be marked out. The next time it is hit, the damage received will be doubled.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":801635,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/801635.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-15","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":15,"keyItemId":545904,"sourceSkillId":498633,"name":"Healing Fortune","description":"When a psychic arrow hits, there is a chance that your next Urgent Heal will become an instant spell without consuming any MP. Also increases the healing amount of Urgent Heal.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800035,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":15,"prerequisites":[491147],"sourceSkillId":498633,"name":"Healing Fortune","description":"When a psychic arrow hits, there is a chance that your next Urgent Heal will become an instant spell without consuming any MP. Also increases the healing amount of Urgent Heal.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800035,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800035.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-20","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":20,"keyItemId":545905,"sourceSkillId":498640,"name":"Protection Weave Curse","description":"Your Regenerate will be able to increase your target's [SC_SKILLTIPS_INT] and [SC_SKILLTIPS_MND] by (Buff0-621318)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800036,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621318],"components":[{"id":621318,"magicFunc":1,"magicType":4,"effectType":0,"effectTime":20,"hateCost":-10,"settingFlags":8299,"specialActionFlags":0,"assistType":25,"abilityModifiers":[{"type":163,"value":10},{"type":164,"value":10}],"abilitySkillLevelArg":0,"dotTime":2,"dotType":0,"dotBase":20,"dot":{"timeSeconds":2,"type":0,"base":20,"skillLevelArg":18},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":20,"prerequisites":[491147],"sourceSkillId":498640,"name":"Protection Weave Curse","description":"Your Regenerate will be able to increase your target's [SC_SKILLTIPS_INT] and [SC_SKILLTIPS_MND] by (Buff0-621318)%.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800036,"sourceEffectType":2,"sourceTarget":0,"componentIds":[621318]}}],"icon":"/assets/ui/rom-spells/800036.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-25","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":25,"keyItemId":545906,"sourceSkillId":498641,"name":"Ring of Comfort","description":"Restores (DMG0) HP for 6 friendly targets in range.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":9,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800037,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621319],"components":[{"id":621319,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":1,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":70,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":70,"damagePowerSkillLevelArg":20,"fixedValue":0,"fixedType":0,"fixedDamageSkillLevelArg":5,"randomRange":2,"criticalRate":0,"hateRate":1},"summonCreatureId":0}]},"ranks":[{"rank":1,"level":25,"prerequisites":[491147],"sourceSkillId":498641,"name":"Ring of Comfort","description":"Restores (DMG0) HP for 6 friendly targets in range.","target":"hostile","range":20,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"mana","amount":9,"percentage":true}],"passive":false,"effect":{"kind":"damage","coefficient":0.7},"source":{"imageId":800037,"sourceEffectType":0,"sourceTarget":16,"componentIds":[621319]}}],"icon":"/assets/ui/rom-spells/800037.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-30","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":30,"keyItemId":545907,"sourceSkillId":498643,"name":"Psychic Rising Tide","description":"Rising Tide becomes an instant spell, but has a 5 second cooldown time. When Rising Tide hits, there is a chance that your next Urgent Heal will become an instant spell that doesn't require any MP. Also increases the healing amount of Urgent Heal.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800038,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":30,"prerequisites":[491147],"sourceSkillId":498643,"name":"Psychic Rising Tide","description":"Rising Tide becomes an instant spell, but has a 5 second cooldown time. When Rising Tide hits, there is a chance that your next Urgent Heal will become an instant spell that doesn't require any MP. Also increases the healing amount of Urgent Heal.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800038,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800038.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-35","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":35,"keyItemId":545908,"sourceSkillId":498648,"name":"Mind Shield","description":"[SC_SKILLTIPS_DEF] will be enhanced by Defense Net, but the effect time is reduced by 1 second. Urgent Heal carries a chance to reset cooldown time for Ring of Comfort.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800039,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":35,"prerequisites":[491147],"sourceSkillId":498648,"name":"Mind Shield","description":"[SC_SKILLTIPS_DEF] will be enhanced by Defense Net, but the effect time is reduced by 1 second. Urgent Heal carries a chance to reset cooldown time for Ring of Comfort.","target":"self","range":0.1,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800039,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800039.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-40","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":40,"keyItemId":545909,"sourceSkillId":498649,"name":"Soul Enlightenment","description":"[SC_SKILLTIPS_P2]\nCaster and friendly party members earn Soul Enlightenment which raises Maximum HP by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800040,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621328],"components":[{"id":621328,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":10,"hateCost":0,"settingFlags":99,"specialActionFlags":0,"assistType":-1,"abilityModifiers":[{"type":167,"value":10},{"type":144,"value":6}],"abilitySkillLevelArg":4,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":40,"prerequisites":[491147],"sourceSkillId":498649,"name":"Soul Enlightenment","description":"[SC_SKILLTIPS_P2]\nCaster and friendly party members earn Soul Enlightenment which raises Maximum HP by (Buff0-0)% and [SC_SKILLTIPS_HEAL_PASSIVE] by (Buff0-1)% for (Buff0-Time) seconds.","target":"self","range":10,"castTimeMs":0,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800040,"sourceEffectType":0,"sourceTarget":0,"componentIds":[621328]}}],"icon":"/assets/ui/rom-spells/800040.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-45","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":45,"keyItemId":545910,"sourceSkillId":498662,"name":"Touch of Faith","description":"[SC_SKILLTIPS_P1]\nInflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] on the target every 2 seconds for (Buff0-Time) seconds. Every time [498662] inflicts damage, there is a 50% chance that your next Psychic Arrows will become an instant spell that doesn't consume any focus. However, you will be unable to earn psi. Also resets cooldown time for Rising Tide.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800041,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621329,621330],"components":[{"id":621329,"magicFunc":1,"magicType":5,"effectType":0,"effectTime":24,"hateCost":0,"settingFlags":202,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"dotTime":2,"dotType":0,"dotBase":-14,"dot":{"timeSeconds":2,"type":0,"base":-14,"skillLevelArg":40},"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":621330,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":24,"hateCost":0,"settingFlags":4,"specialActionFlags":0,"assistType":-1,"clearFlags":1024,"abilitySkillLevelArg":5,"triggers":{"onTimeMagicId":498663,"onTimeSeconds":2,"onHitMagicId":0,"onBuffTimeoutMagicId":0,"onAttackReboundMagicId":0,"onMagicAttackReboundMagicId":0,"onDeathMagicId":0},"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":45,"prerequisites":[491147],"sourceSkillId":498662,"name":"Touch of Faith","description":"[SC_SKILLTIPS_P1]\nInflicts (Buff0-Dot) [SC_SKILLTIPS_DARK] on the target every 2 seconds for (Buff0-Time) seconds. Every time [498662] inflicts damage, there is a 50% chance that your next Psychic Arrows will become an instant spell that doesn't consume any focus. However, you will be unable to earn psi. Also resets cooldown time for Rising Tide.","target":"hostile","range":20,"castTimeMs":1000,"cooldownMs":0,"costs":[],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":800041,"sourceEffectType":0,"sourceTarget":6,"componentIds":[621329,621330]}}],"icon":"/assets/ui/rom-spells/800041.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-50","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"passive","unlockLevel":50,"keyItemId":545911,"sourceSkillId":498668,"name":"Divine Assistance","description":"When you use Urgent Heal because you activated Healing Fortune or Psychic Rising Tide, you can earn 1 point Inspiration. After 8 points of Inspiration are accumulated, you can reset the cooldown time for Defense Net.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800042,"sourceEffectType":2,"sourceTarget":0,"componentIds":[],"components":[]},"ranks":[{"rank":1,"level":50,"prerequisites":[491147],"sourceSkillId":498668,"name":"Divine Assistance","description":"When you use Urgent Heal because you activated Healing Fortune or Psychic Rising Tide, you can earn 1 point Inspiration. After 8 points of Inspiration are accumulated, you can reset the cooldown time for Defense Net.","target":"self","range":0.1,"castTimeMs":2000,"cooldownMs":0,"costs":[],"passive":true,"effect":{"kind":"passive","coefficient":0},"source":{"imageId":800042,"sourceEffectType":2,"sourceTarget":0,"componentIds":[]}}],"icon":"/assets/ui/rom-spells/800042.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-60","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":60,"keyItemId":546849,"sourceSkillId":499858,"name":"Great Salvation","description":"Restores (DMG0) HP to the target. If the target is under any negative effects, each negative effect will increase the amount of healing by (Buff0-623450)%. It also restores HP to the caster.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.4},"source":{"imageId":801636,"sourceEffectType":0,"sourceTarget":4,"componentIds":[620577,623701,623450],"components":[{"id":620577,"magicFunc":0,"magicType":4,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":40,"fixedValue":0,"attack":{"type":0,"calculationType":5,"damagePower":40,"damagePowerSkillLevelArg":33,"fixedValue":0,"fixedType":5,"fixedDamageSkillLevelArg":0,"randomRange":2,"criticalRate":0,"hateRate":2},"summonCreatureId":0},{"id":623701,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0},{"id":623450,"magicFunc":1,"magicType":-1,"effectType":0,"effectTime":-1,"hateCost":0,"settingFlags":32769,"specialActionFlags":0,"assistType":-1,"clearFlags":16384,"abilityModifiers":[{"type":149,"value":10}],"abilitySkillLevelArg":100,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":60,"prerequisites":[491147],"sourceSkillId":499858,"name":"Great Salvation","description":"Restores (DMG0) HP to the target. If the target is under any negative effects, each negative effect will increase the amount of healing by (Buff0-623450)%. It also restores HP to the caster.","target":"friendly","range":20,"castTimeMs":0,"cooldownMs":10000,"costs":[],"passive":false,"effect":{"kind":"heal","coefficient":0.4},"source":{"imageId":801636,"sourceEffectType":0,"sourceTarget":4,"componentIds":[620577,623701,623450]}}],"icon":"/assets/ui/rom-spells/801636.png","iconResolution":"native-interface-fdb"},{"id":"rom-warlock-rom-priest-elite-70","classId":"rom-warlock","secondaryClassId":"rom-priest","group":"elite","unlockLevel":70,"keyItemId":546850,"sourceSkillId":499856,"name":"Spreading Pain","description":"Inflicts [497959], [497960], and [497964] on an enemy target.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801637,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623469],"components":[{"id":623469,"magicFunc":7,"magicType":-1,"effectType":0,"effectTime":0,"hateCost":0,"settingFlags":0,"specialActionFlags":0,"assistType":-1,"abilitySkillLevelArg":5,"dotTime":0,"dotType":0,"dotBase":0,"attackType":0,"damagePower":0,"fixedValue":0,"summonCreatureId":0}]},"ranks":[{"rank":1,"level":70,"prerequisites":[491147],"sourceSkillId":499856,"name":"Spreading Pain","description":"Inflicts [497959], [497960], and [497964] on an enemy target.","target":"hostile","range":22.5,"castTimeMs":0,"cooldownMs":20000,"costs":[{"resource":"focus","amount":15,"percentage":false}],"passive":false,"effect":{"kind":"source-components","coefficient":0},"source":{"imageId":801637,"sourceEffectType":0,"sourceTarget":6,"componentIds":[623469]}}],"icon":"/assets/ui/rom-spells/801637.png","iconResolution":"native-interface-fdb"}]} diff --git a/src/game/romPlayerCatalog.test.ts b/src/game/romPlayerCatalog.test.ts index 0e02e492..239aa046 100644 --- a/src/game/romPlayerCatalog.test.ts +++ b/src/game/romPlayerCatalog.test.ts @@ -38,7 +38,7 @@ describe("generated RuneWaker player catalog", () => { orderedPairs: 66, eliteMilestones: 660, ordinaryFamilies: 269, - iconResolved: 929, + iconResolved: 930, uniqueNativeIcons: 918, unresolvedVisible: 0, }); @@ -46,11 +46,18 @@ describe("generated RuneWaker player catalog", () => { }); it("resolves every ordered pair to all ten elite milestones and the source-backed Devotion Halo", () => { - expect(ROM_ELITE_ABILITIES).toHaveLength(661); + // The generated snapshot contains the added Druid/Warrior 499956 row; + // the runtime then appends Devotion Halo, two CoA Warrior elite rows, and + // current CoA Warlock/Warrior Enraged 499871. + expect(ROM_ELITE_ABILITIES).toHaveLength(665); const knownEmptyEffectElites = new Set([ + "rom-mage-rom-knight-elite-45", + "rom-mage-rom-warrior-elite-50", + "rom-knight-rom-rogue-elite-40", "rom-warlock-rom-warrior-elite-30", + "rom-warlock-rom-warrior-elite-70", + "rom-warlock-rom-priest-elite-15", "rom-warlock-rom-priest-elite-35", - "rom-warlock-rom-priest-elite-50", ]); const pairGroups = new Map(); for (const ability of ROM_ELITE_ABILITIES) { @@ -59,8 +66,17 @@ describe("generated RuneWaker player catalog", () => { } expect(pairGroups.size).toBe(66); for (const [pair, elites] of pairGroups) { - expect(elites.map((ability) => ability.unlockLevel)).toEqual(pair === "rom-priest:rom-knight" - ? [...ELITE_LEVELS, 70] : ELITE_LEVELS); + const expectedLevels = pair === "rom-priest:rom-knight" + ? [...ELITE_LEVELS, 70] + : pair === "rom-warlock:rom-warrior" + ? [...ELITE_LEVELS, 60] + : pair === "rom-druid:rom-warrior" + ? [...ELITE_LEVELS.slice(0, 9), 60, 70] + : pair === "rom-warrior:rom-knight" || pair === "rom-warrior:rom-rogue" + ? [...ELITE_LEVELS, 50] + : ELITE_LEVELS; + expect(elites.map((ability) => ability.unlockLevel).sort((left, right) => left - right)) + .toEqual([...expectedLevels].sort((left, right) => left - right)); for (const ability of elites) { expect(ability.source, `${pair}:${ability.id} source`).toBe("runewaker"); if (knownEmptyEffectElites.has(ability.id)) { @@ -71,11 +87,23 @@ describe("generated RuneWaker player catalog", () => { } } } - expect(ROM_ALL_ABILITIES).toHaveLength(930); - expect(ROM_ALL_ABILITIES.filter((ability) => ability.id !== "rom-priest-rom-knight-elite-70-devotion-halo").every((ability) => ( - /^\/assets\/ui\/rom-spells\/\d+\.png$/.test(ability.icon) - && ability.icon === generated.skills.find((skill) => skill.id === ability.id)?.icon - ))).toBe(true); + // The generated 930-row snapshot is joined with Devotion Halo, current CoA + // Warrior/Knight and Warrior/Rogue rows, and CoA Enraged 499871. + expect(ROM_ALL_ABILITIES).toHaveLength(934); + const runtimeAddedIconSources = new Map([ + ["rom-warrior-rom-knight-elite-50-coa-493287", 491480], + ["rom-warrior-rom-rogue-elite-50-coa-493283", 491133], + ["rom-warlock-rom-warrior-general-coa-499871", 490492], + ]); + for (const ability of ROM_ALL_ABILITIES) { + expect(ability.icon).toMatch(/^\/assets\/ui\/rom-spells\/\d+\.png$/); + if (ability.id === "rom-priest-rom-knight-elite-70-devotion-halo") continue; + const runtimeSource = runtimeAddedIconSources.get(ability.id); + const expectedIcon = runtimeSource === undefined + ? generated.skills.find((skill) => skill.id === ability.id)?.icon + : generated.skills.find((skill) => skill.sourceSkillId === runtimeSource)?.icon; + expect(ability.icon, ability.id).toBe(expectedIcon); + } expect(ROM_ALL_ABILITIES.find((ability) => ability.id === "rom-priest-rom-knight-elite-70-devotion-halo")?.icon) .toBe(generated.skills.find((skill) => skill.sourceSkillId === 499957)?.icon); expect(generated.skills.every((ability) => ( @@ -114,6 +142,24 @@ describe("generated RuneWaker player catalog", () => { })); const generatedRanks = generated.skills.reduce((sum, ability) => sum + ability.ranks.length, 0); const sourceCosts = (sourceSkillId: number, rows: typeof generated.skills[number]["costs"]) => { + // Current CoA represents Holy Power Explosion (490172) as a passive + // marker, so it is no longer a cast with the local ten-Mana cost. + if (sourceSkillId === 490172) return []; + // CoA changed Chaos Dagger (491178) to a passive but still lists 25 MP + // without saying whether that is paid per attack. Do not model the old + // Enchanted Throw activation cost or guess a recurring proc charge. + if (sourceSkillId === 491178) return []; + // CoA Leopard Instinct (495402) is passive, with no cast cost. + if (sourceSkillId === 495402) return []; + if (sourceSkillId === 490274) return []; + // Current CoA Holy Candle (490304) has a 5% Mana activation cost; + // the generated RuneWaker row omits that cost. + if (sourceSkillId === 490304) return [{ resource: "mana", amount: 5, percentage: true }]; + if (sourceSkillId === 490276) return [{ + resource: "mana", amount: 10, percentage: true, percentageBasis: "base-mana", + }]; + if (sourceSkillId === 498612) return [{ resource: "rage", amount: 15 }]; + if (sourceSkillId === 498642) return [{ resource: "rage", amount: 75, percentage: false }]; let normalized = normalizedCosts(rows); // The current CoA Shout entry (same ID/name) uses 15 Rage while the // older local RuneWaker snapshot records 30; the runtime follows CoA. @@ -124,7 +170,9 @@ describe("generated RuneWaker player catalog", () => { || normalized.some((entry) => entry.resource === "nature-power")) return normalized; return [...normalized, { resource: "nature-power", amount: 1 }]; }; - expect(generatedRanks).toBe(934); + // Druid/Warrior Cross of Thorns Attacks (499956) is a separately added + // generated row with one rank in the current source snapshot. + expect(generatedRanks).toBe(935); expect(Math.max(...generated.skills.flatMap((ability) => ( ability.costs.filter((cost) => !cost.percentage).map((cost) => cost.amount) )))).toBe(400); diff --git a/src/game/romPriestChampionBeacon.integration.test.ts b/src/game/romPriestChampionBeacon.integration.test.ts new file mode 100644 index 00000000..53311d08 --- /dev/null +++ b/src/game/romPriestChampionBeacon.integration.test.ts @@ -0,0 +1,192 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { abilityById } from "./abilityCatalog"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, +} from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_ID } from "./romPriestChampionBeaconRuntime"; + +const beacon = abilityById(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_ID)!; +const heal = abilityById("rom-priest-primary-2")!; +const beaconTag = "rom-priest-champion-beacon-of-regeneration"; + +function setPlayerMana(amount: number): void { + useCombatStore.setState((state) => ({ + resource: amount, + maxResource: amount, + maxResourcePools: { ...state.maxResourcePools, mana: amount }, + resourcePools: { ...state.resourcePools, mana: amount }, + })); +} + +function activeCast(abilityId: string, targetId: string, startedAt: number, completesAt: number) { + return { + abilityId, + school: "holy" as const, + mode: "cast" as const, + startedAt, + completesAt, + originalDurationMs: Math.max(0, completesAt - startedAt), + pushbackHits: 0, + origin: [0, 0, 0] as const, + targetId, + }; +} + +describe("RoM Priest/Champion Beacon of Regeneration integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + secondaryClassId: "rom-champion", + raceId: "rom-dwarf", + level: 80, + role: "healer", + }); + usePartyStore.getState().initializeParty( + "rom-priest-champion-beacon", 80, useCombatStore.getState().health, "healer", 2, "rom", + ); + usePartyStore.getState().setCommand("stop"); + setPlayerMana(10_000); + }); + + it("applies a player's Beacon with the caster's healing-done modifiers", () => { + const seed = "rom-priest-champion-beacon-player-target"; + const marked = createConfiguredPartyMember({ + name: "Marked ally", + classId: "rom-warrior", + raceId: "rom-human", + specialization: "Primary", + role: "tank", + }, 80, 0, seed); + const healTarget = createConfiguredPartyMember({ + name: "Heal target", + classId: "rom-warrior", + raceId: "rom-human", + specialization: "Primary", + role: "tank", + }, 80, 1, seed); + usePartyStore.setState({ members: [{ ...marked, health: 1 }, { ...healTarget, health: 1 }] }); + registerPartyRuntimePosition(marked.id, [1, 0, 0]); + registerPartyRuntimePosition(healTarget.id, [2, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + expect(useCombatStore.getState().castAbility(beacon.id, { + targetActorId: marked.id, + now: 1_000, + })).toMatchObject({ ok: true }); + expect(useCombatStore.getState().auras).toEqual(expect.arrayContaining([ + expect.objectContaining({ + sourceId: PLAYER_AGGRO_ID, + targetId: marked.id, + expiresAt: 31_000, + definition: expect.objectContaining({ utilityTags: [beaconTag] }), + }), + ])); + + expect(useCombatStore.getState().castAbility(heal.id, { + targetActorId: healTarget.id, + now: 3_000, + })).toMatchObject({ ok: true }); + useCombatStore.getState().tick(3, 5_000); + + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "healing" && candidate.abilityId === beacon.id + )); + const faith = useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === PLAYER_AGGRO_ID && aura.definition.name === "Faith: healing-power-percent" + )); + expect(faith?.definition.modifiers).toContainEqual({ + kind: "healing", direction: "done", operation: "percent", value: 0.05, + }); + expect(event).toMatchObject({ + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: marked.id, + rawAmount: 809, + effectiveAmount: 809, + overheal: 0, + critical: false, + }); + expect(usePartyStore.getState().members.find((member) => member.id === marked.id)?.health).toBe(810); + }); + + it("applies a generated companion's Beacon and resolves its direct-heal trigger", () => { + const seed = "rom-priest-champion-beacon-companion"; + const caster = createConfiguredPartyMember({ + name: "Priest/Champion", + classId: "rom-priest", + secondaryClassId: "rom-champion", + raceId: "rom-dwarf", + specialization: "Priest/Champion", + role: "healer", + }, 80, 0, seed); + const marked = createConfiguredPartyMember({ + name: "Marked companion ally", + classId: "rom-warrior", + raceId: "rom-human", + specialization: "Primary", + role: "tank", + }, 80, 1, seed); + const healTarget = createConfiguredPartyMember({ + name: "Heal target companion", + classId: "rom-warrior", + raceId: "rom-human", + specialization: "Primary", + role: "tank", + }, 80, 2, seed); + usePartyStore.setState({ members: [ + { ...caster, resource: 10_000, maxResource: 10_000, resourcePools: { ...caster.resourcePools, mana: 10_000 }, + activeCast: activeCast(beacon.id, marked.id, 1_000, 1_000), activeCastTargetId: marked.id, status: "attacking" }, + { ...marked, health: 1 }, + { ...healTarget, health: 1 }, + ] }); + registerPartyRuntimePosition(caster.id, [0, 0, 0]); + registerPartyRuntimePosition(marked.id, [1, 0, 0]); + registerPartyRuntimePosition(healTarget.id, [2, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + advanceDungeonPartyCombat(1_000); + + expect(useCombatStore.getState().auras).toEqual(expect.arrayContaining([ + expect.objectContaining({ sourceId: caster.id, targetId: marked.id, definition: expect.objectContaining({ utilityTags: [beaconTag] }) }), + ])); + + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === caster.id ? { + ...member, + activeCast: activeCast(heal.id, healTarget.id, 1_000, 3_000), + activeCastTargetId: healTarget.id, + status: "attacking", + } : member), + })); + useCombatStore.getState().synchronizeActors(); + advanceDungeonPartyCombat(3_000); + + const faith = useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === caster.id && aura.definition.name === "Faith: healing-power-percent" + )); + expect(faith?.definition.modifiers).toContainEqual({ + kind: "healing", direction: "done", operation: "percent", value: 0.05, + }); + + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "healing" && candidate.sourceActorId === caster.id && candidate.abilityId === beacon.id + )); + expect(event).toMatchObject({ + targetActorId: marked.id, + // Beacon contributes 770; the companion's ordinary Faith aura applies its +5% healing bonus. + rawAmount: 809, + effectiveAmount: 809, + overheal: 0, + critical: false, + }); + expect(usePartyStore.getState().members.find((member) => member.id === marked.id)?.health).toBe(810); + }); +}); diff --git a/src/game/romPriestChampionBeaconRuntime.test.ts b/src/game/romPriestChampionBeaconRuntime.test.ts new file mode 100644 index 00000000..d6784d93 --- /dev/null +++ b/src/game/romPriestChampionBeaconRuntime.test.ts @@ -0,0 +1,95 @@ +import { describe, expect, it } from "vitest"; +import { + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_DURATION_MS, + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_HEAL_AT_SKILL_LEVEL_105, + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_SPELL_ID, + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_SOURCE_SKILL_LEVEL, + createRomPriestChampionBeaconState, + resolveRomPriestChampionBeaconHeal, +} from "./romPriestChampionBeaconRuntime"; + +describe("current CoA Priest/Champion Beacon of Regeneration", () => { + it("records the source-described skill, duration, and published +105 healing amount", () => { + expect(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_SPELL_ID).toBe(498620); + expect(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_DURATION_MS).toBe(30_000); + expect(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_SOURCE_SKILL_LEVEL).toBe(105); + expect(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_HEAL_AT_SKILL_LEVEL_105).toBe(770); + }); + + it("heals the marked party member once for each caster direct-heal cast at sourced skill level 105", () => { + const beacon = createRomPriestChampionBeaconState("priest", "ally", 1_000); + + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "priest", + occurredAtMs: 1_001, + kind: "direct-cast", + }, 105)).toEqual({ targetId: "ally", amount: 770 }); + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "priest", + occurredAtMs: 15_000, + kind: "direct-cast", + }, 105)).toEqual({ targetId: "ally", amount: 770 }); + }); + + it("does not extrapolate the +105 amount to unknown or lower skill levels", () => { + const beacon = createRomPriestChampionBeaconState("priest", "ally", 1_000); + const event = { casterId: "priest", occurredAtMs: 2_000, kind: "direct-cast" as const }; + + expect(resolveRomPriestChampionBeaconHeal(beacon, event, null)).toBeNull(); + expect(resolveRomPriestChampionBeaconHeal(beacon, event, 50)).toBeNull(); + expect(resolveRomPriestChampionBeaconHeal(beacon, event, 104)).toBeNull(); + }); + + it("requires a direct-heal cast from the Beacon caster and excludes other actors, HoT ticks, and channel pulses", () => { + const beacon = createRomPriestChampionBeaconState("priest", "ally", 1_000); + + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "companion", + occurredAtMs: 2_000, + kind: "direct-cast", + }, 105)).toBeNull(); + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "priest", + occurredAtMs: 2_000, + kind: "hot-tick", + }, 105)).toBeNull(); + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "priest", + occurredAtMs: 2_000, + kind: "channel-pulse", + }, 105)).toBeNull(); + }); + + it("expires at 30 seconds and ignores events before Beacon creation", () => { + const beacon = createRomPriestChampionBeaconState("priest", "ally", 1_000); + + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "priest", + occurredAtMs: 30_999, + kind: "direct-cast", + }, 105)).toEqual({ targetId: "ally", amount: 770 }); + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "priest", + occurredAtMs: 31_000, + kind: "direct-cast", + }, 105)).toBeNull(); + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "priest", + occurredAtMs: 999, + kind: "direct-cast", + }, 105)).toBeNull(); + }); + + it("rejects incomplete cast state and invalid event times", () => { + expect(createRomPriestChampionBeaconState("", "ally", 0)).toBeNull(); + expect(createRomPriestChampionBeaconState("priest", " ", 0)).toBeNull(); + expect(createRomPriestChampionBeaconState("priest", "ally", Number.NaN)).toBeNull(); + + const beacon = createRomPriestChampionBeaconState("priest", "ally", 0); + expect(resolveRomPriestChampionBeaconHeal(beacon, { + casterId: "priest", + occurredAtMs: Number.NaN, + kind: "direct-cast", + }, 105)).toBeNull(); + }); +}); diff --git a/src/game/romPriestChampionBeaconRuntime.ts b/src/game/romPriestChampionBeaconRuntime.ts new file mode 100644 index 00000000..98db3a2a --- /dev/null +++ b/src/game/romPriestChampionBeaconRuntime.ts @@ -0,0 +1,103 @@ +import type { ActiveAura } from "./combatAuras"; + +export const ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_ID = "rom-priest-rom-champion-elite-50"; +export const ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_SPELL_ID = 498620; +export const ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_DURATION_MS = 30_000; +export const ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG = "rom-priest-champion-beacon-of-regeneration"; +// The simulator represents CoA's maximum +105 skill row; lower ranks are not modeled separately. +export const ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_HEAL_AT_SKILL_LEVEL_105 = 770; +export const ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_SOURCE_SKILL_LEVEL = 105; + +export const ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_AURA = { + id: "rom-priest-champion-beacon-of-regeneration", + name: "Beacon of Regeneration", + description: "Restores 770 HP to this member when the caster uses a direct healing effect. The simulator uses CoA's maximum +105 skill value for every unlocked rank.", + disposition: "buff" as const, + durationMs: ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_DURATION_MS, + stackBehavior: "refresh" as const, + utilityTags: [ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG], +}; + +export interface RomPriestChampionBeaconState { + casterId: string; + targetId: string; + appliedAtMs: number; + expiresAtMs: number; +} + +export interface RomPriestChampionHealingEffectEvent { + casterId: string; + occurredAtMs: number; + kind: "direct-cast" | "hot-tick" | "channel-pulse"; +} + +export interface RomPriestChampionBeaconHeal { + targetId: string; + amount: number; +} + +/** + * Creates the source-described 30-second Beacon state. The caller is + * responsible for validating that targetId is a friendly party member. + */ +export function createRomPriestChampionBeaconState( + casterId: string, + targetId: string, + appliedAtMs: number, +): RomPriestChampionBeaconState | null { + if (!casterId.trim() || !targetId.trim() || !Number.isFinite(appliedAtMs)) return null; + + return { + casterId, + targetId, + appliedAtMs, + expiresAtMs: appliedAtMs + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_DURATION_MS, + }; +} + +/** + * Current CoA publishes 770 HP at Beacon's maximum +105 skill level. The + * simulator uses that maximum-row value at every unlocked rank because lower + * skill ranks are not modeled separately. The isolated boundary still takes + * the represented skill level explicitly. It counts one direct-heal cast + * once; CoA does not say whether HoT ticks or channel pulses count. + */ +export function resolveRomPriestChampionBeaconHeal( + beacon: RomPriestChampionBeaconState | null, + event: RomPriestChampionHealingEffectEvent, + skillLevel: number | null, +): RomPriestChampionBeaconHeal | null { + if (skillLevel !== ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_SOURCE_SKILL_LEVEL + || !beacon || event.kind !== "direct-cast" || event.casterId !== beacon.casterId + || !Number.isFinite(event.occurredAtMs) || event.occurredAtMs < 0 + || !Number.isFinite(beacon.appliedAtMs) || event.occurredAtMs < beacon.appliedAtMs + || !Number.isFinite(beacon.expiresAtMs) || event.occurredAtMs >= beacon.expiresAtMs) { + return null; + } + + return { + targetId: beacon.targetId, + amount: ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_HEAL_AT_SKILL_LEVEL_105, + }; +} +/** Resolve the active Beacon applied by this caster from shared combat aura state. */ +export function resolveRomPriestChampionBeaconFromAuras( + auras: readonly ActiveAura[], + casterId: string, + occurredAtMs: number, + kind: RomPriestChampionHealingEffectEvent["kind"], +): RomPriestChampionBeaconHeal | null { + const activeAura = auras.find((aura) => aura.sourceId === casterId + && aura.definition.utilityTags?.includes(ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_TAG) + && (aura.expiresAt === null || aura.expiresAt > occurredAtMs)); + if (!activeAura) return null; + const beacon: RomPriestChampionBeaconState = { + casterId: activeAura.sourceId, + targetId: activeAura.targetId, + appliedAtMs: activeAura.appliedAt, + expiresAtMs: activeAura.expiresAt + ?? activeAura.appliedAt + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_DURATION_MS, + }; + return resolveRomPriestChampionBeaconHeal(beacon, { casterId, occurredAtMs, kind }, + ROM_PRIEST_CHAMPION_BEACON_OF_REGENERATION_SOURCE_SKILL_LEVEL); +} diff --git a/src/game/romPriestChampionHeartRuneEnergyRuntime.test.ts b/src/game/romPriestChampionHeartRuneEnergyRuntime.test.ts new file mode 100644 index 00000000..34a51d43 --- /dev/null +++ b/src/game/romPriestChampionHeartRuneEnergyRuntime.test.ts @@ -0,0 +1,168 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { targetingRulesForAbility } from "./abilityRules"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { useCombatStore } from "./combatStore"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { commitPartyAbilityUse } from "./partyAbilityAi"; +import { abilitiesForCharacter } from "./abilityCatalog"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; + +const HEART_RUNE_ENERGY_ID = 498612; +const BLESSING_OF_HUMILITY_ID = 490301; +const TARGET_DISTANCES = [2, 15, 30, 45, 65, 80] as const; +const OUTSIDE_DISTANCE = 80.1; +const TEST_NOW = 1_000; +const heartRuneEnergy = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === HEART_RUNE_ENERGY_ID + && ability.classId === "rom-priest" && ability.secondaryClassId === "rom-champion")!; + +function registerTarget(id: string, distance: number): void { + useCombatStore.getState().registerMob(id, { + name: id, + maxHealth: 1_000_000, + level: 1, + xpReward: 0, + }); + setMobPosition(id, [distance, 0, 0]); + useCombatStore.getState().damageMob(id, 1, 100); +} + +function registerHeartRuneTargets(prefix: string): { insideIds: string[]; outsideId: string } { + const insideIds = TARGET_DISTANCES.map((distance, index) => { + const id = `${prefix}-inside-${index}`; + registerTarget(id, distance); + return id; + }); + const outsideId = `${prefix}-outside`; + registerTarget(outsideId, OUTSIDE_DISTANCE); + return { insideIds, outsideId }; +} + +function abilityDamageTargets(abilityId: string, sourceActorId?: string): string[] { + return useCombatStore.getState().combatEvents + .filter((event) => event.kind === "damage" + && event.abilityId === abilityId + && (!sourceActorId || event.sourceActorId === sourceActorId) + && event.school === "holy" + && event.effectiveAmount > 0) + .map((event) => event.targetActorId) + .sort(); +} + +describe("RoM Priest/Champion Heart Rune Energy runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + secondaryClassId: "rom-champion", + raceId: "rom-human", + level: 80, + role: "damage", + }); + usePartyStore.getState().initializeParty("rom-priest-heart-rune-energy", 80, + useCombatStore.getState().health, "damage", 2, "rom"); + }); + + it("executes the caster-centered 80-radius Light hit for every catalog-eligible target and reduces Blessing cooldown", () => { + const { insideIds, outsideId } = registerHeartRuneTargets("heart-rune-player"); + const blessing = useCombatStore.getState().abilities.find((ability) => ( + ability.dbcSpellId === BLESSING_OF_HUMILITY_ID + ))!; + useCombatStore.setState((state) => ({ + resourcePools: { ...state.resourcePools, rage: 50 }, + cooldowns: { ...state.cooldowns, [blessing.id]: TEST_NOW + 60_000 }, + })); + useCombatStore.getState().selectMob(insideIds[0]!); + + const result = useCombatStore.getState().castAbility(heartRuneEnergy.id, undefined, TEST_NOW); + + expect(result).toMatchObject({ ok: true }); + expect(useCombatStore.getState().resourcePools.rage).toBe(35); + expect(useCombatStore.getState().cooldowns[heartRuneEnergy.id]).toBe(TEST_NOW + 12_000); + expect(useCombatStore.getState().cooldowns[blessing.id]).toBe(TEST_NOW + 45_000); + expect(abilityDamageTargets(heartRuneEnergy.id)).toEqual(insideIds.sort()); + expect(abilityDamageTargets(heartRuneEnergy.id)).not.toContain(outsideId); + }); + + it("executes for generated Priest/Champion companions with the same radius, no configured target cap, and cooldown rider", () => { + const { insideIds, outsideId } = registerHeartRuneTargets("heart-rune-companion"); + const seed = "rom-priest-heart-rune-energy-companion"; + const blessing = abilitiesForCharacter("rom-priest", "rom-champion") + .find((ability) => ability.dbcSpellId === BLESSING_OF_HUMILITY_ID)!; + const member = createConfiguredPartyMember({ + name: "Priest Champion", + classId: "rom-priest", + secondaryClassId: "rom-champion", + specialization: "Primary", + role: "damage", + }, 80, 0, seed); + const fundedMember = { + ...member, + resourcePools: { ...member.resourcePools, rage: 50 }, + cooldowns: { ...member.cooldowns, [blessing.id]: TEST_NOW + 60_000 }, + }; + const committedMember = commitPartyAbilityUse(fundedMember, heartRuneEnergy, TEST_NOW); + expect(committedMember).not.toBeNull(); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2, "rom"); + usePartyStore.getState().setCommand("attack"); + usePartyStore.setState({ members: [{ + ...committedMember!, + activeCast: { + abilityId: heartRuneEnergy.id, + school: "holy", + mode: "cast", + startedAt: TEST_NOW, + completesAt: TEST_NOW, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: insideIds[0]!, + }, + activeCastTargetId: insideIds[0]!, + status: "attacking", + }] }); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + for (const id of [...insideIds, outsideId]) updatePartyRuntimeTargetVisibility(member.id, id, true); + useCombatStore.getState().synchronizeActors(); + + advanceDungeonPartyCombat(TEST_NOW); + + const updatedMember = usePartyStore.getState().members.find((candidate) => candidate.id === member.id)!; + expect(updatedMember.resourcePools.rage).toBe(35); + expect(updatedMember.cooldowns[heartRuneEnergy.id]).toBe(TEST_NOW + 12_000); + expect(updatedMember.cooldowns[blessing.id]).toBe(TEST_NOW + 45_000); + expect(abilityDamageTargets(heartRuneEnergy.id, member.id)).toEqual(insideIds.sort()); + expect(abilityDamageTargets(heartRuneEnergy.id, member.id)).not.toContain(outsideId); + }); + + it("keeps the current source radius and leaves target count uncapped because CoA provides no cap", () => { + const targeting = targetingRulesForAbility(heartRuneEnergy); + expect(heartRuneEnergy).toMatchObject({ + target: "self", + range: { max: 150 }, + radius: 80, + castMode: "instant", + castTimeMs: 0, + cooldownMs: 12_000, + cost: { resource: "rage", amount: 15 }, + }); + expect(targeting).toMatchObject({ shape: "circle", radius: 80 }); + expect(targeting.maximumTargets).toBeUndefined(); + expect(heartRuneEnergy.effects).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: "damage", coefficient: 9.751, school: "holy" }), + expect.objectContaining({ + kind: "cooldown-reset", + mode: "reduce", + abilityName: "Blessing of Humility", + amountMs: 15_000, + }), + ])); + }); +}); diff --git a/src/game/romPriestChampionOverrides.test.ts b/src/game/romPriestChampionOverrides.test.ts new file mode 100644 index 00000000..c1c22e5b --- /dev/null +++ b/src/game/romPriestChampionOverrides.test.ts @@ -0,0 +1,56 @@ +import { describe, expect, it } from "vitest"; +import type { AbilityDefinition } from "./abilityCatalog"; +import { + ROM_PRIEST_CHAMPION_RAGE_CONTROL_PER_COMPLETED_CHANNEL_SECOND, + ROM_PRIEST_WARRIOR_CONDENSED_RAGE_PHYSICAL_DAMAGE_BONUS, + romPriestChampionRageControlGain, + romPriestChampionCooldownOverride, + romPriestVowOfSilenceDurationMs, + romPriestWarriorCondensedRagePhysicalDamageMultiplier, +} from "./romPriestChampionOverrides"; + +describe("current CoA Priest/Warrior Condensed Rage", () => { + it("adds 22% Physical Damage only when the passive is learned", () => { + expect(ROM_PRIEST_WARRIOR_CONDENSED_RAGE_PHYSICAL_DAMAGE_BONUS).toBe(0.22); + expect(romPriestWarriorCondensedRagePhysicalDamageMultiplier(true)).toBe(1.22); + expect(romPriestWarriorCondensedRagePhysicalDamageMultiplier(false)).toBe(1); + }); +}); + +describe("current CoA Priest/Champion Rage Control", () => { + it("grants 20 Rage for each completed second of channeling", () => { + expect(ROM_PRIEST_CHAMPION_RAGE_CONTROL_PER_COMPLETED_CHANNEL_SECOND).toBe(20); + expect(romPriestChampionRageControlGain(true, { kind: "channel", durationMs: 1_000 })).toBe(20); + expect(romPriestChampionRageControlGain(true, { kind: "channel", durationMs: 2_000 })).toBe(40); + expect(romPriestChampionRageControlGain(true, { kind: "channel", durationMs: 2_500 })).toBe(40); + }); + + it("does not award partial seconds, ordinary cast time, or Rage Control without the passive", () => { + expect(romPriestChampionRageControlGain(true, { kind: "channel", durationMs: 999 })).toBe(0); + expect(romPriestChampionRageControlGain(true, { kind: "ordinary-cast", durationMs: 3_000 })).toBe(0); + expect(romPriestChampionRageControlGain(false, { kind: "channel", durationMs: 3_000 })).toBe(0); + }); + + it("returns zero for invalid or non-positive channel durations", () => { + expect(romPriestChampionRageControlGain(true, { kind: "channel", durationMs: 0 })).toBe(0); + expect(romPriestChampionRageControlGain(true, { kind: "channel", durationMs: -1 })).toBe(0); + expect(romPriestChampionRageControlGain(true, { kind: "channel", durationMs: Number.NaN })).toBe(0); + expect(romPriestChampionRageControlGain(true, { kind: "channel", durationMs: Number.POSITIVE_INFINITY })).toBe(0); + }); + + it("does not retain the local Infused Light Chain cooldown rider for ID 498610", () => { + const chain = { + source: "runewaker", + classId: "rom-priest", + dbcSpellId: 491164, + } as AbilityDefinition; + expect(romPriestChampionCooldownOverride(chain, [498610])).toBeNull(); + }); +}); + +describe("current CoA Priest Vow of Silence", () => { + it("uses the 8.4-second NPC and 4.2-second character durations", () => { + expect(romPriestVowOfSilenceDurationMs(false)).toBe(8_400); + expect(romPriestVowOfSilenceDurationMs(true)).toBe(4_200); + }); +}); diff --git a/src/game/romPriestChampionOverrides.ts b/src/game/romPriestChampionOverrides.ts index 154553b6..cefd563b 100644 --- a/src/game/romPriestChampionOverrides.ts +++ b/src/game/romPriestChampionOverrides.ts @@ -1,5 +1,48 @@ import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; +export const ROM_PRIEST_WARRIOR_CONDENSED_RAGE_PHYSICAL_DAMAGE_BONUS = 0.22; +export const ROM_PRIEST_CHAMPION_RAGE_CONTROL_PER_COMPLETED_CHANNEL_SECOND = 20; +export const ROM_PRIEST_CHAMPION_RAGE_CONTROL_CHANNEL_SECOND_MS = 1_000; +export const ROM_PRIEST_VOW_OF_SILENCE_NPC_DURATION_MS = 8_400; +export const ROM_PRIEST_VOW_OF_SILENCE_CHARACTER_DURATION_MS = 4_200; + +/** Current CoA Vow of Silence is 8.4s on NPCs and 4.2s on player targets. */ +export function romPriestVowOfSilenceDurationMs(characterDefender: boolean): number { + return characterDefender + ? ROM_PRIEST_VOW_OF_SILENCE_CHARACTER_DURATION_MS + : ROM_PRIEST_VOW_OF_SILENCE_NPC_DURATION_MS; +} + +/** Current CoA Condensed Rage (493038) passively increases Physical Damage by 22%. */ +export function romPriestWarriorCondensedRagePhysicalDamageMultiplier( + hasCondensedRage: boolean, +): number { + return hasCondensedRage + ? 1 + ROM_PRIEST_WARRIOR_CONDENSED_RAGE_PHYSICAL_DAMAGE_BONUS + : 1; +} + +export type RomPriestChampionRageControlProgress = + | { kind: "channel"; durationMs: number } + | { kind: "ordinary-cast"; durationMs: number }; + +/** + * Current CoA Rage Control (498610) grants 20 Rage per second of channeling. + * Only whole completed channel-seconds pay out; an ordinary cast never counts. + */ +export function romPriestChampionRageControlGain( + learnedRageControl: boolean, + progress: RomPriestChampionRageControlProgress, +): number { + if (!learnedRageControl || progress.kind !== "channel" + || !Number.isFinite(progress.durationMs) || progress.durationMs <= 0) return 0; + + const completedSeconds = Math.floor( + progress.durationMs / ROM_PRIEST_CHAMPION_RAGE_CONTROL_CHANNEL_SECOND_MS, + ); + return completedSeconds * ROM_PRIEST_CHAMPION_RAGE_CONTROL_PER_COMPLETED_CHANNEL_SECOND; +} + export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_ID = "rom-priest-protection-rune-seal-reset"; export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_ACTION_ID = "rom-priest-protection-rune-seal-reset-heart-rune"; export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_AURA_ID = "rom-priest-protection-rune-seal-regenerate"; @@ -23,16 +66,15 @@ const PROTECTION_RUNE_SEAL_REGENERATE_PROC_AURA = { }], }; -/** Infused Light Chain removes Chain of Light's base cooldown for Priest/Champion. */ +/** + * The local Infused Light Chain cooldown rider is not present in current CoA: + * ID 498610 is now Rage Control, so it no longer overrides Chain of Light. + */ export function romPriestChampionCooldownOverride( - ability: AbilityDefinition, - learnedPassiveSourceIds: readonly number[], + _ability: AbilityDefinition, + _learnedPassiveSourceIds: readonly number[], ): number | null { - if (ability.source !== "runewaker" - || ability.classId !== "rom-priest" - || ability.dbcSpellId !== 491164 - || !learnedPassiveSourceIds.includes(498610)) return null; - return 0; + return null; } /** Righteous Explosion removes every modeled harmful effect from the party. */ diff --git a/src/game/romPriestChampionRuntime.test.ts b/src/game/romPriestChampionRuntime.test.ts new file mode 100644 index 00000000..cb5da0d1 --- /dev/null +++ b/src/game/romPriestChampionRuntime.test.ts @@ -0,0 +1,253 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { useCombatStore, type ActiveCast } from "./combatStore"; +import { + advanceDungeonPartyCombat, + resetPartyRuntimeClock, +} from "./partyRuntime"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { abilitiesForCharacter } from "./abilityCatalog"; +import { createConfiguredPartyMember, usePartyStore, type PartyMember } from "./partyStore"; + +function registerTarget(id: string, characterDefender = false): void { + useCombatStore.getState().registerMob(id, { name: id, maxHealth: 100_000, xpReward: 0 }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.setState((state) => ({ + mobs: { + ...state.mobs, + [id]: { ...state.mobs[id]!, characterDefender: characterDefender ? { level: 80 } : undefined }, + }, + })); + useCombatStore.getState().damageMob(id, 1, 100); + for (const member of usePartyStore.getState().members) { + updatePartyRuntimeTargetVisibility(member.id, id, true); + } +} + +function channelCast(abilityId: string, targetId: string, startedAt: number): ActiveCast & NonNullable { + return { + id: 1, + abilityId, + school: "holy", + mode: "channel", + startedAt, + completesAt: startedAt + 4_000, + originalDurationMs: 4_000, + pushbackHits: 0, + origin: [0, 0, 0], + targetId, + groundPosition: null, + totalTicks: 4, + ticksCompleted: 0, + nextTickAt: startedAt + 1_000, + canCastWhileMoving: false, + channelTicksCompleted: 0, + }; +} + +function createPartyPriestChampion(seed: string, cast: NonNullable, targetId: string) { + const member = createConfiguredPartyMember({ + name: "Priest Champion", + classId: "rom-priest", + secondaryClassId: "rom-champion", + specialization: "Primary", + role: "damage", + }, 80, 0, seed); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2, "rom"); + usePartyStore.setState({ members: [{ + ...member, + activeCast: cast, + activeCastTargetId: targetId, + status: "attacking", + }] }); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + return member; +} + +function expectSilenceDuration(targetId: string, now: number, durationMs: number): void { + const mob = useCombatStore.getState().mobs[targetId]!; + expect(mob.statuses).toContainEqual(expect.objectContaining({ kind: "silence", endsAt: now + durationMs })); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + targetId, + expiresAt: now + durationMs, + definition: expect.objectContaining({ name: "Vow of Silence" }), + })); +} + +describe("RoM Priest/Champion Rage Control runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + secondaryClassId: "rom-champion", + raceId: "rom-dwarf", + level: 80, + xp: 0, + }); + usePartyStore.getState().initializeParty("rom-priest-champion-runtime", 80, + useCombatStore.getState().health, "damage", 2, "rom"); + }); + + it("awards Rage for each full second of the player's actual Chain of Light channel", () => { + const targetId = "priest-champion-rage-control-player"; + registerTarget(targetId); + const chain = useCombatStore.getState().abilities.find((ability) => ability.dbcSpellId === 491164)!; + expect(chain).toBeDefined(); + expect(useCombatStore.getState().castAbility(chain.id, { + targetActorId: targetId, + now: 1_000, + }).ok).toBe(true); + const activeCast = useCombatStore.getState().activeCast!; + expect(activeCast).toMatchObject({ mode: "channel", startedAt: 1_000 }); + const expectedRage = Math.floor((activeCast.completesAt - activeCast.startedAt) / 1_000) * 20; + + useCombatStore.getState().tick(0, activeCast.completesAt); + + expect(useCombatStore.getState().activeCast).toBeNull(); + expect(expectedRage).toBeGreaterThan(0); + expect(useCombatStore.getState().resourcePools.rage).toBe(expectedRage); + }); + + it("awards only completed channel seconds on player interruption and skips ordinary casts or the wrong pair", () => { + const initial = useCombatStore.getState(); + const channel = channelCast("rom-priest-primary-9", "unused-target", 1_000); + useCombatStore.setState({ activeCast: channel, resourcePools: { ...initial.resourcePools, rage: 0 } }); + expect(useCombatStore.getState().cancelCast("Interrupted", 2_999)).toBe(true); + expect(useCombatStore.getState().resourcePools.rage).toBe(20); + + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", secondaryClassId: "rom-champion", raceId: "rom-dwarf", level: 80, xp: 0, + }); + const afterReinitialize = useCombatStore.getState(); + useCombatStore.setState({ + activeCast: { ...channel, mode: "cast" }, + resourcePools: { ...afterReinitialize.resourcePools, rage: 0 }, + }); + useCombatStore.getState().cancelCast("Ordinary cast", 4_000); + expect(useCombatStore.getState().resourcePools.rage).toBe(0); + + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", secondaryClassId: "rom-warrior", raceId: "rom-dwarf", level: 80, xp: 0, + }); + const otherPair = useCombatStore.getState(); + useCombatStore.setState({ + activeCast: channel, + resourcePools: { ...otherPair.resourcePools, rage: 0 }, + }); + useCombatStore.getState().cancelCast("Wrong pair", 4_000); + expect(useCombatStore.getState().resourcePools.rage).toBe(0); + }); + + it("awards a generated Priest/Champion companion for its completed channel", () => { + const targetId = "priest-champion-rage-control-party-complete"; + registerTarget(targetId); + const chain = abilitiesForCharacter("rom-priest", "rom-champion") + .find((ability) => ability.dbcSpellId === 491164)!; + const member = createPartyPriestChampion("priest-champion-rage-control-party-complete", + channelCast(chain.id, targetId, 1_000), targetId); + + advanceDungeonPartyCombat(1_000); + advanceDungeonPartyCombat(5_000); + + expect(usePartyStore.getState().members.find((candidate) => candidate.id === member.id)?.resourcePools.rage) + .toBe(80); + }); + + it("awards only full elapsed seconds when a generated companion channel is interrupted", () => { + const targetId = "priest-champion-rage-control-party-interrupted"; + registerTarget(targetId); + const chain = abilitiesForCharacter("rom-priest", "rom-champion") + .find((ability) => ability.dbcSpellId === 491164)!; + const member = createPartyPriestChampion("priest-champion-rage-control-party-interrupted", + channelCast(chain.id, targetId, 1_000), targetId); + + advanceDungeonPartyCombat(1_000); + clearMobRuntimeRegistry(); + advanceDungeonPartyCombat(3_500); + + expect(usePartyStore.getState().members.find((candidate) => candidate.id === member.id)?.resourcePools.rage) + .toBe(40); + }); +}); + +describe("RoM Vow of Silence PvP duration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", secondaryClassId: "rom-champion", raceId: "rom-dwarf", level: 80, xp: 0, + }); + usePartyStore.getState().initializeParty("rom-priest-vow-silence-runtime", 80, + useCombatStore.getState().health, "damage", 2, "rom"); + }); + + it("uses 4.2 seconds for a player target in the player cast path", () => { + const targetId = "vow-player-target"; + registerTarget(targetId, true); + const vow = useCombatStore.getState().abilities.find((ability) => ability.dbcSpellId === 490275)!; + expect(vow).toBeDefined(); + const result = useCombatStore.getState().castAbility(vow.id, { targetActorId: targetId, now: 1_000 }); + expect(result.ok).toBe(true); + const cast = useCombatStore.getState().activeCast; + if (cast) useCombatStore.getState().tick(0, cast.completesAt); + + expectSilenceDuration(targetId, cast?.completesAt ?? 1_000, 4_200); + }); + + it("preserves the 8.4-second NPC duration in the player cast path", () => { + const targetId = "vow-npc-target"; + registerTarget(targetId); + const vow = useCombatStore.getState().abilities.find((ability) => ability.dbcSpellId === 490275)!; + const result = useCombatStore.getState().castAbility(vow.id, { targetActorId: targetId, now: 1_000 }); + expect(result.ok).toBe(true); + const cast = useCombatStore.getState().activeCast; + if (cast) useCombatStore.getState().tick(0, cast.completesAt); + + expectSilenceDuration(targetId, cast?.completesAt ?? 1_000, 8_400); + }); + + it("uses 4.2 seconds for a player target in the generated companion path", () => { + const targetId = "vow-party-target"; + registerTarget(targetId, true); + const vow = abilitiesForCharacter("rom-priest", "rom-champion") + .find((ability) => ability.dbcSpellId === 490275)!; + const member = createConfiguredPartyMember({ + name: "Priest Champion", + classId: "rom-priest", + secondaryClassId: "rom-champion", + specialization: "Primary", + role: "damage", + }, 80, 0, "rom-priest-vow-silence-runtime"); + usePartyStore.setState({ members: [{ + ...member, + activeCast: { + abilityId: vow.id, + school: "frost", + mode: "cast", + startedAt: 1_000, + completesAt: 1_000, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId, + }, + activeCastTargetId: targetId, + status: "attacking", + }] }); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(member.id, targetId, true); + useCombatStore.getState().synchronizeActors(); + + advanceDungeonPartyCombat(1_000); + + expectSilenceDuration(targetId, 1_000, 4_200); + }); +}); diff --git a/src/game/romPriestCoaCatalog.test.ts b/src/game/romPriestCoaCatalog.test.ts new file mode 100644 index 00000000..cdb2d5ce --- /dev/null +++ b/src/game/romPriestCoaCatalog.test.ts @@ -0,0 +1,157 @@ +import { describe, expect, it } from "vitest"; +import { parseTalentModifiers } from "./talentModifiers"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; + +function priestSkill(sourceSkillId: number) { + const ability = ROM_ALL_ABILITIES.find((entry) => entry.dbcSpellId === sourceSkillId); + if (!ability) throw new Error(`Missing Priest source skill ${sourceSkillId}`); + return ability; +} + +describe("current CoA Priest catalog reworks", () => { + it("models Beacon of Regeneration as one 30-second friendly target mark and preserves local costs", () => { + const ability = priestSkill(498620); + expect(ability).toMatchObject({ + name: "Beacon of Regeneration", + classId: "rom-priest", + secondaryClassId: "rom-champion", + target: "friendly", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 30_000, + range: { max: 20 }, + cost: { resource: "mana", amount: 29 }, + }); + expect(ability.costs).toEqual([ + { resource: "mana", amount: 29 }, + { resource: "mana", amount: 1, percentage: true }, + ]); + expect(ability.effects).toHaveLength(1); + expect(ability.effects[0]).toMatchObject({ + kind: "apply-aura", + recipient: "ability-target", + triggerSpellId: 498_620, + aura: { + name: "Beacon of Regeneration", + durationMs: 30_000, + utilityTags: ["rom-priest-champion-beacon-of-regeneration"], + }, + }); + expect(ability.description).toContain("770 at skill level +105 (the maximum)"); + expect(ability.description).toContain("applies this value at every unlocked rank"); + expect(ability.ranks?.[0]?.effects).toEqual(ability.effects); + }); + + it("models 490274 as a passive Wisdom and Light-damage aura", () => { + const ability = priestSkill(490274); + expect(ability).toMatchObject({ + name: "Holy Blessing", + passive: true, + target: "self", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 0, + range: { max: 1 }, + }); + expect(ability.effects).toHaveLength(1); + expect(ability.effects[0]).toMatchObject({ + kind: "apply-aura", + recipient: "caster", + triggerSpellId: 490_274, + aura: { + durationMs: null, + }, + }); + const aura = ability.effects[0].kind === "apply-aura" ? ability.effects[0].aura : undefined; + expect(aura?.modifiers).toEqual(expect.arrayContaining([ + { kind: "stat", stat: "wisdom", operation: "flat", value: 115 }, + { kind: "stat", stat: "wisdom", operation: "percent", value: 0.105 }, + expect.objectContaining({ kind: "damage", direction: "dealt", school: "holy", operation: "percent" }), + ])); + const lightDamage = aura?.modifiers?.find((modifier) => modifier.kind === "damage"); + if (lightDamage?.kind !== "damage") throw new Error("Missing Holy Blessing Light damage modifier"); + expect(lightDamage.value).toBeCloseTo(1.009); + expect(ability.ranks?.[0]?.effects).toEqual(ability.effects); + expect(ability.description).toContain("Wisdom bonus: (current Wisdom + 115) × 10.5% + 115"); + expect(ability.description).toContain("Light Damage bonus: +100.9%"); + expect(parseTalentModifiers(ability.description)).toEqual([]); + }); + + it("models Vow of Silence's interrupt and NPC silence duration with current spell data", () => { + const ability = priestSkill(490275); + expect(ability).toMatchObject({ + name: "Vow of Silence", + target: "hostile", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 18_000, + range: { max: 150 }, + cost: { resource: "mana", amount: 120 }, + }); + expect(ability.effects).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: "interrupt", lockoutMs: 8_400 }), + expect.objectContaining({ + kind: "apply-aura", + control: { kind: "silence" }, + aura: expect.objectContaining({ durationMs: 8_400 }), + }), + ])); + expect(ability.description).toContain("8.4 seconds"); + expect(ability.description).toContain("4.2 seconds against players"); + expect(ability.ranks?.[0]?.description).toContain("Vow of Silence"); + }); + + it("models Holy Void's flat Light hit and 20-second dual-defense reduction", () => { + const ability = priestSkill(490276); + expect(ability).toMatchObject({ + name: "Holy Void", + target: "hostile", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 18_000, + range: { max: 150 }, + cost: { resource: "mana", amount: 10, percentage: true, percentageBasis: "base-mana" }, + }); + expect(ability.effects).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: "damage", basePoints: 1_655, school: "holy" }), + expect.objectContaining({ + kind: "apply-aura", + aura: expect.objectContaining({ + name: "Voidal Infection", + durationMs: 20_000, + modifiers: expect.arrayContaining([ + { kind: "stat", stat: "physical-defense", operation: "percent", value: -0.188 }, + { kind: "stat", stat: "magical-defense", operation: "percent", value: -0.188 }, + ]), + }), + }), + ])); + }); + + it("models Heart Rune Energy's caster-centered damage and cooldown reduction", () => { + const ability = priestSkill(498612); + expect(ability).toMatchObject({ + name: "Heart Rune Energy", + target: "self", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 12_000, + range: { max: 150 }, + radius: 80, + targeting: { shape: "circle", radius: 80 }, + cost: { resource: "rage", amount: 15 }, + }); + expect(ability.effects).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: "damage", coefficient: 9.751, school: "holy" }), + expect.objectContaining({ + kind: "cooldown-reset", + mode: "reduce", + abilityName: "Blessing of Humility", + amountMs: 15_000, + }), + ])); + expect(ability.description).toContain("975.1% CPS Light Damage"); + expect(ability.description).toContain("15 seconds"); + expect(ability.ranks?.[0]?.effects).toEqual(ability.effects); + }); +}); diff --git a/src/game/romPriestHolyBlessing.integration.test.ts b/src/game/romPriestHolyBlessing.integration.test.ts new file mode 100644 index 00000000..cf596861 --- /dev/null +++ b/src/game/romPriestHolyBlessing.integration.test.ts @@ -0,0 +1,153 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { abilityById } from "./abilityCatalog"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { useCombatStore, equipmentAdjustedCombatAmount } from "./combatStore"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition, updatePartyRuntimeTargetVisibility } from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { ROM_PRIEST_HOLY_BLESSING_TAG, romPriestHolyBlessingStats } from "./romPriestHolyBlessingRuntime"; +import { resolveDamageValue } from "./combatAuras"; +import { deriveCharacterStats } from "./wotlkStats"; + +const spell = abilityById("rom-priest-general-1"); +const spellEffect = spell?.effects.find((effect) => effect.kind === "damage"); + +function damageWithSchool(targetId: string, sourceActorId: string, school: "holy" | "nature", now: number) { + return useCombatStore.getState().damageMob( + targetId, + 1_000, + now, + { actorId: sourceActorId, role: "damage" }, + school, + { + attackKind: "spell", + seed: `holy-blessing:${sourceActorId}:${school}:${now}`, + rules: { + canMiss: false, + canCrit: false, + canDodge: false, + canParry: false, + canBlock: false, + }, + }, + ).amount; +} + +describe("RoM Priest Holy Blessing combat integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + raceId: "rom-human", + level: 80, + role: "healer", + }); + usePartyStore.getState().initializeParty( + "rom-priest-holy-blessing-integration", 80, useCombatStore.getState().health, "healer", 2, "rom", + ); + for (const id of ["holy-blessing-holy-target", "holy-blessing-nature-target"]) { + useCombatStore.getState().registerMob(id, { name: id, maxHealth: 100_000, level: 80 }); + setMobPosition(id, [3, 0, 0]); + } + }); + + it("adds the Wisdom-derived spell power to a real player spell amount and buffs only Holy damage", () => { + if (!spell || spellEffect?.kind !== "damage") throw new Error("Missing generated Priest spell damage row"); + const state = useCombatStore.getState(); + const passiveAura = state.auras.find((aura) => aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_BLESSING_TAG)); + expect(passiveAura).toBeDefined(); + const base = deriveCharacterStats("rom-priest", 80, state.gearStats, state.raceId, {}, state.secondaryClassId); + const bonus = romPriestHolyBlessingStats(base, state.auras).spellPowerBonus; + const expectedAmount = equipmentAdjustedCombatAmount(spellEffect, 80, state.gearStats, "rom-priest", spell, bonus); + const unblessedAmount = equipmentAdjustedCombatAmount(spellEffect, 80, state.gearStats, "rom-priest", spell); + const playerSourceAuras = state.auras.filter((aura) => aura.targetId === PLAYER_AGGRO_ID); + const expectedCombatAmount = resolveDamageValue(expectedAmount, playerSourceAuras, { + direction: "dealt", school: "frost", attackKind: "spell", + }); + const unblessedCombatAmount = resolveDamageValue( + unblessedAmount, + playerSourceAuras.filter((aura) => !aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_BLESSING_TAG)), + { direction: "dealt", school: "frost", attackKind: "spell" }, + ); + expect(bonus).toBeGreaterThan(0); + expect(expectedCombatAmount).toBeGreaterThan(unblessedCombatAmount); + + useCombatStore.getState().selectMob("holy-blessing-nature-target"); + expect(useCombatStore.getState().castAbility(spell.id, undefined, 1_000)).toMatchObject({ ok: true }); + useCombatStore.getState().tick(3, 5_000); + const damage = useCombatStore.getState().combatEvents.find((event) => event.kind === "damage" + && event.sourceActorId === PLAYER_AGGRO_ID && event.abilityId === spell.id); + expect(damage).toBeDefined(); + expect(damage?.rawAmount).toBe(Math.round(expectedCombatAmount * (damage?.critical ? 1.5 : 1))); + + const holy = damageWithSchool("holy-blessing-holy-target", PLAYER_AGGRO_ID, "holy", 21_000); + const nature = damageWithSchool("holy-blessing-nature-target", PLAYER_AGGRO_ID, "nature", 22_000); + expect(holy).toBe(2_009); + expect(nature).toBe(1_000); + }); + + it("adds the Wisdom-derived spell power to a generated-companion spell and buffs only Holy damage", () => { + if (!spell || spellEffect?.kind !== "damage") throw new Error("Missing generated Priest spell damage row"); + const seed = "rom-priest-holy-blessing-companion"; + const priest = createConfiguredPartyMember({ + name: "Holy Blessing Priest", + classId: "rom-priest", + specialization: "Primary", + role: "healer", + }, 80, 0, seed); + usePartyStore.setState({ members: [{ + ...priest, + status: "attacking", + resource: 10_000, + maxResource: 10_000, + resourcePools: { ...priest.resourcePools, mana: 10_000 }, + activeCast: { + abilityId: spell.id, + school: "frost", + mode: "cast", + startedAt: 500, + completesAt: 1_000, + originalDurationMs: 500, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: "holy-blessing-nature-target", + }, + activeCastTargetId: "holy-blessing-nature-target", + }] }); + registerPartyRuntimePosition(priest.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(priest.id, "holy-blessing-nature-target", true); + usePartyStore.getState().setCommand("attack"); + useCombatStore.getState().synchronizeActors(); + + const beforeCastAuras = useCombatStore.getState().auras.filter((aura) => aura.targetId === priest.id); + expect(beforeCastAuras.some((aura) => aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_BLESSING_TAG))) + .toBe(false); + advanceDungeonPartyCombat(1_000); + + const state = useCombatStore.getState(); + const companionAura = state.auras.filter((aura) => aura.targetId === priest.id); + expect(companionAura.some((aura) => aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_BLESSING_TAG))) + .toBe(true); + const base = deriveCharacterStats( + priest.classId, priest.level, priest.gearStats, priest.raceId, {}, priest.secondaryClassId, + ); + const bonus = romPriestHolyBlessingStats(base, companionAura).spellPowerBonus; + const expectedAmount = equipmentAdjustedCombatAmount(spellEffect, 80, priest.gearStats, "rom-priest", spell, bonus); + const unblessedAmount = equipmentAdjustedCombatAmount(spellEffect, 80, priest.gearStats, "rom-priest", spell); + expect(bonus).toBeGreaterThan(0); + expect(expectedAmount).toBeGreaterThan(unblessedAmount); + const damage = state.combatEvents.find((event) => event.kind === "damage" + && event.sourceActorId === priest.id && event.abilityId === spell.id); + expect(damage).toBeDefined(); + expect(damage?.rawAmount).toBe(expectedAmount); + + const holy = damageWithSchool("holy-blessing-holy-target", priest.id, "holy", 5_000); + const nature = damageWithSchool("holy-blessing-nature-target", priest.id, "nature", 6_000); + expect(holy).toBe(2_009); + expect(nature).toBe(1_000); + }); +}); diff --git a/src/game/romPriestHolyBlessingRuntime.test.ts b/src/game/romPriestHolyBlessingRuntime.test.ts new file mode 100644 index 00000000..c3b267db --- /dev/null +++ b/src/game/romPriestHolyBlessingRuntime.test.ts @@ -0,0 +1,101 @@ +import { describe, expect, it } from "vitest"; +import { applyAura } from "./combatAuras"; +import { + ROM_PRIEST_HOLY_BLESSING, + ROM_PRIEST_HOLY_BLESSING_PASSIVE_EFFECT, + ROM_PRIEST_HOLY_BLESSING_TAG, + romPriestHolyBlessingEffects, + romPriestHolyBlessingStats, + romPriestHolyBlessingWisdom, +} from "./romPriestHolyBlessingRuntime"; + +const holyBlessing = { + classId: "rom-priest", + sourceSkillId: 490_274, + name: "Holy Blessing", + description: "Current CoA Wisdom and Light damage passive.", + passive: true, +}; + +describe("RoM Priest Holy Blessing", () => { + it("applies the current-Wisdom formula as one flat-then-percent stat stage", () => { + expect(ROM_PRIEST_HOLY_BLESSING).toEqual({ + spellId: 490_274, + wisdomFlat: 115, + wisdomPercent: 10.5, + lightDamagePercent: 100.9, + }); + expect(romPriestHolyBlessingWisdom(0)).toBeCloseTo((0 + 115) * 1.105); + expect(romPriestHolyBlessingWisdom(320)).toBeCloseTo((320 + 115) * 1.105); + expect(romPriestHolyBlessingWisdom(-20)).toBeCloseTo(115 * 1.105); + expect(romPriestHolyBlessingWisdom(Number.NaN)).toBeCloseTo(115 * 1.105); + }); + + it("resolves other Wisdom buffs first and returns only the incremental derived spell power", () => { + const blessingAura = ROM_PRIEST_HOLY_BLESSING_PASSIVE_EFFECT.aura; + const existingWisdomAura = { + id: "test:wisdom-buff", + name: "Existing Wisdom buff", + disposition: "buff" as const, + durationMs: null, + modifiers: [{ kind: "stat" as const, stat: "wisdom", operation: "percent" as const, value: 0.12 }], + }; + const spellPowerAura = { + id: "test:spell-power-buff", + name: "Existing spell power buff", + disposition: "buff" as const, + durationMs: null, + modifiers: [{ kind: "stat" as const, stat: "spell-power", operation: "percent" as const, value: 0.5 }], + }; + const auraFor = (definition: typeof blessingAura | typeof existingWisdomAura | typeof spellPowerAura) => ( + applyAura([], { definition, sourceId: "priest", targetId: "priest", now: 0 }).aura + ); + const blessing = auraFor(blessingAura); + const wisdomBuff = auraFor(existingWisdomAura); + const spellPowerBuff = auraFor(spellPowerAura); + const withoutSpellPowerAura = romPriestHolyBlessingStats( + { intellect: 200, spirit: 100 }, [blessing, wisdomBuff], + ); + const withSpellPowerAura = romPriestHolyBlessingStats( + { intellect: 200, spirit: 100 }, [blessing, wisdomBuff, spellPowerBuff], + ); + + expect(withSpellPowerAura.currentWisdom).toBeCloseTo(100 * 1.12); + expect(withSpellPowerAura.wisdom).toBeCloseTo((100 * 1.12 + 115) * 1.105); + expect(withSpellPowerAura.spellPowerBonus).toBe( + Math.round(200 * 0.35 + withSpellPowerAura.wisdom * 0.15) + - Math.round(200 * 0.35 + withSpellPowerAura.currentWisdom * 0.15), + ); + expect(withSpellPowerAura.spellPowerBonus).toBe(withoutSpellPowerAura.spellPowerBonus); + }); + + it("defines a permanent caster aura with Wisdom and Light-only damage modifiers", () => { + const effect = ROM_PRIEST_HOLY_BLESSING_PASSIVE_EFFECT; + expect(effect).toMatchObject({ + kind: "apply-aura", + recipient: "caster", + triggerSpellId: 490_274, + aura: { + id: ROM_PRIEST_HOLY_BLESSING_TAG, + durationMs: null, + maxStacks: 1, + utilityTags: [ROM_PRIEST_HOLY_BLESSING_TAG], + modifiers: [ + { kind: "stat", stat: "wisdom", operation: "flat", value: 115 }, + { kind: "stat", stat: "wisdom", operation: "percent", value: 0.105 }, + { kind: "damage", direction: "dealt", school: "holy", operation: "percent" }, + ], + }, + }); + const lightDamage = effect.aura.modifiers?.find((modifier) => modifier.kind === "damage"); + if (lightDamage?.kind !== "damage") throw new Error("Missing Holy Blessing Light damage modifier"); + expect(lightDamage.value).toBeCloseTo(1.009); + }); + + it("only replaces the Priest primary spell's generated effects", () => { + expect(romPriestHolyBlessingEffects(holyBlessing)).toEqual([ROM_PRIEST_HOLY_BLESSING_PASSIVE_EFFECT]); + expect(romPriestHolyBlessingEffects({ ...holyBlessing, secondaryClassId: "rom-mage" })).toBeNull(); + expect(romPriestHolyBlessingEffects({ ...holyBlessing, classId: "rom-mage" })).toBeNull(); + expect(romPriestHolyBlessingEffects({ ...holyBlessing, sourceSkillId: 490_275 })).toBeNull(); + }); +}); diff --git a/src/game/romPriestHolyBlessingRuntime.ts b/src/game/romPriestHolyBlessingRuntime.ts new file mode 100644 index 00000000..a20cf550 --- /dev/null +++ b/src/game/romPriestHolyBlessingRuntime.ts @@ -0,0 +1,114 @@ +import type { AbilityEffect } from "./abilityCatalog"; +import { resolveDamageValue, resolveStatValue, type ActiveAura, type DamageSchool } from "./combatAuras"; +import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; + +export const ROM_PRIEST_HOLY_BLESSING = Object.freeze({ + spellId: 490_274, + wisdomFlat: 115, + wisdomPercent: 10.5, + lightDamagePercent: 100.9, +}); + +export const ROM_PRIEST_HOLY_BLESSING_TAG = "rom-priest:490274:holy-blessing"; + +/** Resolve CoA's `(current Wisdom + 115) × 10.5% + 115` stat stage. */ +export function romPriestHolyBlessingWisdom(currentWisdom: number): number { + const wisdom = Number.isFinite(currentWisdom) ? Math.max(0, currentWisdom) : 0; + return (wisdom + ROM_PRIEST_HOLY_BLESSING.wisdomFlat) + * (1 + ROM_PRIEST_HOLY_BLESSING.wisdomPercent / 100); +} + +export interface RomPriestHolyBlessingStats { + readonly intellect: number; + readonly currentWisdom: number; + readonly wisdom: number; + readonly spellPowerBonus: number; + readonly active: boolean; +} + +/** + * Resolve existing primary-stat modifiers first, then apply Holy Blessing to + * that current Wisdom. Its spell-power bonus is only the incremental Spirit + * conversion; generic spell-power aura modifiers remain on their normal path. + */ +export function romPriestHolyBlessingStats( + base: { readonly intellect: number; readonly spirit: number }, + auras: readonly ActiveAura[], +): RomPriestHolyBlessingStats { + const active = auras.some((aura) => aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_BLESSING_TAG)); + const existingAuras = active + ? auras.filter((aura) => !aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_BLESSING_TAG)) + : auras; + const primary = (value: number, ...names: string[]) => names.reduce( + (current, stat) => resolveStatValue(current, existingAuras, stat), + value, + ); + const intellect = primary(base.intellect, "intellect", "all-primary", "all-primary-attributes"); + const currentWisdom = primary(base.spirit, "spirit", "wisdom", "all-primary", "all-primary-attributes"); + const wisdom = active ? romPriestHolyBlessingWisdom(currentWisdom) : currentWisdom; + const spellPowerBonus = active + ? Math.round(intellect * 0.35 + wisdom * 0.15) + - Math.round(intellect * 0.35 + currentWisdom * 0.15) + : 0; + return { intellect, currentWisdom, wisdom, spellPowerBonus, active }; +} + +/** Apply Holy Blessing's source-only Light/Holy damage modifier without widening its school scope. */ +export function romPriestHolyBlessingDamage( + amount: number, + auras: readonly ActiveAura[], + school: DamageSchool, +): number { + const blessingAuras = auras.filter((aura) => aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_BLESSING_TAG)); + return resolveDamageValue(amount, blessingAuras, { direction: "dealt", school, attackKind: "spell" }); +} + +export const ROM_PRIEST_HOLY_BLESSING_PASSIVE_EFFECT: Extract = { + kind: "apply-aura", + recipient: "caster", + aura: { + id: ROM_PRIEST_HOLY_BLESSING_TAG, + name: "Holy Blessing", + description: "Increases Wisdom by (current Wisdom + 115) × 10.5% + 115 and Light Damage by 100.9%.", + disposition: "buff", + durationMs: null, + maxStacks: 1, + stackBehavior: "refresh", + utilityTags: [ROM_PRIEST_HOLY_BLESSING_TAG], + modifiers: [ + { + kind: "stat", + stat: "wisdom", + operation: "flat", + value: ROM_PRIEST_HOLY_BLESSING.wisdomFlat, + }, + { + kind: "stat", + stat: "wisdom", + operation: "percent", + value: ROM_PRIEST_HOLY_BLESSING.wisdomPercent / 100, + }, + { + kind: "damage", + direction: "dealt", + school: "holy", + operation: "percent", + value: ROM_PRIEST_HOLY_BLESSING.lightDamagePercent / 100, + }, + ], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: ROM_PRIEST_HOLY_BLESSING.wisdomPercent, + triggerSpellId: ROM_PRIEST_HOLY_BLESSING.spellId, +}; + +/** Holy Blessing belongs only to the Priest primary skill set. */ +export function romPriestHolyBlessingEffects( + row: RomGeneratedAbilityLike, +): readonly AbilityEffect[] | null { + if (row.classId !== "rom-priest" + || row.secondaryClassId !== undefined + || row.sourceSkillId !== ROM_PRIEST_HOLY_BLESSING.spellId) return null; + return [ROM_PRIEST_HOLY_BLESSING_PASSIVE_EFFECT]; +} diff --git a/src/game/romPriestHolyCandle.integration.test.ts b/src/game/romPriestHolyCandle.integration.test.ts new file mode 100644 index 00000000..4c367e85 --- /dev/null +++ b/src/game/romPriestHolyCandle.integration.test.ts @@ -0,0 +1,277 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { abilityById, type AbilityDefinition } from "./abilityCatalog"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { channelPulseAt, channelPulseCount } from "./combatChannelAmounts"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { ROM_PRIEST_HOLY_CANDLE_TAG } from "./romPriestHolyCandleRuntime"; + +const candle = abilityById("rom-priest-primary-17")!; +const heal = abilityById("rom-priest-primary-2")!; +const groupHeal = abilityById("rom-priest-primary-8")!; +const divineHymn = abilityById("wow335-priest-divine-hymn")!; + +function setPlayerMana(amount: number): void { + useCombatStore.setState((state) => ({ + resource: amount, + maxResource: amount, + maxResourcePools: { ...state.maxResourcePools, mana: amount }, + resourcePools: { ...state.resourcePools, mana: amount }, + })); +} + +function candleSelfDamageEvents(ownerActorId = PLAYER_AGGRO_ID) { + return useCombatStore.getState().combatEvents.filter((event) => event.kind === "damage" + && event.sourceActorId === ownerActorId && event.targetActorId === ownerActorId + && [heal.id, groupHeal.id, divineHymn.id, "rom-priest-test-holy-candle-hot"].includes(event.abilityId ?? "")); +} + +function partyMember(name: string, classId: "rom-priest" | "rom-warrior", role: "healer" | "tank", index: number) { + return createConfiguredPartyMember({ + name, + classId, + raceId: "rom-human", + specialization: "Primary", + role, + }, 80, index, "rom-priest-holy-candle-integration"); +} + +describe("RoM Priest Holy Candle combat integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + raceId: "rom-human", + level: 80, + role: "healer", + }); + usePartyStore.getState().initializeParty( + "rom-priest-holy-candle-integration", 80, useCombatStore.getState().health, "healer", 2, "rom", + ); + usePartyStore.getState().setCommand("stop"); + setPlayerMana(10_000); + }); + + it("charges once for an accepted direct heal even when it overheals its full-health target", () => { + const target = partyMember("Full-health heal target", "rom-warrior", "tank", 0); + usePartyStore.setState({ members: [target] }); + registerPartyRuntimePosition(target.id, [2, 0, 0]); + useCombatStore.getState().synchronizeActors(); + expect(useCombatStore.getState().castAbility(candle.id, undefined, 1_000)).toMatchObject({ ok: true }); + expect(useCombatStore.getState().auras.some((aura) => aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_CANDLE_TAG))).toBe(true); + + const maxHealth = useCombatStore.getState().maxHealth; + useCombatStore.setState({ health: maxHealth }); + const healCast = useCombatStore.getState().castAbility(heal.id, { + targetActorId: target.id, + now: 3_000, + }); + expect(healCast).toMatchObject({ ok: true }); + useCombatStore.getState().tick(2, 5_000); + + expect(candleSelfDamageEvents()).toHaveLength(1); + expect(candleSelfDamageEvents()[0]).toMatchObject({ + rawAmount: Math.round(maxHealth * 0.12), + effectiveAmount: Math.round(maxHealth * 0.12), + }); + expect(useCombatStore.getState().health).toBe(maxHealth - Math.round(maxHealth * 0.12)); + }); + + it("charges once before Group Heal fans out to multiple recipients", () => { + const first = partyMember("Candle ally one", "rom-warrior", "tank", 0); + const second = partyMember("Candle ally two", "rom-warrior", "tank", 1); + usePartyStore.setState({ members: [first, second].map((member) => ({ + ...member, + health: Math.max(1, Math.floor(member.maxHealth * 0.45)), + })) }); + registerPartyRuntimePosition(first.id, [3, 0, 0]); + registerPartyRuntimePosition(second.id, [5, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + expect(useCombatStore.getState().castAbility(candle.id, undefined, 1_000)).toMatchObject({ ok: true }); + const before = usePartyStore.getState().members.map((member) => member.health); + expect(useCombatStore.getState().castAbility(groupHeal.id, undefined, 3_000)).toMatchObject({ ok: true }); + useCombatStore.getState().tick(3, 6_000); + + const after = usePartyStore.getState().members.map((member) => member.health); + expect(after[0]).toBeGreaterThan(before[0]!); + expect(after[1]).toBeGreaterThan(before[1]!); + expect(candleSelfDamageEvents()).toHaveLength(1); + expect(candleSelfDamageEvents()[0]?.abilityId).toBe(groupHeal.id); + }); + + it("does not charge while inactive and shares the one-second limit across heal spell IDs per owner", () => { + expect(useCombatStore.getState().triggerRomPriestHolyCandle(PLAYER_AGGRO_ID, heal.id, 1_000)).toBe(0); + expect(useCombatStore.getState().castAbility(candle.id, undefined, 2_000)).toMatchObject({ ok: true }); + + expect(useCombatStore.getState().triggerRomPriestHolyCandle(PLAYER_AGGRO_ID, heal.id, 3_000)).toBeGreaterThan(0); + expect(useCombatStore.getState().triggerRomPriestHolyCandle(PLAYER_AGGRO_ID, groupHeal.id, 3_999)).toBe(0); + expect(useCombatStore.getState().triggerRomPriestHolyCandle(PLAYER_AGGRO_ID, groupHeal.id, 4_000)).toBeGreaterThan(0); + expect(candleSelfDamageEvents()).toHaveLength(2); + + const companion = partyMember("Candle Priest", "rom-priest", "healer", 0); + usePartyStore.setState({ members: [companion] }); + registerPartyRuntimePosition(companion.id, [1, 0, 0]); + useCombatStore.getState().synchronizeActors(); + const aura = candle.effects.find((effect) => effect.kind === "apply-aura"); + if (!aura || aura.kind !== "apply-aura") throw new Error("Holy Candle aura effect is missing"); + useCombatStore.getState().applyActorAura(companion.id, companion.id, candle, aura, 2_000); + + // The throttle is per owner: this Priest can charge at the same timestamp as the player. + expect(useCombatStore.getState().triggerRomPriestHolyCandle(companion.id, heal.id, 4_000)).toBeGreaterThan(0); + expect(candleSelfDamageEvents(companion.id)).toHaveLength(1); + }); + + it("does not charge an invalid or interrupted heal cast", () => { + const target = partyMember("Interrupted heal target", "rom-warrior", "tank", 0); + usePartyStore.setState({ members: [target] }); + registerPartyRuntimePosition(target.id, [2, 0, 0]); + useCombatStore.getState().synchronizeActors(); + expect(useCombatStore.getState().castAbility(candle.id, undefined, 1_000)).toMatchObject({ ok: true }); + + expect(useCombatStore.getState().castAbility(heal.id, { + targetActorId: "missing-friendly-target", + now: 3_000, + })).toMatchObject({ ok: false, reason: "target-unavailable" }); + expect(candleSelfDamageEvents()).toHaveLength(0); + + expect(useCombatStore.getState().castAbility(heal.id, { + targetActorId: target.id, + now: 3_000, + })).toMatchObject({ ok: true }); + expect(useCombatStore.getState().cancelCast("test interruption", 3_500)).toBe(true); + useCombatStore.getState().tick(2, 5_000); + expect(candleSelfDamageEvents()).toHaveLength(0); + }); + + it("charges once when a HoT is applied and never again on its periodic healing ticks", () => { + const target = partyMember("Periodic heal target", "rom-warrior", "tank", 0); + usePartyStore.setState({ members: [{ ...target, health: 1 }] }); + registerPartyRuntimePosition(target.id, [2, 0, 0]); + useCombatStore.getState().synchronizeActors(); + expect(useCombatStore.getState().castAbility(candle.id, undefined, 1_000)).toMatchObject({ ok: true }); + + const hotAbility: AbilityDefinition = { + ...heal, + id: "rom-priest-test-holy-candle-hot", + dbcSpellId: 990_304, + name: "Holy Candle HoT regression fixture", + target: "friendly", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 0, + costs: [], + cost: { resource: "mana", amount: 0 }, + ranks: undefined, + effects: [{ + kind: "hot", + coefficient: 0, + basePoints: 100, + ticks: 3, + intervalMs: 1_000, + }], + }; + useCombatStore.setState((state) => ({ abilities: [...state.abilities, hotAbility] })); + expect(useCombatStore.getState().castAbility(hotAbility.id, { + targetActorId: target.id, + now: 3_000, + })).toMatchObject({ ok: true }); + expect(candleSelfDamageEvents()).toHaveLength(1); + + useCombatStore.getState().tick(1, 4_000); + useCombatStore.getState().tick(1, 5_000); + useCombatStore.getState().tick(1, 6_000); + expect(candleSelfDamageEvents()).toHaveLength(1); + }); + + it("charges a generated Priest companion once when its accepted heal cast resolves", () => { + const caster = partyMember("Holy Candle Priest", "rom-priest", "healer", 0); + const target = partyMember("Candle heal target", "rom-warrior", "tank", 1); + usePartyStore.setState({ members: [ + { + ...caster, + resource: 10_000, + maxResource: 10_000, + resourcePools: { ...caster.resourcePools, mana: 10_000 }, + activeCast: { + abilityId: heal.id, + school: "holy", + mode: "cast", + startedAt: 1_000, + completesAt: 2_000, + originalDurationMs: 1_000, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: target.id, + }, + activeCastTargetId: target.id, + status: "healing", + }, + { ...target, health: 1 }, + ] }); + registerPartyRuntimePosition(caster.id, [0, 0, 0]); + registerPartyRuntimePosition(target.id, [2, 0, 0]); + useCombatStore.getState().synchronizeActors(); + const aura = candle.effects.find((effect) => effect.kind === "apply-aura"); + if (!aura || aura.kind !== "apply-aura") throw new Error("Holy Candle aura effect is missing"); + useCombatStore.getState().applyActorAura(caster.id, caster.id, candle, aura, 1_000); + + const maxHealth = caster.maxHealth; + advanceDungeonPartyCombat(2_000); + + expect(candleSelfDamageEvents(caster.id)).toHaveLength(1); + expect(candleSelfDamageEvents(caster.id)[0]).toMatchObject({ + abilityId: heal.id, + rawAmount: Math.round(maxHealth * 0.12), + effectiveAmount: Math.round(maxHealth * 0.12), + }); + expect(usePartyStore.getState().members.find((member) => member.id === caster.id)?.health) + .toBe(maxHealth - Math.round(maxHealth * 0.12)); + expect(usePartyStore.getState().members.find((member) => member.id === target.id)?.health).toBeGreaterThan(1); + }); + + it("persists the channel-cast guard across pulses more than one second apart", () => { + const durationMs = divineHymn.castTimeMs; + const startedAt = 10_000; + const totalTicks = channelPulseCount(divineHymn); + const nextTickAt = channelPulseAt(divineHymn, startedAt, durationMs, 0); + expect(divineHymn.castMode).toBe("channel"); + + expect(useCombatStore.getState().castAbility(candle.id, undefined, 1_000)).toMatchObject({ ok: true }); + useCombatStore.setState((state) => ({ + health: Math.floor(state.maxHealth * 0.5), + activeCast: { + id: 9001, + abilityId: divineHymn.id, + targetId: null, + mode: "channel", + startedAt, + completesAt: startedAt + durationMs, + originalDurationMs: durationMs, + pushbackHits: 0, + school: "holy", + canCastWhileMoving: false, + origin: [0, 0, 0], + groundPosition: null, + totalTicks, + ticksCompleted: 0, + nextTickAt, + }, + })); + + useCombatStore.getState().tick(0, nextTickAt); + expect(useCombatStore.getState().activeCast?.romPriestHolyCandleCharged).toBe(true); + const secondPulseAt = channelPulseAt(divineHymn, startedAt, durationMs, 1); + expect(secondPulseAt - nextTickAt).toBeGreaterThan(1_000); + useCombatStore.getState().tick(0, secondPulseAt); + + expect(candleSelfDamageEvents()).toHaveLength(1); + expect(useCombatStore.getState().activeCast?.romPriestHolyCandleCharged).toBe(true); + }); +}); diff --git a/src/game/romPriestHolyCandle.test.ts b/src/game/romPriestHolyCandle.test.ts new file mode 100644 index 00000000..fa8f300b --- /dev/null +++ b/src/game/romPriestHolyCandle.test.ts @@ -0,0 +1,128 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_PRIEST_HOLY_CANDLE, + ROM_PRIEST_HOLY_CANDLE_COST, + ROM_PRIEST_HOLY_CANDLE_TAG, + romPriestHolyCandleCanChargeAt, + romPriestHolyCandleEffects, + romPriestHolyCandleIsActive, + romPriestHolyCandleSelfDamageAmount, +} from "./romPriestHolyCandleRuntime"; +import { romPriestDescription } from "./romPriestTooltips"; + +const holyCandle = ROM_ALL_ABILITIES.find((ability) => ( + ability.classId === "rom-priest" + && ability.secondaryClassId === undefined + && ability.dbcSpellId === ROM_PRIEST_HOLY_CANDLE.spellId +)); + +describe("current CoA Priest Holy Candle", () => { + it("uses the sourced healing bonus, distinct 5% Mana activation cost, and local 60-second duration", () => { + expect(holyCandle).toBeDefined(); + expect(holyCandle?.range.max).toBe(1); + expect(holyCandle?.costs).toEqual([ROM_PRIEST_HOLY_CANDLE_COST]); + expect(holyCandle?.cooldownMs).toBe(ROM_PRIEST_HOLY_CANDLE.cooldownMs); + expect(holyCandle?.costs).toEqual([{ + resource: "mana", + amount: 5, + percentage: true, + }]); + expect(holyCandle?.effects).toHaveLength(1); + const auraEffect = holyCandle?.effects[0]; + expect(auraEffect?.kind).toBe("apply-aura"); + if (auraEffect?.kind !== "apply-aura") throw new Error("Holy Candle aura is missing"); + expect(auraEffect.aura).toMatchObject({ + id: ROM_PRIEST_HOLY_CANDLE_TAG, + name: "Holy Candle", + durationMs: 60_000, + utilityTags: [ROM_PRIEST_HOLY_CANDLE_TAG], + modifiers: [{ + kind: "healing", + direction: "done", + operation: "percent", + value: 0.27, + }], + }); + expect(holyCandle?.description).toContain("Costs 5% Mana"); + expect(holyCandle?.description).toContain("Cooldown: 30 seconds"); + expect(holyCandle?.description).toContain("27%"); + expect(holyCandle?.description).toContain("12% of your maximum health"); + expect(holyCandle?.description).toContain("once per second"); + expect(holyCandle?.ranks?.[0]?.costs).toEqual(holyCandle?.costs); + expect(holyCandle?.ranks?.[0]?.effects).toEqual(holyCandle?.effects); + expect(romPriestDescription(490_304, "old text")).toBe(holyCandle?.description); + }); + + it("applies only to the Priest-primary row and removes the old periodic drain effect", () => { + const localAura = holyCandle?.effects.find((effect) => effect.kind === "apply-aura"); + expect(localAura).toBeDefined(); + if (!localAura || localAura.kind !== "apply-aura") throw new Error("Holy Candle aura is missing"); + const periodic = { kind: "dot", coefficient: 0, basePoints: 6, ticks: 3, intervalMs: 1_000 } as const; + expect(romPriestHolyCandleEffects({ + classId: "rom-priest", + sourceSkillId: 490_304, + name: "Holy Candle", + description: "local row", + }, [localAura, periodic])).toEqual([localAura]); + expect(romPriestHolyCandleEffects({ + classId: "rom-priest", + secondaryClassId: "rom-knight", + sourceSkillId: 490_304, + name: "Holy Candle", + description: "different pair", + }, [localAura, periodic])).toBeNull(); + expect(romPriestHolyCandleEffects({ + classId: "rom-knight", + sourceSkillId: 490_304, + name: "Holy Candle", + description: "different class", + }, [localAura, periodic])).toBeNull(); + }); + + it("replaces only the local healing-done modifier and preserves other aura modifiers", () => { + const localAura = holyCandle?.effects.find((effect) => effect.kind === "apply-aura"); + expect(localAura?.kind).toBe("apply-aura"); + if (localAura?.kind !== "apply-aura") throw new Error("Holy Candle aura is missing"); + const alreadyTranslated = { + ...localAura, + aura: { + ...localAura.aura, + modifiers: [ + { kind: "healing", direction: "done", operation: "percent", value: 0.05 } as const, + { kind: "stat", stat: "wisdom", operation: "flat", value: 2 } as const, + ], + }, + }; + const effects = romPriestHolyCandleEffects({ + classId: "rom-priest", + sourceSkillId: 490_304, + name: "Holy Candle", + description: "local row", + }, [alreadyTranslated]); + const aura = effects?.[0]; + expect(aura?.kind).toBe("apply-aura"); + if (aura?.kind !== "apply-aura") throw new Error("Holy Candle aura is missing"); + expect(aura.aura.modifiers).toEqual([ + { kind: "healing", direction: "done", operation: "percent", value: 0.27 }, + { kind: "stat", stat: "wisdom", operation: "flat", value: 2 }, + ]); + }); + + it("charges 12% of maximum HP only while active and no more than once each second", () => { + expect(romPriestHolyCandleIsActive([{ definition: { utilityTags: [ROM_PRIEST_HOLY_CANDLE_TAG] } }])).toBe(true); + expect(romPriestHolyCandleIsActive([{ definition: { utilityTags: ["unrelated"] } }])).toBe(false); + expect(romPriestHolyCandleIsActive([])).toBe(false); + expect(romPriestHolyCandleCanChargeAt(2_000, null)).toBe(true); + expect(romPriestHolyCandleCanChargeAt(2_999, 2_000)).toBe(false); + expect(romPriestHolyCandleCanChargeAt(3_000, 2_000)).toBe(true); + expect(romPriestHolyCandleCanChargeAt(1_999, 2_000)).toBe(false); + expect(romPriestHolyCandleCanChargeAt(Number.NaN, null)).toBe(false); + expect(romPriestHolyCandleSelfDamageAmount(1_000, true, 3_000, 2_000)).toBe(120); + expect(romPriestHolyCandleSelfDamageAmount(1_000, false, 3_000, 2_000)).toBe(0); + expect(romPriestHolyCandleSelfDamageAmount(1_000, true, 2_999, 2_000)).toBe(0); + expect(romPriestHolyCandleSelfDamageAmount(1_000, true, 3_000, 2_000)).toBe( + 1_000 * ROM_PRIEST_HOLY_CANDLE.selfDamagePercent / 100, + ); + }); +}); diff --git a/src/game/romPriestHolyCandleRuntime.ts b/src/game/romPriestHolyCandleRuntime.ts new file mode 100644 index 00000000..c9878646 --- /dev/null +++ b/src/game/romPriestHolyCandleRuntime.ts @@ -0,0 +1,100 @@ +import type { AbilityCost, AbilityEffect } from "./abilityCatalog"; +import type { AuraDefinition, AuraModifier } from "./combatAuras"; +import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; + +export const ROM_PRIEST_HOLY_CANDLE = Object.freeze({ + spellId: 490_304, + healingEffectivenessPercent: 27, + selfDamagePercent: 12, + auraDurationMs: 60_000, + cooldownMs: 30_000, + selfDamageIntervalMs: 1_000, +}); + +export const ROM_PRIEST_HOLY_CANDLE_TAG = "rom-priest:490304:holy-candle"; + +/** CoA activation cost; separate from the 12% HP self-damage trigger. */ +export const ROM_PRIEST_HOLY_CANDLE_COST: AbilityCost = Object.freeze({ + resource: "mana", + amount: 5, + percentage: true, +}); + +export const ROM_PRIEST_HOLY_CANDLE_DESCRIPTION = "Costs 5% Mana. Cooldown: 30 seconds. Increases healing effectiveness by 27% for 60 seconds. Casting a healing spell consumes 12% of your maximum health, at most once per second."; + +type ApplyAuraEffect = Extract; + +/** Replace the old RuneWaker +5% modifier with the exact current CoA bonus. */ +export function romPriestHolyCandleAura(effect: ApplyAuraEffect): ApplyAuraEffect { + let replacedHealingModifier = false; + const modifiers: AuraModifier[] = (effect.aura.modifiers ?? []).map((modifier) => { + if (modifier.kind === "healing" && modifier.direction === "done" + && modifier.operation === "percent") { + replacedHealingModifier = true; + return { ...modifier, value: ROM_PRIEST_HOLY_CANDLE.healingEffectivenessPercent / 100 }; + } + return modifier; + }); + if (!replacedHealingModifier) { + modifiers.push({ + kind: "healing", + direction: "done", + operation: "percent", + value: ROM_PRIEST_HOLY_CANDLE.healingEffectivenessPercent / 100, + }); + } + + return { + ...effect, + aura: { + ...effect.aura, + id: ROM_PRIEST_HOLY_CANDLE_TAG, + name: "Holy Candle", + description: ROM_PRIEST_HOLY_CANDLE_DESCRIPTION, + durationMs: ROM_PRIEST_HOLY_CANDLE.auraDurationMs, + utilityTags: [...new Set([ + ...(effect.aura.utilityTags ?? []).filter((tag) => ( + tag !== "rom-self-health-drain" && tag !== ROM_PRIEST_HOLY_CANDLE_TAG + )), + ROM_PRIEST_HOLY_CANDLE_TAG, + ])], + modifiers, + }, + }; +} + +/** Current CoA Holy Candle is a Priest-primary skill; same-number pair rows do not inherit it. */ +export function romPriestHolyCandleEffects( + row: RomGeneratedAbilityLike, + translated: readonly AbilityEffect[], +): readonly AbilityEffect[] | null { + if (row.classId !== "rom-priest" || row.secondaryClassId !== undefined + || row.sourceSkillId !== ROM_PRIEST_HOLY_CANDLE.spellId) return null; + const aura = translated.find((effect): effect is ApplyAuraEffect => effect.kind === "apply-aura"); + return aura ? [romPriestHolyCandleAura(aura)] : null; +} + +export function romPriestHolyCandleIsActive( + auras: readonly { readonly definition: Pick }[], +): boolean { + return auras.some((aura) => aura.definition.utilityTags?.includes(ROM_PRIEST_HOLY_CANDLE_TAG)); +} + +/** The official one-second self-hit throttle applies to accepted healing casts. */ +export function romPriestHolyCandleCanChargeAt(nowMs: number, lastChargeAtMs: number | null): boolean { + if (!Number.isFinite(nowMs)) return false; + if (lastChargeAtMs === null || !Number.isFinite(lastChargeAtMs)) return true; + return nowMs - lastChargeAtMs >= ROM_PRIEST_HOLY_CANDLE.selfDamageIntervalMs; +} + +/** Return the max-health-based self-damage amount, or zero when inactive/throttled. */ +export function romPriestHolyCandleSelfDamageAmount( + maxHealth: number, + active: boolean, + nowMs: number, + lastChargeAtMs: number | null, +): number { + if (!active || !romPriestHolyCandleCanChargeAt(nowMs, lastChargeAtMs)) return 0; + const health = Number.isFinite(maxHealth) ? Math.max(0, maxHealth) : 0; + return Math.round(health * ROM_PRIEST_HOLY_CANDLE.selfDamagePercent / 100); +} diff --git a/src/game/romPriestHolyVoidRuntime.test.ts b/src/game/romPriestHolyVoidRuntime.test.ts new file mode 100644 index 00000000..23672dd3 --- /dev/null +++ b/src/game/romPriestHolyVoidRuntime.test.ts @@ -0,0 +1,173 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition, updatePartyRuntimeTargetVisibility } from "./partyRuntimeRegistry"; +import { useCombatStore } from "./combatStore"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { presentationSchoolForAbility } from "./combatPresentation"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { romPriestKnightCastEffects } from "./romPriestKnightOverrides"; + +const HOLY_VOID_ID = 490276; +const holyVoid = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === HOLY_VOID_ID + && ability.classId === "rom-priest" && !ability.secondaryClassId)!; +const targetId = "holy-void-runtime-target"; + +describe("RoM Priest Holy Void runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "rom-priest", level: 80, role: "damage" }); + useCombatStore.getState().registerMob(targetId, { + name: "Voidal Infection target", + maxHealth: 1_000_000, + level: 80, + resistances: { nature: 10_000 }, + }); + useCombatStore.setState((state) => ({ + mobs: { ...state.mobs, [targetId]: { ...state.mobs[targetId]!, armor: 5_000 } }, + })); + setMobPosition(targetId, [3, 0, 0]); + useCombatStore.getState().selectMob(targetId); + }); + + it("normalizes only Holy Void's physical-defense alias to armor", () => { + expect(presentationSchoolForAbility(holyVoid)).toBe("holy"); + const mapped = romPriestKnightCastEffects(holyVoid, holyVoid.effects, [], 1_000); + const debuff = mapped.find((effect) => effect.kind === "apply-aura" + && effect.aura.id === "rom-priest-holy-void"); + + expect(mapped.find((effect) => effect.kind === "damage")).toMatchObject({ + kind: "damage", basePoints: 1_655, school: "holy", + }); + expect(debuff).toMatchObject({ + kind: "apply-aura", + recipient: "ability-target", + aura: { + name: "Voidal Infection", + disposition: "debuff", + durationMs: 20_000, + modifiers: [ + { kind: "stat", stat: "armor", operation: "percent", value: -0.188 }, + { kind: "stat", stat: "magical-defense", operation: "percent", value: -0.188 }, + ], + }, + }); + + const pairedIdentity = romPriestKnightCastEffects( + { ...holyVoid, secondaryClassId: "rom-knight" }, holyVoid.effects, [], 1_000, + ); + const pairedPhysicalModifier = pairedIdentity.find((effect) => effect.kind === "apply-aura" + && effect.aura.id === "rom-priest-holy-void"); + expect(pairedPhysicalModifier?.kind === "apply-aura" + ? pairedPhysicalModifier.aura.modifiers?.find((modifier) => modifier.kind === "stat" + && modifier.stat === "physical-defense") + : undefined).toMatchObject({ kind: "stat", stat: "physical-defense" }); + }); + + it("applies the sourced debuff to NPCs: physical armor and modeled magic resistance fall, Light stays armor-independent", () => { + const sampleDamage = ( + school: "physical" | "nature" | "holy", + attackKind: "melee" | "spell", + firstNow: number, + count = 1, + ) => Array.from({ length: count }, (_, index) => useCombatStore.getState().damageMob( + targetId, + 10_000, + firstNow + index, + { actorId: PLAYER_AGGRO_ID, role: "damage" }, + school, + { + attackKind, + seed: `holy-void-${school}-${index}`, + rules: { + canMiss: false, + canCrit: false, + canDodge: false, + canParry: false, + canBlock: false, + }, + }, + ).amount); + const average = (values: readonly number[]) => values.reduce((sum, value) => sum + value, 0) / values.length; + const physicalBefore = average(sampleDamage("physical", "melee", 100)); + const natureBefore = average(sampleDamage("nature", "spell", 200, 128)); + const lightBefore = average(sampleDamage("holy", "spell", 500)); + + expect(useCombatStore.getState().castAbility(holyVoid.id, undefined, 1_000)).toMatchObject({ ok: true }); + + const voidAura = useCombatStore.getState().auras.find((aura) => ( + aura.targetId === targetId && aura.sourceId === PLAYER_AGGRO_ID + && aura.definition.id === "rom-priest-holy-void" + )); + expect(voidAura).toBeDefined(); + expect(voidAura?.expiresAt).toBe(21_000); + expect(voidAura?.definition.modifiers).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: "stat", stat: "armor", operation: "percent", value: -0.188 }), + expect.objectContaining({ kind: "stat", stat: "magical-defense", operation: "percent", value: -0.188 }), + ])); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.abilityId === holyVoid.id && event.targetActorId === targetId + && event.school === "holy" && event.rawAmount === 1_655 && event.effectiveAmount > 0 + ))).toBe(true); + + const physicalAfter = average(sampleDamage("physical", "melee", 2_000)); + const natureAfter = average(sampleDamage("nature", "spell", 2_100, 128)); + const lightAfter = average(sampleDamage("holy", "spell", 2_300)); + expect(physicalAfter).toBeGreaterThan(physicalBefore); + expect(natureAfter).toBeGreaterThan(natureBefore); + expect(lightAfter).toBe(lightBefore); + }); + + it("runs through the generated companion cast hook and keeps Voidal Infection on its target", () => { + const seed = "holy-void-priest-companion"; + const priest = createConfiguredPartyMember({ + name: "Holy Void Priest", + classId: "rom-priest", + specialization: "Primary", + role: "damage", + }, 80, 0, seed); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2, "rom"); + usePartyStore.getState().setCommand("attack"); + usePartyStore.setState({ members: [{ + ...priest, + resource: 10_000, + maxResource: 10_000, + resourcePools: { ...priest.resourcePools, mana: 10_000 }, + activeCast: { + abilityId: holyVoid.id, + school: "holy", + mode: "cast", + startedAt: 1_000, + completesAt: 1_000, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId, + }, + activeCastTargetId: targetId, + status: "attacking", + }] }); + registerPartyRuntimePosition(priest.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(priest.id, targetId, true); + useCombatStore.getState().synchronizeActors(); + + advanceDungeonPartyCombat(1_000); + + const companionAura = useCombatStore.getState().auras.find((aura) => ( + aura.targetId === targetId && aura.sourceId === priest.id + && aura.definition.id === "rom-priest-holy-void" + )); + expect(companionAura?.definition.modifiers).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: "stat", stat: "armor", value: -0.188 }), + expect.objectContaining({ kind: "stat", stat: "magical-defense", value: -0.188 }), + ])); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.sourceActorId === priest.id + && event.abilityId === holyVoid.id && event.targetActorId === targetId + && event.school === "holy" && event.rawAmount === 1_655 && event.effectiveAmount > 0 + ))).toBe(true); + }); +}); diff --git a/src/game/romPriestKnightOverrides.ts b/src/game/romPriestKnightOverrides.ts index 7aae828f..aade3792 100644 --- a/src/game/romPriestKnightOverrides.ts +++ b/src/game/romPriestKnightOverrides.ts @@ -214,6 +214,29 @@ export function romPriestKnightCastEffects( if (ability.source !== "runewaker" || casterMaxHealth <= 0) return effects; const priestChampionEffects = romPriestChampionCastEffects(ability, effects, learnedPassiveSpellIds); if (priestChampionEffects !== effects) return priestChampionEffects; + if (ability.dbcSpellId === 490276 + && ability.classId === "rom-priest" + && ability.secondaryClassId === undefined) { + // Current CoA keeps Holy Void as Priest-primary and its Voidal Infection + // lowers physical defense. Normalize that local stat alias to armor so the + // generic aura resolver applies it to both character and NPC targets. Keep + // magical-defense intact; NPCs use it for modeled resistances, but the + // simulator has no Light/Holy resistance stat to reduce this spell's hit. + return effects.map((effect) => effect.kind === "apply-aura" + && effect.aura.id === "rom-priest-holy-void" + ? { + ...effect, + aura: { + ...effect.aura, + modifiers: effect.aura.modifiers?.map((modifier) => ( + modifier.kind === "stat" && modifier.stat === "physical-defense" + ? { ...modifier, stat: "armor" } + : modifier + )), + }, + } + : effect); + } if (ability.dbcSpellId === 491588 && ability.classId === "rom-mage" && ability.secondaryClassId === "rom-priest" diff --git a/src/game/romPriestKnightRuntimeEffects.test.ts b/src/game/romPriestKnightRuntimeEffects.test.ts index e4c514b5..0758e6cb 100644 --- a/src/game/romPriestKnightRuntimeEffects.test.ts +++ b/src/game/romPriestKnightRuntimeEffects.test.ts @@ -74,14 +74,14 @@ describe("RoM Knight/Priest conditional combat payloads", () => { expect(holySmitePartyHeal).toEqual(["ally"]); }); - it("removes Chain of Light's cooldown only with Priest/Champion Infused Light Chain", () => { + it("does not apply the retired Infused Light Chain cooldown override to Rage Control", () => { const chain = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 491164)!; expect(romPriestChampionCooldownOverride(chain, [])).toBeNull(); - expect(romPriestChampionCooldownOverride(chain, [498610])).toBe(0); + expect(romPriestChampionCooldownOverride(chain, [498610])).toBeNull(); expect(romPriestChampionCooldownOverride({ ...chain, classId: "rom-knight" }, [498610])).toBeNull(); }); - it("applies Infused Light Chain to the active Priest/Champion channel", () => { + it("keeps Chain of Light's base cooldown without the unsupported passive rider", () => { useCombatStore.getState().initializeCharacter({ classId: "rom-priest", secondaryClassId: "rom-champion", raceId: "rom-dwarf", level: 30, }); @@ -90,7 +90,7 @@ describe("RoM Knight/Priest conditional combat payloads", () => { useCombatStore.getState().selectMob("priest-champion-chain"); expect(useCombatStore.getState().castAbility("rom-priest-primary-9", undefined, 1_000)).toMatchObject({ ok: true }); expect(useCombatStore.getState().activeCast?.mode).toBe("channel"); - expect(useCombatStore.getState().cooldowns["rom-priest-primary-9"]).toBeUndefined(); + expect(useCombatStore.getState().cooldowns["rom-priest-primary-9"]).toBe(7_000); }); it("consumes Holy Seals only when Holy Smite uses them and heals the caster plus one ally", () => { diff --git a/src/game/romPriestMageEnlightenment.integration.test.ts b/src/game/romPriestMageEnlightenment.integration.test.ts index f8c87169..432ecf6f 100644 --- a/src/game/romPriestMageEnlightenment.integration.test.ts +++ b/src/game/romPriestMageEnlightenment.integration.test.ts @@ -2,13 +2,13 @@ import { beforeEach, describe, expect, it } from "vitest"; import { abilityById } from "./abilityCatalog"; import { PLAYER_AGGRO_ID } from "./aggro"; import { useCombatStore } from "./combatStore"; -import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; -import { ROM_PRIEST_MAGE_ENLIGHTENMENT } from "./romPriestMageRuntime"; +import { ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_TAG } from "./romPriestMageRuntime"; -const ACTIVE_TAG = "rom-priest-mage-enlightenment-active"; +const PASSIVE_TAG = ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_TAG; function initializePriestMage(): void { useCombatStore.getState().initializeCharacter({ @@ -37,43 +37,31 @@ describe("RoM Priest/Mage Enlightenment integration", () => { ); }); - it("triggers only on completed Heal and respects the caster's 20-second cooldown", () => { + it("activates as a permanent +12% Wisdom passive for the player", () => { const heal = abilityById("rom-priest-primary-2"); - const wrongSpell = abilityById("rom-priest-primary-4"); const passive = abilityById("rom-priest-rom-mage-elite-40"); - if (!heal || !wrongSpell || !passive) throw new Error("Missing local Priest/Mage Enlightenment rows"); - expect([heal.dbcSpellId, wrongSpell.dbcSpellId, passive.dbcSpellId]).toEqual([490_261, 491_165, 492_933]); - expect(passive.effects).toEqual([]); - expect(aura(PLAYER_AGGRO_ID, ACTIVE_TAG, 1_000)).toBeUndefined(); - expect(aura(PLAYER_AGGRO_ID, ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag, 1_000)).toBeUndefined(); + if (!heal || !passive) throw new Error("Missing local Priest/Mage Heal or Enlightenment rows"); + expect([heal.dbcSpellId, passive.dbcSpellId]).toEqual([490_261, 492_933]); + expect(passive.passive).toBe(true); + expect(passive.description).toBe("Passive: Increases Wisdom by 12%."); + expect(passive.effects).toHaveLength(1); + expect(passive.effects[0]).toMatchObject({ + kind: "apply-aura", + aura: { + durationMs: null, + modifiers: [{ kind: "stat", stat: "wisdom", operation: "percent", value: 0.12 }], + }, + }); + expect(aura(PLAYER_AGGRO_ID, PASSIVE_TAG, 1_000)?.expiresAt).toBeNull(); useCombatStore.getState().damagePlayer(100); expect(useCombatStore.getState().castAbility(heal.id, undefined, 1_000)).toMatchObject({ ok: true }); useCombatStore.getState().tick(0.1, 3_100); - expect(aura(PLAYER_AGGRO_ID, ACTIVE_TAG, 3_100)?.expiresAt).toBe(11_100); - expect(aura(PLAYER_AGGRO_ID, ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag, 3_100)?.expiresAt) - .toBe(23_100); - - useCombatStore.getState().registerMob("enlightenment-wrong-spell-target", { - name: "Enlightenment wrong-spell target", maxHealth: 100_000, xpReward: 0, - }); - setMobPosition("enlightenment-wrong-spell-target", [3, 0, 0]); - useCombatStore.getState().selectMob("enlightenment-wrong-spell-target"); - expect(useCombatStore.getState().castAbility(wrongSpell.id, undefined, 5_000)).toMatchObject({ ok: true }); - expect(aura(PLAYER_AGGRO_ID, ACTIVE_TAG, 5_000)?.expiresAt).toBe(11_100); - - expect(useCombatStore.getState().castAbility(heal.id, undefined, 7_000)).toMatchObject({ ok: true }); - useCombatStore.getState().tick(0.1, 9_100); - expect(aura(PLAYER_AGGRO_ID, ACTIVE_TAG, 9_100)?.expiresAt).toBe(11_100); - expect(aura(PLAYER_AGGRO_ID, ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag, 9_100)?.expiresAt) - .toBe(23_100); - - expect(useCombatStore.getState().castAbility(heal.id, undefined, 24_000)).toMatchObject({ ok: true }); - useCombatStore.getState().tick(0.1, 26_100); - expect(aura(PLAYER_AGGRO_ID, ACTIVE_TAG, 26_100)?.expiresAt).toBe(34_100); + expect(aura(PLAYER_AGGRO_ID, PASSIVE_TAG, 3_100)?.expiresAt).toBeNull(); + expect(aura(PLAYER_AGGRO_ID, "rom-priest-mage-enlightenment-cooldown", 3_100)).toBeUndefined(); }); - it("triggers after a party Priest/Mage finishes Heal and keeps the aura on that caster", () => { + it("activates as a permanent +12% Wisdom passive for a generated companion", () => { const seed = "priest-mage-enlightenment-party"; const healer = createConfiguredPartyMember({ name: "Enlightenment Priest", @@ -107,15 +95,15 @@ describe("RoM Priest/Mage Enlightenment integration", () => { }] }); registerPartyRuntimePosition(healer.id, [0, 0, 0]); useCombatStore.getState().synchronizeActors(); - expect(passive.effects).toEqual([]); - expect(aura(healer.id, ACTIVE_TAG, 1_000)).toBeUndefined(); + expect(passive.effects).toHaveLength(1); + expect(aura(healer.id, PASSIVE_TAG, 1_000)).toBeUndefined(); advanceDungeonPartyCombat(2_500); expect(useCombatStore.getState().combatEvents.some((event) => event.sourceActorId === healer.id && event.abilityId === heal.id && event.kind === "healing")).toBe(true); - expect(aura(healer.id, ACTIVE_TAG, 2_500)?.expiresAt).toBe(10_500); - expect(aura(healer.id, ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag, 2_500)?.expiresAt).toBe(22_500); - expect(aura(PLAYER_AGGRO_ID, ACTIVE_TAG, 2_500)).toBeUndefined(); + expect(aura(healer.id, PASSIVE_TAG, 2_500)?.expiresAt).toBeNull(); + expect(aura(healer.id, "rom-priest-mage-enlightenment-cooldown", 2_500)).toBeUndefined(); + expect(aura(PLAYER_AGGRO_ID, PASSIVE_TAG, 2_500)?.expiresAt).toBeNull(); }); }); diff --git a/src/game/romPriestMageRuntime.test.ts b/src/game/romPriestMageRuntime.test.ts index e8c83c56..a7ddaecd 100644 --- a/src/game/romPriestMageRuntime.test.ts +++ b/src/game/romPriestMageRuntime.test.ts @@ -1,104 +1,56 @@ import { describe, expect, it } from "vitest"; -import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; import { ROM_PRIEST_MAGE_ENLIGHTENMENT, - ROM_PRIEST_MAGE_ENLIGHTENMENT_COOLDOWN_EFFECT, - romPriestMageEnlightenmentProc, - romPriestMageEnlightenmentReadyAt, + ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_EFFECT, + ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_TAG, + overrideRomPriestMageEffects, + romPriestMageEnlightenmentPassiveEffects, } from "./romPriestMageRuntime"; -const heal = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 490_261)!; -const learnedPassive = [ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId]; +const enlightenment: RomGeneratedAbilityLike = { + classId: "rom-priest", + secondaryClassId: "rom-mage", + sourceSkillId: 492_933, + name: "Enlightenment", + description: "RuneWaker's older Heal-trigger effect.", + passive: true, +}; -describe("RoM Priest/Mage Enlightenment runtime", () => { - it("grants the source-defined Wisdom aura after completing Heal", () => { +describe("RoM Priest/Mage Enlightenment", () => { + it("replaces the local trigger payload with a permanent +12% Wisdom passive", () => { expect(ROM_PRIEST_MAGE_ENLIGHTENMENT).toMatchObject({ passiveSpellId: 492_933, - triggerSpellId: 490_261, - wisdomComponentId: 503_197, - cooldownComponentId: 506_532, - wisdomPercent: 1, - durationMs: 8_000, - cooldownMs: 20_000, + wisdomPercent: 12, }); - const result = romPriestMageEnlightenmentProc( - "rom-priest", - "rom-mage", - heal, - learnedPassive, - true, - 2_000, - 2_000, - ); - - expect(result.nextReadyAt).toBe(22_000); - expect(result.effect).toMatchObject({ + expect(overrideRomPriestMageEffects(enlightenment, [])).toEqual([ + ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_EFFECT, + ]); + expect(ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_EFFECT).toMatchObject({ kind: "apply-aura", recipient: "caster", - triggerSpellId: 492_933, aura: { - id: "rom-priest-mage-enlightenment", - durationMs: 8_000, - maxStacks: 1, - stackBehavior: "refresh", + id: ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_TAG, + name: "Enlightenment", + description: "Increases Wisdom by 12%.", + durationMs: null, modifiers: [{ kind: "stat", stat: "wisdom", operation: "percent", - value: 0.01, + value: 0.12, }], }, - }); - expect(ROM_PRIEST_MAGE_ENLIGHTENMENT_COOLDOWN_EFFECT).toMatchObject({ - recipient: "caster", triggerSpellId: 492_933, - aura: { - durationMs: 20_000, - hideFromAuraStrip: true, - utilityTags: [ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag], - }, }); + expect(ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_EFFECT.aura.id).toContain(":492933:"); + expect(romPriestMageEnlightenmentPassiveEffects(false)).toEqual([]); }); - it("keeps the per-caster cooldown independent and ready at expiration", () => { - const activeAuras = [ - { - targetId: "priest-a", - expiresAt: 12_000, - definition: { - id: "enlightenment-cooldown-test", - name: "Enlightenment cooldown test", - disposition: "buff" as const, - durationMs: ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownMs, - utilityTags: [ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag], - }, - }, - ]; - expect(romPriestMageEnlightenmentReadyAt(activeAuras, "priest-a", 5_000)).toBe(12_000); - expect(romPriestMageEnlightenmentReadyAt(activeAuras, "priest-b", 5_000)).toBe(5_000); - expect(romPriestMageEnlightenmentReadyAt(activeAuras, "priest-a", 12_000)).toBe(12_000); + it("does not apply the rework to a different class pair or spell identity", () => { + expect(overrideRomPriestMageEffects({ ...enlightenment, secondaryClassId: "rom-warrior" }, [])).toBeNull(); + expect(overrideRomPriestMageEffects({ ...enlightenment, classId: "rom-mage" }, [])).toBeNull(); + expect(overrideRomPriestMageEffects({ ...enlightenment, sourceSkillId: 492_638 }, [])).toBeNull(); }); - it("rejects other builds, spells, sources, unlearned passives, incomplete casts, and cooldown casts", () => { - const rejected = [ - romPriestMageEnlightenmentProc("rom-mage", "rom-priest", heal, learnedPassive, true, 0, 1), - romPriestMageEnlightenmentProc("rom-priest", undefined, heal, learnedPassive, true, 0, 1), - romPriestMageEnlightenmentProc("rom-priest", "rom-mage", { ...heal, dbcSpellId: 490_204 }, learnedPassive, true, 0, 1), - romPriestMageEnlightenmentProc("rom-priest", "rom-mage", { ...heal, source: "core" }, learnedPassive, true, 0, 1), - romPriestMageEnlightenmentProc("rom-priest", "rom-mage", heal, [], true, 0, 1), - romPriestMageEnlightenmentProc("rom-priest", "rom-mage", heal, learnedPassive, false, 0, 1), - romPriestMageEnlightenmentProc("rom-priest", "rom-mage", heal, learnedPassive, true, 5_000, 4_999), - ]; - for (const result of rejected) { - expect(result.effect).toBeNull(); - expect(result.nextReadyAt).toBeGreaterThanOrEqual(0); - } - }); - - it("suppresses the generated passive aura while keeping Heal available", () => { - const passive = ROM_ALL_ABILITIES.find((ability) => ability.id === "rom-priest-rom-mage-elite-40"); - expect(passive?.effects).toEqual([]); - expect(passive?.ranks?.[0]?.effects).toEqual([]); - expect(heal).toMatchObject({ classId: "rom-priest", dbcSpellId: 490_261, source: "runewaker" }); - }); }); diff --git a/src/game/romPriestMageRuntime.ts b/src/game/romPriestMageRuntime.ts index a6883f5c..6006a0ea 100644 --- a/src/game/romPriestMageRuntime.ts +++ b/src/game/romPriestMageRuntime.ts @@ -1,114 +1,52 @@ -import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; -import type { ActiveAura } from "./combatAuras"; +import type { AbilityEffect } from "./abilityCatalog"; import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; export const ROM_PRIEST_MAGE_ENLIGHTENMENT = Object.freeze({ passiveSpellId: 492_933, - triggerSpellId: 490_261, - wisdomComponentId: 503_197, - cooldownComponentId: 506_532, - wisdomPercent: 1, - durationMs: 8_000, - cooldownMs: 20_000, - cooldownAuraTag: "rom-priest-mage-enlightenment-cooldown", + wisdomPercent: 12, }); -export const ROM_PRIEST_MAGE_ENLIGHTENMENT_COOLDOWN_EFFECT: Extract = { +export const ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_TAG = "rom-priest-mage:492933:enlightenment-passive"; + +export const ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_EFFECT: Extract = { kind: "apply-aura", recipient: "caster", aura: { - id: ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag, - name: "Enlightenment cooldown", + id: ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_TAG, + name: "Enlightenment", + description: "Increases Wisdom by 12%.", disposition: "buff", - durationMs: ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownMs, - hideFromAuraStrip: true, - utilityTags: [ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag], + durationMs: null, + maxStacks: 1, + stackBehavior: "refresh", + utilityTags: [ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_TAG], + modifiers: [{ + kind: "stat", + stat: "wisdom", + operation: "percent", + value: ROM_PRIEST_MAGE_ENLIGHTENMENT.wisdomPercent / 100, + }], }, sourceEffectType: -1, sourceAuraType: -1, - miscValue: 0, + miscValue: ROM_PRIEST_MAGE_ENLIGHTENMENT.wisdomPercent, triggerSpellId: ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId, }; -/** Enlightenment is triggered by the Priest/Mage Heal cast, not a permanent passive aura. */ +/** Current CoA Enlightenment is a permanent +12% Wisdom passive. */ +export function romPriestMageEnlightenmentPassiveEffects( + learned: boolean, +): readonly AbilityEffect[] { + return learned ? [ROM_PRIEST_MAGE_ENLIGHTENMENT_PASSIVE_EFFECT] : []; +} + +/** Replace RuneWaker's conditional Enlightenment components with the current CoA passive. */ export function overrideRomPriestMageEffects( row: RomGeneratedAbilityLike, _translated: readonly AbilityEffect[], ): readonly AbilityEffect[] | null { - return row.classId === "rom-priest" - && row.secondaryClassId === "rom-mage" - && row.sourceSkillId === ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId - ? [] - : null; -} - -/** Find the active internal cooldown marker for one caster. */ -export function romPriestMageEnlightenmentReadyAt( - activeAuras: readonly Pick[], - casterId: string, - now: number, -): number { - const cooldown = activeAuras.find((aura) => aura.targetId === casterId - && aura.definition.utilityTags?.includes(ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownAuraTag) - && (aura.expiresAt === null || aura.expiresAt > now)); - return cooldown ? cooldown.expiresAt ?? Number.POSITIVE_INFINITY : now; -} - -export interface RomPriestMageEnlightenmentResult { - readonly effect: AbilityEffect | null; - readonly nextReadyAt: number; -} - -/** - * RuneWaker Enlightenment (492933): completing Heal (490261) while the - * Priest/Mage passive is learned grants +1% Wisdom for 8 seconds, with a - * 20-second internal cooldown. The source says "when you use Heal," so a - * completed cast is the trigger; hit or target health is not required. - */ -export function romPriestMageEnlightenmentProc( - classId: string | null, - secondaryClassId: string | null | undefined, - ability: Pick, - learnedPassiveSpellIds: readonly number[], - castCompleted: boolean, - readyAt: number, - now: number, -): RomPriestMageEnlightenmentResult { - const eligible = classId === "rom-priest" - && secondaryClassId === "rom-mage" - && ability.classId === "rom-priest" - && ability.source === "runewaker" - && ability.dbcSpellId === ROM_PRIEST_MAGE_ENLIGHTENMENT.triggerSpellId - && learnedPassiveSpellIds.includes(ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId) - && castCompleted - && now >= readyAt; - if (!eligible) return { effect: null, nextReadyAt: readyAt }; - - return { - effect: { - kind: "apply-aura", - recipient: "caster", - aura: { - id: "rom-priest-mage-enlightenment", - name: "Enlightenment", - description: "Completing Heal grants +1% Wisdom for 8 seconds. This effect has a 20-second internal cooldown.", - disposition: "buff", - durationMs: ROM_PRIEST_MAGE_ENLIGHTENMENT.durationMs, - maxStacks: 1, - stackBehavior: "refresh", - utilityTags: ["rom-priest-mage-enlightenment-active"], - modifiers: [{ - kind: "stat", - stat: "wisdom", - operation: "percent", - value: ROM_PRIEST_MAGE_ENLIGHTENMENT.wisdomPercent / 100, - }], - }, - sourceEffectType: -1, - sourceAuraType: 49, - miscValue: ROM_PRIEST_MAGE_ENLIGHTENMENT.wisdomPercent, - triggerSpellId: ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId, - }, - nextReadyAt: now + ROM_PRIEST_MAGE_ENLIGHTENMENT.cooldownMs, - }; + if (row.classId !== "rom-priest" + || row.secondaryClassId !== "rom-mage" + || row.sourceSkillId !== ROM_PRIEST_MAGE_ENLIGHTENMENT.passiveSpellId) return null; + return romPriestMageEnlightenmentPassiveEffects(true); } diff --git a/src/game/romPriestScoutCuringShot.catalog.test.ts b/src/game/romPriestScoutCuringShot.catalog.test.ts new file mode 100644 index 00000000..461233f0 --- /dev/null +++ b/src/game/romPriestScoutCuringShot.catalog.test.ts @@ -0,0 +1,56 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS, + ROM_PRIEST_SCOUT_CURING_SHOT_DURATION_MS, + ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA, + ROM_PRIEST_SCOUT_CURING_SHOT_HOT_TICKS, + ROM_PRIEST_SCOUT_CURING_SHOT_ID, + ROM_PRIEST_SCOUT_CURING_SHOT_TICK_INTERVAL_MS, +} from "./romPriestScoutCuringShot"; + +describe("CoA Priest/Scout Curing Shot generated catalog row", () => { + const ability = ROM_ALL_ABILITIES.find((candidate) => ( + candidate.source === "runewaker" && candidate.dbcSpellId === ROM_PRIEST_SCOUT_CURING_SHOT_ID + )); + + it("applies current CoA behavior to the exact generated Priest/Scout row", () => { + if (!ability) throw new Error("Missing Curing Shot catalog row"); + expect(ability).toMatchObject({ + classId: "rom-priest", + secondaryClassId: "rom-scout", + name: "Curing Shot", + passive: false, + target: "friendly", + range: { min: 0, max: 15 }, + radius: 10, + targeting: { shape: "circle", radius: 10 }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS, + cost: { resource: "mana", amount: 120 }, + costs: [{ resource: "mana", amount: 120 }], + effects: [ + { kind: "heal", basePoints: 125.6, scope: "party", radius: 10 }, + { + kind: "hot", + basePoints: 167.5, + ticks: ROM_PRIEST_SCOUT_CURING_SHOT_HOT_TICKS, + intervalMs: ROM_PRIEST_SCOUT_CURING_SHOT_TICK_INTERVAL_MS, + scope: "party", + radius: 10, + }, + { kind: "apply-aura", recipient: "caster", aura: ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA }, + ], + }); + expect(ability?.targeting).not.toHaveProperty("maximumTargets"); + expect(ability?.ranks?.[0]).toMatchObject({ + castMode: "instant", + castTimeMs: 0, + cooldownMs: 6_000, + cost: { resource: "mana", amount: 120 }, + effects: ability.effects, + }); + expect(ROM_PRIEST_SCOUT_CURING_SHOT_DURATION_MS).toBe(18_000); + }); +}); diff --git a/src/game/romPriestScoutCuringShot.integration.test.ts b/src/game/romPriestScoutCuringShot.integration.test.ts new file mode 100644 index 00000000..2f0dba83 --- /dev/null +++ b/src/game/romPriestScoutCuringShot.integration.test.ts @@ -0,0 +1,302 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { resetCombatSpatialProvider, registerCombatSpatialProvider } from "./combatSpatial"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; +import { setMobPosition, clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { commitPartyAbilityUse } from "./partyAbilityAi"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS, + ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA, + ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_SCHOOLS, + ROM_PRIEST_SCOUT_CURING_SHOT_ID, +} from "./romPriestScoutCuringShot"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; + +const CURING_SHOT = ROM_ALL_ABILITIES.find((ability) => ( + ability.source === "runewaker" + && ability.classId === "rom-priest" + && ability.secondaryClassId === "rom-scout" + && ability.dbcSpellId === ROM_PRIEST_SCOUT_CURING_SHOT_ID +)); +const CURING_SHOT_ID = "rom-priest-rom-scout-elite-35"; +const TEST_TARGET_ID = "curing-shot-elemental-target"; + +function priest(name: string, seed: string, index: number, secondaryClassId?: "rom-scout") { + return createConfiguredPartyMember({ + name, + classId: "rom-priest", + ...(secondaryClassId ? { secondaryClassId } : {}), + specialization: "Primary", + role: "damage", + }, 80, index, seed); +} + +function initializePlayerParty(seed: string) { + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + secondaryClassId: "rom-scout", + raceId: "rom-human", + level: 80, + role: "healer", + }); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "healer", 5, "rom"); + + const roster = [ + ...usePartyStore.getState().members, + priest("Extra modeled ally A", seed, 4), + priest("Extra modeled ally B", seed, 5), + ]; + usePartyStore.setState({ members: roster }); + roster.forEach((member, index) => { + // Five party actors plus the player are intentionally in range so the + // integration catches the old five-recipient fallback cap. + registerPartyRuntimePosition(member.id, index < 5 + ? [2 + index * 1.5, 0, 0] + : [10.01, 0, 0]); + usePartyStore.getState().damageMember(member.id, 2_000); + }); + useCombatStore.getState().damagePlayer(2_000); + useCombatStore.getState().synchronizeActors(); + registerCombatSpatialProvider({ + actor: () => null, + hasLineOfSight: () => true, + projectGroundPoint: (position) => position, + }); + useCombatStore.getState().registerMob(TEST_TARGET_ID, { + name: "Elemental damage test target", + level: 1, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TEST_TARGET_ID, [3, 0, 0]); + return { roster }; +} + +function applyCuringShotFromCompanion(casterId: string, now: number): void { + const caster = usePartyStore.getState().members.find((member) => member.id === casterId); + if (!caster || !CURING_SHOT) throw new Error("Missing Priest/Scout Curing Shot companion."); + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === casterId + ? { + ...member, + activeCast: { + abilityId: CURING_SHOT_ID, + school: "holy", + mode: "cast", + startedAt: now, + completesAt: now, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: casterId, + }, + activeCastTargetId: casterId, + status: "attacking", + } + : member), + })); + useCombatStore.getState().synchronizeActors(); + const syncedCaster = usePartyStore.getState().members.find((member) => member.id === casterId); + const committed = syncedCaster ? commitPartyAbilityUse(syncedCaster, CURING_SHOT, now) : null; + if (!committed) throw new Error("Companion could not commit Curing Shot."); + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === casterId + ? { ...committed, activeCast: member.activeCast, activeCastTargetId: member.activeCastTargetId } + : member), + })); + useCombatStore.getState().commitCompanionActors([committed]); + advanceDungeonPartyCombat(now); +} + +function schoolDamage(sourceActorId: string, school: "physical" | "holy" | "fire" | "frost" | "nature" | "shadow" | "arcane", now: number) { + return useCombatStore.getState().damageMob( + TEST_TARGET_ID, + 1_000, + now, + { actorId: sourceActorId, role: "damage", abilityId: `curing-shot-school-test:${school}` }, + school, + { + attackKind: school === "physical" ? "melee" : "spell", + seed: `curing-shot-school-test:${sourceActorId}:${school}:${now}`, + rules: { canMiss: false, canCrit: false, canDodge: false, canParry: false, canBlock: false }, + }, + ).amount; +} + +function curingShotAura(targetId: string) { + return useCombatStore.getState().auras.find((aura) => aura.targetId === targetId + && aura.definition.id === ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA.id); +} + +describe("CoA Priest/Scout Curing Shot runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + resetCombatSpatialProvider(); + useDungeonSimulationStore.setState({ sessionMode: "play" }); + }); + + afterEach(() => resetCombatSpatialProvider()); + + it("heals every nearby modeled party actor, schedules six HoT ticks, and buffs only the caster's Water/frost analog", () => { + if (!CURING_SHOT) throw new Error("Priest/Scout Curing Shot (492636) is missing from the generated catalog."); + const { roster } = initializePlayerParty("curing-shot-player-runtime"); + const ally = roster[0]!; + usePartyStore.getState().selectMember(ally.id); + + const baseline = new Map(ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_SCHOOLS.map((school) => ( + [school, schoolDamage(PLAYER_AGGRO_ID, school, 500)] as const + ))); + const baselineExcluded = new Map(([ + "fire", "nature", "arcane", "physical", "holy", "shadow", + ] as const).map((school) => [school, schoolDamage(PLAYER_AGGRO_ID, school, 700)] as const)); + + expect(useCombatStore.getState().castAbility(CURING_SHOT.id, undefined, 1_000)).toMatchObject({ ok: true }); + const scheduledHots = useCombatStore.getState().effects.filter((effect) => ( + effect.kind === "hot" && effect.sourceAbilityId === CURING_SHOT.id + )); + expect(scheduledHots).toHaveLength(6); + expect(scheduledHots.map((effect) => effect.targetId)).toEqual(expect.arrayContaining([ + null, + ...roster.slice(0, 5).map((member) => member.id), + ])); + + const directEvents = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "healing" && event.abilityId === CURING_SHOT.id && event.occurredAt === 1_000 + )); + expect(directEvents.map((event) => event.targetActorId)).toHaveLength(6); + expect(directEvents.map((event) => event.targetActorId)).toEqual(expect.arrayContaining([ + PLAYER_AGGRO_ID, + ...roster.slice(0, 5).map((member) => member.id), + ])); + expect(directEvents.map((event) => event.targetActorId)).not.toContain(roster[5]!.id); + expect(directEvents.every((event) => event.rawAmount > 0)).toBe(true); + + expect(curingShotAura(PLAYER_AGGRO_ID)).toMatchObject({ + expiresAt: 19_000, + definition: { modifiers: [ + { kind: "damage", direction: "dealt", school: "frost", value: 0.1 }, + ] }, + }); + expect(roster.map((member) => curingShotAura(member.id))).toEqual(Array.from({ length: roster.length }, () => undefined)); + expect(useCombatStore.getState().cooldowns[CURING_SHOT.id]).toBe(1_000 + ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS); + + const playerHotHealing = []; + const tickTimes = [4_000, 7_000, 10_000, 13_000, 16_000, 19_000]; + for (const [tickIndex, tickAt] of tickTimes.slice(0, 5).entries()) { + const playerHealthBeforeTick = useCombatStore.getState().health; + const activeHotsBeforeTick = useCombatStore.getState().effects.filter((effect) => ( + effect.kind === "hot" && effect.sourceAbilityId === CURING_SHOT.id + )); + expect(activeHotsBeforeTick).toHaveLength(6); + expect(activeHotsBeforeTick.every((effect) => effect.remainingTicks === 6 - tickIndex)).toBe(true); + useCombatStore.getState().tick(3, tickAt); + playerHotHealing.push(useCombatStore.getState().health - playerHealthBeforeTick); + const activeHotsAfterTick = useCombatStore.getState().effects.filter((effect) => ( + effect.kind === "hot" && effect.sourceAbilityId === CURING_SHOT.id + )); + expect(activeHotsAfterTick).toHaveLength(6); + expect(activeHotsAfterTick.every((effect) => effect.remainingTicks === 5 - tickIndex)).toBe(true); + } + for (const school of ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_SCHOOLS) { + expect(schoolDamage(PLAYER_AGGRO_ID, school, 18_999) / baseline.get(school)!).toBeCloseTo(1.1, 1); + } + for (const school of ["fire", "nature", "arcane", "physical", "holy", "shadow"] as const) { + expect(schoolDamage(PLAYER_AGGRO_ID, school, 18_999)).toBe(baselineExcluded.get(school)); + } + expect(curingShotAura(PLAYER_AGGRO_ID)?.expiresAt).toBe(19_000); + + const finalTickAt = tickTimes[5]!; + const finalTickHotEffects = useCombatStore.getState().effects.filter((effect) => ( + effect.kind === "hot" && effect.sourceAbilityId === CURING_SHOT.id + )); + expect(finalTickHotEffects).toHaveLength(6); + expect(finalTickHotEffects.every((effect) => effect.remainingTicks === 1)).toBe(true); + const playerHealthBeforeFinalTick = useCombatStore.getState().health; + useCombatStore.getState().tick(3, finalTickAt); + playerHotHealing.push(useCombatStore.getState().health - playerHealthBeforeFinalTick); + expect(useCombatStore.getState().effects.some((effect) => ( + effect.kind === "hot" && effect.sourceAbilityId === CURING_SHOT.id + ))).toBe(false); + + const periodicEvents = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "healing" && event.abilityId === CURING_SHOT.id && event.occurredAt > 1_000 + )); + // Companion HoTs are emitted as healing events; the player's self-HoT + // updates health directly and is verified separately below. + expect(periodicEvents).toHaveLength(30); + expect(periodicEvents.every((event) => tickTimes.includes(event.occurredAt))).toBe(true); + expect(new Set(periodicEvents.map((event) => event.targetActorId))).toEqual(new Set( + roster.slice(0, 5).map((member) => member.id), + )); + expect(periodicEvents.every((event) => event.rawAmount > 0)).toBe(true); + expect(playerHotHealing).toHaveLength(6); + expect(playerHotHealing.every((amount) => amount > 0)).toBe(true); + expect(curingShotAura(PLAYER_AGGRO_ID)).toBeUndefined(); + expect(schoolDamage(PLAYER_AGGRO_ID, "frost", 19_000)).toBe(baseline.get("frost")); + }); + + it("lets a Priest/Scout companion heal nearby party actors and own the elemental bonus", () => { + if (!CURING_SHOT) throw new Error("Priest/Scout Curing Shot (492636) is missing from the generated catalog."); + useCombatStore.getState().initializeCharacter({ + classId: "rom-warrior", raceId: "rom-human", level: 80, role: "damage", + }); + useCombatStore.getState().setPlayerPosition([1, 0, 0]); + usePartyStore.getState().initializeParty("curing-shot-companion-runtime", 80, useCombatStore.getState().health, "damage", 5, "rom"); + const caster = { + ...priest("Priest Scout caster", "curing-shot-companion-runtime", 0, "rom-scout"), + resource: 500, + maxResource: 500, + resourcePools: { mana: 500 }, + }; + const ally = priest("Priest Scout ally", "curing-shot-companion-runtime", 1); + usePartyStore.setState({ members: [caster, ally] }); + registerPartyRuntimePosition(caster.id, [0, 0, 0]); + registerPartyRuntimePosition(ally.id, [5, 0, 0]); + usePartyStore.getState().damageMember(caster.id, 2_000); + usePartyStore.getState().damageMember(ally.id, 2_000); + useCombatStore.getState().damagePlayer(2_000); + useCombatStore.getState().synchronizeActors(); + registerCombatSpatialProvider({ + actor: () => null, + hasLineOfSight: () => true, + projectGroundPoint: (position) => position, + }); + useCombatStore.getState().registerMob(TEST_TARGET_ID, { + name: "Elemental damage test target", level: 1, maxHealth: 1_000_000, xpReward: 0, + }); + setMobPosition(TEST_TARGET_ID, [3, 0, 0]); + const companionFrostBaseline = schoolDamage(caster.id, "frost", 900); + const companionFireBaseline = schoolDamage(caster.id, "fire", 950); + + applyCuringShotFromCompanion(caster.id, 1_000); + + expect(useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "healing" && event.abilityId === CURING_SHOT_ID && event.occurredAt === 1_000 + )).map((event) => event.targetActorId)).toEqual(expect.arrayContaining([ + PLAYER_AGGRO_ID, caster.id, ally.id, + ])); + expect(curingShotAura(caster.id)?.expiresAt).toBe(19_000); + expect(curingShotAura(PLAYER_AGGRO_ID)).toBeUndefined(); + expect(curingShotAura(ally.id)).toBeUndefined(); + expect(schoolDamage(caster.id, "frost", 1_100) / companionFrostBaseline).toBeCloseTo(1.1, 1); + expect(schoolDamage(caster.id, "fire", 1_150)).toBe(companionFireBaseline); + + const playerHealthBeforeHotTick = useCombatStore.getState().health; + useCombatStore.getState().tick(3, 4_000); + const periodicEvents = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "healing" && event.abilityId === CURING_SHOT_ID && event.occurredAt === 4_000 + )); + expect(periodicEvents).toHaveLength(3); + expect(new Set(periodicEvents.map((event) => event.targetActorId))).toEqual(new Set([ + PLAYER_AGGRO_ID, caster.id, ally.id, + ])); + expect(useCombatStore.getState().health).toBeGreaterThan(playerHealthBeforeHotTick); + }); +}); diff --git a/src/game/romPriestScoutCuringShot.test.ts b/src/game/romPriestScoutCuringShot.test.ts new file mode 100644 index 00000000..e209532f --- /dev/null +++ b/src/game/romPriestScoutCuringShot.test.ts @@ -0,0 +1,162 @@ +import { describe, expect, it } from "vitest"; +import type { AbilityDefinition } from "./abilityCatalog"; +import { + isRomPriestScoutCuringShot, + ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS, + ROM_PRIEST_SCOUT_CURING_SHOT_DESCRIPTION, + ROM_PRIEST_SCOUT_CURING_SHOT_DURATION_MS, + ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA, + ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_DAMAGE_BONUS, + ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_SCHOOLS, + ROM_PRIEST_SCOUT_CURING_SHOT_HOT_TICKS, + ROM_PRIEST_SCOUT_CURING_SHOT_ID, + ROM_PRIEST_SCOUT_CURING_SHOT_IMMEDIATE_HEAL, + ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS, + ROM_PRIEST_SCOUT_CURING_SHOT_RANGE, + ROM_PRIEST_SCOUT_CURING_SHOT_TICK_INTERVAL_MS, + romPriestScoutCuringShotCatalogOverride, +} from "./romPriestScoutCuringShot"; + +const localAbility: AbilityDefinition = { + id: "rom-priest-rom-scout-elite-35", + classId: "rom-priest", + secondaryClassId: "rom-scout", + dbcSpellId: ROM_PRIEST_SCOUT_CURING_SHOT_ID, + name: "Curing Shot", + unlockLevel: 35, + icon: "/assets/ui/rom-spells/577011.png", + sigil: "CS", + description: "Local two-second heal row.", + target: "friendly", + range: { min: 0, max: 20 }, + radius: 20, + targeting: { shape: "circle", radius: 20, maximumTargets: 5 }, + castMode: "cast", + castTimeMs: 2_000, + cooldownMs: 12_000, + gcdMs: 1_500, + cost: { resource: "mana", amount: 120 }, + costs: [{ resource: "mana", amount: 120 }], + effects: [{ kind: "damage", coefficient: 0.2 }], + source: "runewaker", + romSkillGroup: "elite", + ranks: [{ + rank: 1, + spellId: ROM_PRIEST_SCOUT_CURING_SHOT_ID, + level: 35, + description: "Local two-second heal row.", + castMode: "cast", + castTimeMs: 2_000, + cooldownMs: 12_000, + gcdMs: 1_500, + cost: { resource: "mana", amount: 120 }, + costs: [{ resource: "mana", amount: 120 }], + effects: [{ kind: "damage", coefficient: 0.2 }], + }], +}; + +describe("current CoA Priest/Scout Curing Shot catalog overlay", () => { + it("uses current CoA cast, cooldown, radius, direct heal, HoT, and elemental-buff metadata", () => { + const ability = romPriestScoutCuringShotCatalogOverride(localAbility); + + expect(ability).toMatchObject({ + name: "Curing Shot", + target: "friendly", + range: { min: 0, max: ROM_PRIEST_SCOUT_CURING_SHOT_RANGE }, + radius: ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS, + targeting: { shape: "circle", radius: ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS, + description: ROM_PRIEST_SCOUT_CURING_SHOT_DESCRIPTION, + passive: false, + }); + expect(ability.effects).toEqual([ + { + kind: "heal", + coefficient: 0, + basePoints: ROM_PRIEST_SCOUT_CURING_SHOT_IMMEDIATE_HEAL, + recipient: "caster", + scope: "party", + radius: ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS, + }, + { + kind: "hot", + coefficient: 0, + basePoints: 167.5, + ticks: ROM_PRIEST_SCOUT_CURING_SHOT_HOT_TICKS, + intervalMs: ROM_PRIEST_SCOUT_CURING_SHOT_TICK_INTERVAL_MS, + recipient: "caster", + scope: "party", + radius: ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS, + }, + expect.objectContaining({ + kind: "apply-aura", + recipient: "caster", + aura: ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA, + }), + ]); + expect(ROM_PRIEST_SCOUT_CURING_SHOT_DURATION_MS).toBe(18_000); + expect(ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_DAMAGE_BONUS).toBe(0.1); + expect(ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_SCHOOLS).toEqual([ + "frost", + ]); + expect(ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA).toMatchObject({ + durationMs: 18_000, + modifiers: [ + { kind: "damage", direction: "dealt", school: "frost", operation: "percent", value: 0.1 }, + ], + }); + }); + + it("does not carry over the local five-target cap and preserves the unsupported-to-scale local cost", () => { + const ability = romPriestScoutCuringShotCatalogOverride(localAbility); + + expect(ability.targeting).toEqual({ shape: "circle", radius: 10 }); + expect(ability.cost).toEqual({ resource: "mana", amount: 120 }); + expect(ability.costs).toEqual([{ resource: "mana", amount: 120 }]); + expect(ability.ranks?.[0]).toMatchObject({ + castMode: "instant", + castTimeMs: 0, + cooldownMs: 6_000, + cost: { resource: "mana", amount: 120 }, + costs: [{ resource: "mana", amount: 120 }], + targeting: { shape: "circle", radius: 10 }, + effects: ability.effects, + }); + expect(ability.ranks?.[0]?.targeting).not.toHaveProperty("maximumTargets"); + }); + + it("recognizes only the exact Priest-primary/Scout-secondary source identity", () => { + expect(isRomPriestScoutCuringShot({ + classId: "rom-priest", + secondaryClassId: "rom-scout", + sourceSkillId: ROM_PRIEST_SCOUT_CURING_SHOT_ID, + })).toBe(true); + expect(isRomPriestScoutCuringShot({ + classId: "rom-scout", + secondaryClassId: "rom-priest", + sourceSkillId: ROM_PRIEST_SCOUT_CURING_SHOT_ID, + })).toBe(false); + expect(isRomPriestScoutCuringShot({ + classId: "rom-priest", + secondaryClassId: "rom-mage", + sourceSkillId: ROM_PRIEST_SCOUT_CURING_SHOT_ID, + })).toBe(false); + expect(isRomPriestScoutCuringShot({ + classId: "rom-priest", + secondaryClassId: "rom-scout", + sourceSkillId: ROM_PRIEST_SCOUT_CURING_SHOT_ID + 1, + })).toBe(false); + }); + + it("leaves other rows and non-RuneWaker copies unchanged", () => { + const wrongPair = { ...localAbility, secondaryClassId: "rom-mage" as const }; + const wrongId = { ...localAbility, dbcSpellId: ROM_PRIEST_SCOUT_CURING_SHOT_ID + 1 }; + const wrongSource = { ...localAbility, source: "core" as const }; + + expect(romPriestScoutCuringShotCatalogOverride(wrongPair)).toBe(wrongPair); + expect(romPriestScoutCuringShotCatalogOverride(wrongId)).toBe(wrongId); + expect(romPriestScoutCuringShotCatalogOverride(wrongSource)).toBe(wrongSource); + }); +}); diff --git a/src/game/romPriestScoutCuringShot.ts b/src/game/romPriestScoutCuringShot.ts new file mode 100644 index 00000000..abdedc80 --- /dev/null +++ b/src/game/romPriestScoutCuringShot.ts @@ -0,0 +1,135 @@ +import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; +import type { AuraDefinition, AuraModifier } from "./combatAuras"; + +export const ROM_PRIEST_SCOUT_CURING_SHOT_ID = 492636; +export const ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS = 6_000; +export const ROM_PRIEST_SCOUT_CURING_SHOT_DURATION_MS = 18_000; +export const ROM_PRIEST_SCOUT_CURING_SHOT_TICK_INTERVAL_MS = 3_000; +export const ROM_PRIEST_SCOUT_CURING_SHOT_HOT_TICKS = 6; +export const ROM_PRIEST_SCOUT_CURING_SHOT_IMMEDIATE_HEAL = 125.6; +export const ROM_PRIEST_SCOUT_CURING_SHOT_HEAL_PER_TICK = 167.5; +export const ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_DAMAGE_BONUS = 0.1; +/** CoA distance 100 is interpreted as 10 project units using the established 10:1 conversion. */ +export const ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS = 10; +/** CoA range 150 is interpreted as 15 project units using the established 10:1 conversion. */ +export const ROM_PRIEST_SCOUT_CURING_SHOT_RANGE = 15; +export const ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_TAG = + "rom-priest-scout-curing-shot-elemental-damage"; + +export const ROM_PRIEST_SCOUT_CURING_SHOT_DESCRIPTION = + "Instantly heals you and nearby modeled party members for 125.6 HP and restores 167.5 HP every 3 seconds for 18 seconds. Grants the caster 10% Elemental Damage for 18 seconds. CoA describes raid coverage; this simulator models party members. Range: 150; radius: 100."; + +/** + * CoA says Elemental Damage is subclass-defined and the Priest/Scout kit is + * explicitly water-themed. Map that class-specific element to this project's + * frost school, its Water analogue. CoA does not name Good Will's school, so + * this is an explicit inference rather than a source-enumerated mapping. + */ +export const ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_SCHOOLS = Object.freeze([ + "frost", +] as const); + +const CURING_SHOT_ELEMENTAL_MODIFIERS: readonly AuraModifier[] = Object.freeze( + ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_SCHOOLS.map((school) => ({ + kind: "damage" as const, + direction: "dealt" as const, + school, + operation: "percent" as const, + value: ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_DAMAGE_BONUS, + })), +); + +export const ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA: AuraDefinition = Object.freeze({ + id: "rom-priest-scout:curing-shot-elemental-damage", + name: "Good Will", + description: "Increases Elemental Damage by 10% for 18 seconds.", + disposition: "buff", + durationMs: ROM_PRIEST_SCOUT_CURING_SHOT_DURATION_MS, + stackBehavior: "replace", + utilityTags: [ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_TAG], + modifiers: CURING_SHOT_ELEMENTAL_MODIFIERS, +}); + +const CURING_SHOT_EFFECTS: readonly AbilityEffect[] = Object.freeze([ + { + kind: "heal", + coefficient: 0, + basePoints: ROM_PRIEST_SCOUT_CURING_SHOT_IMMEDIATE_HEAL, + recipient: "caster", + scope: "party", + radius: ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS, + }, + { + kind: "hot", + coefficient: 0, + basePoints: ROM_PRIEST_SCOUT_CURING_SHOT_HEAL_PER_TICK, + ticks: ROM_PRIEST_SCOUT_CURING_SHOT_HOT_TICKS, + intervalMs: ROM_PRIEST_SCOUT_CURING_SHOT_TICK_INTERVAL_MS, + recipient: "caster", + scope: "party", + radius: ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS, + }, + { + kind: "apply-aura", + aura: ROM_PRIEST_SCOUT_CURING_SHOT_ELEMENTAL_AURA, + recipient: "caster", + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: ROM_PRIEST_SCOUT_CURING_SHOT_ID, + }, +]); + +/** Select the same-ID Priest-primary/Scout-secondary row for current CoA behavior. */ +export function isRomPriestScoutCuringShot(row: { + readonly classId?: string; + readonly secondaryClassId?: string; + readonly sourceSkillId?: number; +}): boolean { + return row.classId === "rom-priest" + && row.secondaryClassId === "rom-scout" + && row.sourceSkillId === ROM_PRIEST_SCOUT_CURING_SHOT_ID; +} + +/** + * Overlay current CoA catalog values on only the exact local RuneWaker row. + * Costs deliberately stay on the local row: CoA's 242 MP is documented at + * skill level +105 and there is no source-backed lower-rank cost curve. + */ +export function romPriestScoutCuringShotCatalogOverride( + ability: AbilityDefinition, +): AbilityDefinition { + if (ability.source !== "runewaker" + || !isRomPriestScoutCuringShot({ + classId: ability.classId, + secondaryClassId: ability.secondaryClassId, + sourceSkillId: ability.dbcSpellId, + })) return ability; + + const targeting = { shape: "circle" as const, radius: ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS }; + return { + ...ability, + name: "Curing Shot", + description: ROM_PRIEST_SCOUT_CURING_SHOT_DESCRIPTION, + target: "friendly", + range: { min: 0, max: ROM_PRIEST_SCOUT_CURING_SHOT_RANGE }, + radius: ROM_PRIEST_SCOUT_CURING_SHOT_RADIUS, + targeting, + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS, + effects: CURING_SHOT_EFFECTS, + passive: false, + romSkillGroup: "elite", + // Preserve the RuneWaker 120 MP cost and any rank-local costs. + ranks: ability.ranks?.map((rank) => ({ + ...rank, + description: ROM_PRIEST_SCOUT_CURING_SHOT_DESCRIPTION, + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_PRIEST_SCOUT_CURING_SHOT_COOLDOWN_MS, + effects: CURING_SHOT_EFFECTS, + targeting, + })), + }; +} diff --git a/src/game/romPriestScoutSaintsBlessingDamage.integration.test.ts b/src/game/romPriestScoutSaintsBlessingDamage.integration.test.ts new file mode 100644 index 00000000..3b6b1af8 --- /dev/null +++ b/src/game/romPriestScoutSaintsBlessingDamage.integration.test.ts @@ -0,0 +1,177 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { abilityById } from "./abilityCatalog"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { useCombatStore, type TimedCombatEffect } from "./combatStore"; +import { createConfiguredPartyMember, usePartyStore, type PartyMember } from "./partyStore"; + +const ICE_BLADE = abilityById("rom-priest-rom-scout-elite-40"); +const BONE_CHILL = abilityById("rom-priest-primary-4"); + +function registerTarget(id: string, health: number): void { + useCombatStore.getState().registerMob(id, { name: id, maxHealth: 1_000, xpReward: 0, level: 80 }); + setMobPosition(id, [3, 0, 0]); + useCombatStore.setState((state) => ({ + mobs: { ...state.mobs, [id]: { ...state.mobs[id], health } }, + })); +} + +function lastDamageEvent(targetId: string, sourceActorId: string, abilityId: string) { + return useCombatStore.getState().combatEvents + .filter((event) => event.kind === "damage" + && event.targetActorId === targetId + && event.sourceActorId === sourceActorId + && event.abilityId === abilityId) + .slice(-1)[0]; +} + +function directRolledDamage(targetId: string, sourceActorId: string, abilityId: string, now: number) { + return useCombatStore.getState().damageMob( + targetId, + 100, + now, + { actorId: sourceActorId, role: "damage", abilityId }, + "frost", + { + attackKind: "spell", + abilityId, + seed: `saints-blessing:${sourceActorId}:${targetId}:${now}`, + rules: { + canMiss: false, + canCrit: false, + canDodge: false, + canParry: false, + canBlock: false, + }, + }, + ); +} + +describe("CoA Priest/Scout Saint's Blessing damage integration", () => { + let companion: PartyMember; + + beforeEach(() => { + clearMobRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + secondaryClassId: "rom-scout", + raceId: "rom-human", + level: 80, + role: "damage", + }); + usePartyStore.getState().initializeParty( + "saints-blessing-damage-integration", 80, useCombatStore.getState().health, "damage", 2, "rom", + ); + companion = createConfiguredPartyMember({ + name: "Priest Scout", + classId: "rom-priest", + secondaryClassId: "rom-scout", + specialization: "Primary", + role: "damage", + }, 80, 0, "saints-blessing-damage-companion"); + usePartyStore.setState({ members: [companion] }); + }); + + it("applies +28% to player Ice Blade only below 30% current health", () => { + if (!ICE_BLADE) throw new Error("Generated Priest/Scout Ice Blade (490070) is missing."); + expect(ICE_BLADE.dbcSpellId).toBe(490_070); + + const rawAmounts = new Map(); + for (const health of [299, 300, 301]) { + const targetId = `saints-player-${health}`; + registerTarget(targetId, health); + directRolledDamage(targetId, PLAYER_AGGRO_ID, ICE_BLADE.id, health); + + rawAmounts.set(health, lastDamageEvent(targetId, PLAYER_AGGRO_ID, ICE_BLADE.id)?.rawAmount ?? 0); + } + const atThreshold = rawAmounts.get(300) ?? 0; + expect(rawAmounts.get(299)).toBe(Math.round(atThreshold * 1.28)); + expect(rawAmounts.get(301)).toBe(atThreshold); + }); + + it("applies +28% to a generated Priest/Scout companion's rolled hit below 30%", () => { + if (!ICE_BLADE) throw new Error("Generated Priest/Scout Ice Blade (490070) is missing."); + expect(companion.classId).toBe("rom-priest"); + expect(companion.secondaryClassId).toBe("rom-scout"); + + const rawAmounts = new Map(); + for (const health of [299, 300, 301]) { + const targetId = `saints-companion-${health}`; + registerTarget(targetId, health); + directRolledDamage(targetId, companion.id, ICE_BLADE.id, health); + + rawAmounts.set(health, lastDamageEvent(targetId, companion.id, ICE_BLADE.id)?.rawAmount ?? 0); + } + const atThreshold = rawAmounts.get(300) ?? 0; + expect(atThreshold).toBe(100); + expect(rawAmounts.get(299)).toBe(Math.round(atThreshold * 1.28)); + expect(rawAmounts.get(301)).toBe(atThreshold); + }); + + it("applies the raw damage path once and excludes a different secondary class", () => { + if (!ICE_BLADE) throw new Error("Generated Priest/Scout Ice Blade (490070) is missing."); + const targetId = "saints-raw-companion"; + registerTarget(targetId, 299); + useCombatStore.getState().damageMob( + targetId, + 100, + 1_000, + { actorId: companion.id, role: "damage", abilityId: ICE_BLADE.id }, + "frost", + ); + expect(lastDamageEvent(targetId, companion.id, ICE_BLADE.id)?.rawAmount).toBe(128); + + useCombatStore.getState().initializeCharacter({ + classId: "rom-priest", + secondaryClassId: "rom-mage", + raceId: "rom-human", + level: 80, + role: "damage", + }); + const excludedTargetId = "saints-wrong-pair"; + registerTarget(excludedTargetId, 299); + useCombatStore.getState().damageMob( + excludedTargetId, + 100, + 2_000, + { actorId: PLAYER_AGGRO_ID, role: "damage", abilityId: ICE_BLADE.id }, + "frost", + ); + expect(lastDamageEvent(excludedTargetId, PLAYER_AGGRO_ID, ICE_BLADE.id)?.rawAmount).toBe(100); + }); + + it.each([ + ["player", PLAYER_AGGRO_ID], + ["generated companion", "companion"], + ] as const)("checks the live health threshold on each %s Bone Chill tick", (_label, actor) => { + if (!BONE_CHILL) throw new Error("Generated Priest Bone Chill (491165) is missing."); + const sourceActorId = actor === "companion" ? companion.id : actor; + const targetId = `saints-periodic-${sourceActorId}`; + registerTarget(targetId, 350); + const effect: TimedCombatEffect = { + id: `saints-periodic-effect-${sourceActorId}`, + kind: "dot", + sourceActorId, + sourceAbilityId: BONE_CHILL.id, + targetId, + coefficient: 0, + fixedAmount: 100, + remainingTicks: 2, + intervalMs: 1_000, + nextTickAt: 1_000, + damageSchool: "frost", + }; + useCombatStore.setState((state) => ({ effects: [...state.effects, effect] })); + + useCombatStore.getState().tick(0, 1_000); + const firstTickAmount = lastDamageEvent(targetId, sourceActorId, BONE_CHILL.id)?.rawAmount ?? 0; + expect(firstTickAmount).toBeGreaterThan(0); + expect(useCombatStore.getState().mobs[targetId].health).toBe(350 - firstTickAmount); + + useCombatStore.getState().tick(0, 2_000); + expect(lastDamageEvent(targetId, sourceActorId, BONE_CHILL.id)?.rawAmount) + .toBe(Math.round(firstTickAmount * 1.28)); + expect(useCombatStore.getState().mobs[targetId].health) + .toBe(350 - firstTickAmount - Math.round(firstTickAmount * 1.28)); + }); +}); diff --git a/src/game/romPriestScoutSaintsBlessingDamage.test.ts b/src/game/romPriestScoutSaintsBlessingDamage.test.ts new file mode 100644 index 00000000..01769624 --- /dev/null +++ b/src/game/romPriestScoutSaintsBlessingDamage.test.ts @@ -0,0 +1,37 @@ +import { describe, expect, it } from "vitest"; +import { romPriestScoutSaintsBlessingDamageMultiplier } from "./romPriestScoutSaintsBlessingDamage"; + +const base = { + primaryClassId: "rom-priest", + secondaryClassId: "rom-scout", + learnedPassiveSpellIds: [493_039], +}; + +describe("CoA Priest/Scout Saint's Blessing execute damage rider", () => { + it("grants +28% damage below, but not at, the 30% target-health threshold", () => { + expect(romPriestScoutSaintsBlessingDamageMultiplier({ ...base, targetHealthPercent: 0.299 })) + .toBeCloseTo(1.28); + expect(romPriestScoutSaintsBlessingDamageMultiplier({ ...base, targetHealthPercent: 0.3 })) + .toBe(1); + }); + + it("requires the exact Priest-primary/Scout-secondary pair and learned passive", () => { + expect(romPriestScoutSaintsBlessingDamageMultiplier({ + ...base, + primaryClassId: "rom-scout", + secondaryClassId: "rom-priest", + targetHealthPercent: 0.1, + })).toBe(1); + expect(romPriestScoutSaintsBlessingDamageMultiplier({ + ...base, + learnedPassiveSpellIds: [], + targetHealthPercent: 0.1, + })).toBe(1); + }); + + it("does not apply to dead, invalid, or full-health targets", () => { + for (const targetHealthPercent of [0, 0.3, 1, Number.NaN, Number.POSITIVE_INFINITY]) { + expect(romPriestScoutSaintsBlessingDamageMultiplier({ ...base, targetHealthPercent })).toBe(1); + } + }); +}); diff --git a/src/game/romPriestScoutSaintsBlessingDamage.ts b/src/game/romPriestScoutSaintsBlessingDamage.ts new file mode 100644 index 00000000..185ed067 --- /dev/null +++ b/src/game/romPriestScoutSaintsBlessingDamage.ts @@ -0,0 +1,34 @@ +/** Current CoA Priest/Scout Saint's Blessing's conditional damage rider. */ +export const ROM_PRIEST_SCOUT_SAINTS_BLESSING_DAMAGE = Object.freeze({ + passiveSpellId: 493_039, + targetHealthThreshold: 0.3, + damageBonus: 0.28, +}); + +export interface RomPriestScoutSaintsBlessingDamageContext { + readonly primaryClassId: string; + readonly secondaryClassId?: string; + readonly learnedPassiveSpellIds: readonly number[]; + /** Target's current health divided by its maximum health at damage resolution. */ + readonly targetHealthPercent: number; +} + +/** + * Return the current CoA multiplier for a damage packet resolved against a + * living target below 30% maximum health. The caller should evaluate this at + * each damage event so the threshold follows the target's live health. + */ +export function romPriestScoutSaintsBlessingDamageMultiplier( + context: RomPriestScoutSaintsBlessingDamageContext, +): number { + if (context.primaryClassId !== "rom-priest" + || context.secondaryClassId !== "rom-scout" + || !context.learnedPassiveSpellIds.includes(ROM_PRIEST_SCOUT_SAINTS_BLESSING_DAMAGE.passiveSpellId) + || !Number.isFinite(context.targetHealthPercent) + || context.targetHealthPercent <= 0 + || context.targetHealthPercent >= ROM_PRIEST_SCOUT_SAINTS_BLESSING_DAMAGE.targetHealthThreshold) { + return 1; + } + + return 1 + ROM_PRIEST_SCOUT_SAINTS_BLESSING_DAMAGE.damageBonus; +} diff --git a/src/game/romPriestTooltips.test.ts b/src/game/romPriestTooltips.test.ts new file mode 100644 index 00000000..4d2a35d8 --- /dev/null +++ b/src/game/romPriestTooltips.test.ts @@ -0,0 +1,33 @@ +import { describe, expect, it } from "vitest"; +import { romPriestDescription, romPriestName } from "./romPriestTooltips"; + +describe("current CoA Priest skill labels and descriptions", () => { + it("maps the reused Ice Fog IDs to their current CoA names", () => { + expect(romPriestName(490274, "Ice Fog")).toBe("Holy Blessing"); + expect(romPriestName(490275, "Ice Fog")).toBe("Vow of Silence"); + expect(romPriestName(490276, "Ice Fog")).toBe("Holy Void"); + expect(romPriestName(490273, "Wave Armor")).toBe("Wave Armor"); + }); + + it("describes Holy Blessing's current Wisdom formula and Light damage bonus", () => { + const description = romPriestDescription(490274, "old Ice Fog tooltip"); + expect(description).toContain("passive"); + expect(description).toContain("Wisdom + 115"); + expect(description).toContain("10.5%"); + expect(description).toContain("Light Damage bonus: +100.9%"); + }); + + it("documents Vow of Silence interruption and PvP duration", () => { + const description = romPriestDescription(490275, "old Ice Fog tooltip"); + expect(description).toContain("interrupts"); + expect(description).toContain("8.4 seconds"); + expect(description).toContain("4.2 seconds against players"); + }); + + it("documents Holy Void damage and defense reduction", () => { + const description = romPriestDescription(490276, "old Ice Fog tooltip"); + expect(description).toContain("1655 Light Damage"); + expect(description).toContain("18.8%"); + expect(description).toContain("20 seconds"); + }); +}); diff --git a/src/game/romPriestTooltips.ts b/src/game/romPriestTooltips.ts index 04366bba..efc48b09 100644 --- a/src/game/romPriestTooltips.ts +++ b/src/game/romPriestTooltips.ts @@ -1,9 +1,11 @@ +import { ROM_PRIEST_HOLY_CANDLE_DESCRIPTION } from "./romPriestHolyCandleRuntime"; + /** Player-facing copy for the active Priest / Knight kit. Source string tokens * such as Buff0-Time refer to client tables that are not present in the UI. */ const PRIEST_DESCRIPTIONS: Readonly> = { 490273: "Shields a friendly target from damage for 60 seconds and reduces physical and magical damage taken while the shield lasts.", 490261: "Restores health to a friendly target.", - 490274: "Surrounds the target with icy fog, slowing it for a short time.", + 490274: "Holy Blessing (passive). Wisdom bonus: (current Wisdom + 115) × 10.5% + 115. Light Damage bonus: +100.9%.", 491165: "Chills the target with Water damage every 2 seconds for 12 seconds.", 490297: "Bonds with a friendly target for 30 minutes, allowing it to revive once at the place where it falls.", 490290: "Increases a friendly target's maximum health for 30 minutes.", @@ -12,11 +14,11 @@ const PRIEST_DESCRIPTIONS: Readonly> = { 490491: "Increases a friendly target's physical attack power for 30 minutes. Does not stack with similar effects.", 490305: "Passive: increases Water resistance and Water spell damage.", 490295: "Passive: increases the healing done by your spells.", - 490275: "Surrounds the target with icy fog, slowing it for a short time.", + 490275: "Vow of Silence interrupts the target's spell casting and silences it for 8.4 seconds (4.2 seconds against players).", 490294: "Increases healing received by a friendly target for 60 seconds.", 490301: "Temporarily reduces your threat against enemies.", - 490276: "Surrounds the target with icy fog, slowing it for a short time.", - 490304: "Consumes some of your health each second to increase the healing you do.", + 490276: "Holy Void inflicts 1655 Light Damage and applies Voidal Infection, reducing the target's defenses by 18.8% for 20 seconds.", + 490304: ROM_PRIEST_HOLY_CANDLE_DESCRIPTION, 491176: "Revives a dead friendly target outside combat with reduced death debt.", 491177: "Revives a dead friendly target outside combat with greatly reduced death debt.", 491147: "Quickly restores health to a friendly target.", @@ -38,6 +40,16 @@ const PRIEST_DESCRIPTIONS: Readonly> = { 499957: "Passive: while Devotion Halo is active, increases your healing done.", }; +const PRIEST_NAMES: Readonly> = { + 490274: "Holy Blessing", + 490275: "Vow of Silence", + 490276: "Holy Void", +}; + +export function romPriestName(sourceSkillId: number, original: string): string { + return PRIEST_NAMES[sourceSkillId] ?? original; +} + export function romPriestDescription(sourceSkillId: number, original: string): string { return PRIEST_DESCRIPTIONS[sourceSkillId] ?? original; } diff --git a/src/game/romRogueChaosDagger.test.ts b/src/game/romRogueChaosDagger.test.ts new file mode 100644 index 00000000..ac732f80 --- /dev/null +++ b/src/game/romRogueChaosDagger.test.ts @@ -0,0 +1,72 @@ +import { describe, expect, it } from "vitest"; +import { abilitiesForCharacter, learnedAbilityForBuild } from "./abilityCatalog"; +import { romRogueChaosDaggerDamage } from "./romRogueChaosDagger"; +import { ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG } from "./romRogueChaosDagger"; + +const baseInput = { + classId: "rom-rogue", + secondaryClassId: "rom-mage", + passiveLearned: true, + isAutoAttack: true, + attackLanded: true, + weaponHand: "main-hand" as const, + weaponDps: 100, +}; + +describe("current CoA Rogue/Mage Chaos Dagger", () => { + it("replaces the same-ID RuneWaker skill with the learned CoA passive and tooltip", () => { + const abilities = abilitiesForCharacter("rom-rogue", "rom-mage"); + const chaosDagger = abilities.find((ability) => ability.dbcSpellId === 491178); + expect(chaosDagger).toMatchObject({ + name: "Chaos Dagger", + passive: true, + target: "self", + castTimeMs: 0, + cooldownMs: 0, + cost: { resource: "mana", amount: 0 }, + costs: [], + }); + expect(chaosDagger?.description).toContain("169.4% of the attacking hand's weapon DPS"); + expect(chaosDagger?.description).toContain("amount or duration"); + expect(chaosDagger?.effects).toContainEqual(expect.objectContaining({ + kind: "apply-aura", + aura: expect.objectContaining({ + name: "Chaos Dagger", + utilityTags: [ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG], + }), + })); + expect(learnedAbilityForBuild(chaosDagger!, 14, {})).toBeNull(); + expect(learnedAbilityForBuild(chaosDagger!, 15, {})).not.toBeNull(); + expect(abilitiesForCharacter("rom-rogue", "rom-priest") + .some((ability) => ability.dbcSpellId === 491178)).toBe(false); + }); + + it("uses 169.4% of the weapon DPS for the hand that made the landed normal attack", () => { + expect(romRogueChaosDaggerDamage(baseInput)).toEqual({ + amount: 169.4, + school: "fire", + weaponHand: "main-hand", + }); + expect(romRogueChaosDaggerDamage({ + ...baseInput, + weaponHand: "off-hand", + weaponDps: 64.25, + })).toEqual({ + amount: 108.8395, + school: "fire", + weaponHand: "off-hand", + }); + }); + + it.each([ + ["wrong primary class", { classId: "rom-scout" }], + ["wrong secondary class", { secondaryClassId: "rom-priest" }], + ["passive not learned", { passiveLearned: false }], + ["not an autoattack", { isAutoAttack: false }], + ["attack missed", { attackLanded: false }], + ["zero weapon DPS", { weaponDps: 0 }], + ["invalid weapon DPS", { weaponDps: Number.NaN }], + ] as const)("does not add a packet for %s", (_label, override) => { + expect(romRogueChaosDaggerDamage({ ...baseInput, ...override })).toBeNull(); + }); +}); diff --git a/src/game/romRogueChaosDagger.ts b/src/game/romRogueChaosDagger.ts new file mode 100644 index 00000000..83ba5b67 --- /dev/null +++ b/src/game/romRogueChaosDagger.ts @@ -0,0 +1,41 @@ +export const ROM_ROGUE_MAGE_CHAOS_DAGGER_SPELL_ID = 491178; +export const ROM_ROGUE_MAGE_CHAOS_DAGGER_DAMAGE_COEFFICIENT = 1.694; +export const ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG = "rom-491178-chaos-dagger"; +export const ROM_ROGUE_MAGE_CHAOS_DAGGER_DESCRIPTION = "Passive: Each normal attack adds Fire damage equal to 169.4% of the attacking hand's weapon DPS. The CoA page also lists 25 MP while labeling this passive, but does not say whether Mana is spent per attack; no Mana charge is modeled pending clarification. The source describes a slight temporary Physical Attack Power increase without an amount or duration, so that rider is not modeled."; + +export type RomRogueChaosDaggerWeaponHand = "main-hand" | "off-hand"; + +export interface RomRogueChaosDaggerDamageInput { + readonly classId: string; + readonly secondaryClassId: string | null | undefined; + readonly passiveLearned: boolean; + readonly isAutoAttack: boolean; + readonly attackLanded: boolean; + readonly weaponHand: RomRogueChaosDaggerWeaponHand; + readonly weaponDps: number; +} + +export interface RomRogueChaosDaggerDamage { + readonly amount: number; + readonly school: "fire"; + readonly weaponHand: RomRogueChaosDaggerWeaponHand; +} + +/** Current CoA Chaos Dagger adds 169.4% of the attacking hand's weapon DPS to each landed autoattack. */ +export function romRogueChaosDaggerDamage( + input: RomRogueChaosDaggerDamageInput, +): RomRogueChaosDaggerDamage | null { + if (input.classId !== "rom-rogue" + || input.secondaryClassId !== "rom-mage" + || !input.passiveLearned + || !input.isAutoAttack + || !input.attackLanded + || !Number.isFinite(input.weaponDps) + || input.weaponDps <= 0) return null; + + return { + amount: input.weaponDps * ROM_ROGUE_MAGE_CHAOS_DAGGER_DAMAGE_COEFFICIENT, + school: "fire", + weaponHand: input.weaponHand, + }; +} diff --git a/src/game/romRogueCurrentCoaHands.integration.test.ts b/src/game/romRogueCurrentCoaHands.integration.test.ts new file mode 100644 index 00000000..a00ad52c --- /dev/null +++ b/src/game/romRogueCurrentCoaHands.integration.test.ts @@ -0,0 +1,107 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilityById } from "./abilityCatalog"; +import { useCombatStore } from "./combatStore"; +import { + advanceDungeonPartyCombat, + resetPartyRuntimeClock, +} from "./partyRuntime"; +import { registerPartyRuntimePosition, clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { partyAbilityCosts } from "./partyAbilityAi"; +import { + ROM_ROGUE_ENERGIZED_HANDS_AURA_TAG, + ROM_ROGUE_ENERGIZED_HANDS_COOLDOWN_REDUCTION_MS, + ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID, + ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP, +} from "./romRogueEnergizedHandsRuntime"; +import { ROM_ROGUE_POISON_AURA_TAG, ROM_ROGUE_POISON_SKILL_ID } from "./romRoguePoisonRuntime"; + +describe("RoM Rogue current CoA Hands skills", () => { + beforeEach(() => { + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "rom-rogue", raceId: "rom-human", level: 50, xp: 0 }); + useCombatStore.setState({ playerPosition: [0, 0, 0] }); + }); + + it("replaces the local 490347 Numbing Dagger row with Energized Hands and applies its player mechanics", () => { + const energized = abilityById("rom-rogue-primary-5")!; + const poisoned = abilityById("rom-rogue-primary-6")!; + expect(energized).toMatchObject({ + dbcSpellId: ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID, + name: "Energized Hands", + target: "self", + castTimeMs: 1_000, + cooldownMs: 0, + }); + expect(energized.description).toContain("maximum Energy by 50%"); + expect(poisoned).toMatchObject({ dbcSpellId: ROM_ROGUE_POISON_SKILL_ID, name: "Poisonous Hands", target: "self" }); + const poisonAura = poisoned.effects.find((effect) => effect.kind === "apply-aura"); + expect(poisonAura?.kind === "apply-aura" && poisonAura.aura.exclusiveGroup) + .toBe(ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP); + expect(energized.description).toContain("0.1 seconds"); + + expect(useCombatStore.getState().castAbility(energized.id, undefined, 1_000).ok).toBe(true); + useCombatStore.getState().tick(1.1, 2_100); + expect(useCombatStore.getState().maxResourcePools.energy).toBe(150); + expect(useCombatStore.getState().auras.some((aura) => aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes(ROM_ROGUE_ENERGIZED_HANDS_AURA_TAG))).toBe(true); + + expect(useCombatStore.getState().castAbility("rom-rogue-primary-14", undefined, 3_600).ok).toBe(true); + expect(useCombatStore.getState().cooldowns["rom-rogue-primary-14"]) + .toBe(3_600 + 120_000 - ROM_ROGUE_ENERGIZED_HANDS_COOLDOWN_REDUCTION_MS); + }); + + it("replaces Energized Hands with Poisonous Hands and restores the base Energy maximum", () => { + expect(useCombatStore.getState().castAbility("rom-rogue-primary-5", undefined, 1_000).ok).toBe(true); + useCombatStore.getState().tick(1.1, 2_100); + expect(useCombatStore.getState().maxResourcePools.energy).toBe(150); + expect(useCombatStore.getState().castAbility("rom-rogue-primary-6", undefined, 3_600).ok).toBe(true); + useCombatStore.getState().tick(1.1, 4_700); + + const auras = useCombatStore.getState().auras.filter((aura) => aura.targetId === PLAYER_AGGRO_ID + && aura.definition.exclusiveGroup === ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP); + expect(auras).toHaveLength(1); + expect(auras[0]?.definition.utilityTags).toContain(ROM_ROGUE_POISON_AURA_TAG); + expect(useCombatStore.getState().maxResourcePools.energy).toBe(100); + }); + + it("applies Energized Hands Energy capacity, cost, and regeneration to a generated companion", () => { + const member = createConfiguredPartyMember({ + name: "Rogue companion", + classId: "rom-rogue", + specialization: "Primary", + role: "damage", + }, 50, 0, "rogue-energized-hands"); + const energized = abilityById("rom-rogue-primary-5")!; + const effect = energized.effects.find((candidate) => candidate.kind === "apply-aura"); + if (effect?.kind !== "apply-aura") throw new Error("Missing Energized Hands aura effect."); + usePartyStore.getState().initializeParty("rogue-energized-hands", 50, 1_000, "damage", 1, "rom"); + usePartyStore.setState({ command: "stop", members: [{ ...member, nextActionAt: 100_000 }] }); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + expect(useCombatStore.getState().applyActorAura(member.id, member.id, energized, effect, 1_000)).toBe(true); + let current = usePartyStore.getState().members[0]!; + expect(current.maxResource).toBe(150); + expect(useCombatStore.getState().actors[member.id]?.resources.energy?.maximum).toBe(150); + + const costProbe = { + ...abilityById("rom-rogue-primary-14")!, + cost: { resource: "energy" as const, amount: 25 }, + costs: [{ resource: "energy" as const, amount: 25 }], + }; + expect(partyAbilityCosts(current, costProbe, 1_000)).toEqual([{ resource: "energy", amount: 30 }]); + + const reduced = { ...current, resource: 50, resourcePools: { ...current.resourcePools, energy: 50 } }; + usePartyStore.setState({ members: [reduced] }); + useCombatStore.getState().commitCompanionActors([reduced]); + resetPartyRuntimeClock(); + advanceDungeonPartyCombat(2_000); + advanceDungeonPartyCombat(3_000); + current = usePartyStore.getState().members[0]!; + expect(current.resource).toBe(70); + expect(useCombatStore.getState().actors[member.id]?.resources.energy?.maximum).toBe(150); + }); +}); diff --git a/src/game/romRogueEnergizedHandsRuntime.ts b/src/game/romRogueEnergizedHandsRuntime.ts new file mode 100644 index 00000000..47be7091 --- /dev/null +++ b/src/game/romRogueEnergizedHandsRuntime.ts @@ -0,0 +1,103 @@ +import type { ActiveAura, AuraDefinition, AuraModifier } from "./combatAuras"; +import type { AbilityEffect } from "./abilityCatalog"; + +export const ROM_ROGUE_ENERGIZED_HANDS_SKILL_ID = 490347; +export const ROM_ROGUE_ENERGIZED_HANDS_AURA_TAG = "rom-energized-hands"; +export const ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP = "rom-rogue-hands"; +export const ROM_ROGUE_ENERGIZED_HANDS_DURATION_MS = 900_000; +export const ROM_ROGUE_ENERGIZED_HANDS_COOLDOWN_REDUCTION_MS = 100; +export const ROM_ROGUE_ENERGIZED_HANDS_MAX_ENERGY_PERCENT = 50; +export const ROM_ROGUE_ENERGIZED_HANDS_REGENERATION_PERCENT = 100; +export const ROM_ROGUE_ENERGIZED_HANDS_COST_PERCENT = 20; + +export const ROM_ROGUE_ENERGIZED_HANDS_DESCRIPTION = + "Increases Energy recovery by 100%, reduces skill cooldowns by 0.1 seconds, and increases maximum Energy by 50%, but increases Energy costs by 20% for 900 seconds. Mutually exclusive with Poisonous Hands."; + +export const ROM_ROGUE_POISONOUS_HANDS_DESCRIPTION = + "Uses 1 Poison Bottle. For 900 seconds, regular attacks have a 50% chance to apply Poisonous Hands to the target, reducing damage dealt by the target by 8%. Each successful application stacks up to 10 times and grants you 1% Physical Attack Speed per stack applied to your current target. Attacking a new target resets this attack-speed sequence. Mutually exclusive with Energized Hands."; + +export function romRogueEnergizedHandsAuraDefinition(): AuraDefinition { + const modifiers: readonly AuraModifier[] = [ + { + kind: "resource", + resource: "energy", + property: "maximum", + operation: "percent", + value: ROM_ROGUE_ENERGIZED_HANDS_MAX_ENERGY_PERCENT / 100, + }, + { + kind: "resource", + resource: "energy", + property: "regeneration", + operation: "percent", + value: ROM_ROGUE_ENERGIZED_HANDS_REGENERATION_PERCENT / 100, + }, + { + kind: "resource", + resource: "energy", + property: "cost", + operation: "percent", + value: ROM_ROGUE_ENERGIZED_HANDS_COST_PERCENT / 100, + }, + ]; + return { + id: "rom-rogue-energized-hands", + name: "Energized Hands", + description: ROM_ROGUE_ENERGIZED_HANDS_DESCRIPTION, + disposition: "buff", + durationMs: ROM_ROGUE_ENERGIZED_HANDS_DURATION_MS, + exclusiveGroup: ROM_ROGUE_POISONOUS_HANDS_EXCLUSIVE_GROUP, + utilityTags: [ROM_ROGUE_ENERGIZED_HANDS_AURA_TAG], + modifiers, + }; +} + +export function romRogueEnergizedHandsApplyEffect(): AbilityEffect { + return { + kind: "apply-aura", + recipient: "caster", + sourceEffectType: 6, + sourceAuraType: 0, + miscValue: 0, + triggerSpellId: 0, + aura: romRogueEnergizedHandsAuraDefinition(), + }; +} + +export function romRogueEnergizedHandsActive( + auras: readonly ActiveAura[], + actorId: string, + now?: number, +): boolean { + return auras.some((aura) => aura.targetId === actorId + && aura.definition.utilityTags?.includes(ROM_ROGUE_ENERGIZED_HANDS_AURA_TAG) + && (now === undefined || aura.expiresAt === null || aura.expiresAt > now)); +} + +/** + * Translate the current max-Energy aura between snapshots without changing + * current Energy. The stored pool maximum is the runtime authority, so apply + * only the ratio of the old and new aura modifiers (refreshes remain neutral). + */ +export function romRogueEnergyMaximumAfterAuraTransition( + currentMaximum: number, + previousAuras: readonly ActiveAura[], + nextAuras: readonly ActiveAura[], + targetId: string, +): number { + const maximumModifier = (auras: readonly ActiveAura[]) => auras + .filter((aura) => aura.targetId === targetId) + .reduce((total, aura) => { + const hasEnergizedHands = aura.definition.utilityTags?.includes(ROM_ROGUE_ENERGIZED_HANDS_AURA_TAG); + if (!hasEnergizedHands) return total; + const percent = (aura.definition.modifiers ?? []).reduce((value, modifier) => ( + modifier.kind === "resource" && modifier.resource === "energy" && modifier.property === "maximum" + ? value + (modifier.operation === "percent" ? modifier.value : 0) + : value + ), 0); + return total * (1 + percent); + }, 1); + const previous = maximumModifier(previousAuras); + const next = maximumModifier(nextAuras); + return Math.max(0, Math.round(currentMaximum * next / Math.max(0.0001, previous))); +} diff --git a/src/game/romRogueMechanics.test.ts b/src/game/romRogueMechanics.test.ts index b6b6a33b..63bc9ba4 100644 --- a/src/game/romRogueMechanics.test.ts +++ b/src/game/romRogueMechanics.test.ts @@ -8,22 +8,30 @@ import { romEffectsForCast } from "./romCombatMechanics"; import { PLAYER_AGGRO_ID } from "./aggro"; import { registerCombatSpatialProvider, resetCombatSpatialProvider } from "./combatSpatial"; import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; +import { subscribeCombatPresentation, type CombatPresentationEvent } from "./combatPresentation"; import { resolvedEquipmentLoadout } from "./heirloomEquipment"; import { PLAYER_EQUIPMENT_OWNER_ID } from "./equipment"; import { combatAttackTable } from "./combatResults"; import { usePartyStore } from "./partyStore"; import { + ROM_ROGUE_COERCE_DAMAGE_MULTIPLIER, + ROM_ROGUE_COERCE_ENERGY_COST_REDUCTION, + ROM_ROGUE_COERCE_LOW_BLOW_SPELL_ID, + ROM_ROGUE_COERCE_PASSIVE_SPELL_ID, + ROM_ROGUE_COERCE_TAG, ROM_ROGUE_DAGGER_MASTERY_TAG, ROM_ROGUE_INSTANT_SHADOW_READY_TAG, + ROM_ROGUE_OFF_HAND_MASTERY_TAG, ROM_ROGUE_SHADOW_WALKER_PASSIVE_SPELL_ID, ROM_ROGUE_TREASURE_HUNTER_TAG, + romRogueCoerceAbilityAdjustment, + romRogueCoerceLowBlowDamageMultiplier, romRogueDaggerDamageMultiplier, - romRogueEnchantedThrowShouldProc, romRogueShadowWalkerAdjustment, romRogueTreasureHunterLootChance, } from "./romRogueMechanics"; import { - ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG, + ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG, ROM_ROGUE_PRIEST_SINISTER_METHODS_COOLDOWN_KEY, ROM_ROGUE_PRIEST_SINISTER_METHODS_TAG, romRogueMageDayOfRainBaseMissPercent, @@ -127,7 +135,90 @@ describe("RoM Rogue source mechanics", () => { .toContain(ROM_ROGUE_DAGGER_MASTERY_TAG); expect(treasureHunter?.kind === "apply-aura" && treasureHunter.aura.utilityTags) .toContain(ROM_ROGUE_TREASURE_HUNTER_TAG); - expect(abilityById("rom-rogue-primary-12")!.effects).toEqual([]); + expect(effectAuras("rom-rogue-primary-12")[0]).toEqual(expect.objectContaining({ + kind: "apply-aura", + aura: expect.objectContaining({ utilityTags: [ROM_ROGUE_OFF_HAND_MASTERY_TAG] }), + })); + }); + + it("translates Coerce to a learned Rogue/Scout marker for current Low Blow behavior", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-rogue", secondaryClassId: "rom-scout", raceId: "rom-human", level: 80, + }); + const passive = abilityById("rom-rogue-rom-scout-elite-45")!; + const [marker] = effectAuras(passive.id); + expect(marker?.kind === "apply-aura" && marker.aura.utilityTags).toContain(ROM_ROGUE_COERCE_TAG); + expect(marker?.kind === "apply-aura" && marker.aura.modifiers).toBeUndefined(); + }); + + it("applies Coerce's sourced 20.2% Low Blow multiplier only to learned Rogue/Scout Low Blow", () => { + const context = { + classId: "rom-rogue", + abilitySource: "runewaker", + abilitySpellId: ROM_ROGUE_COERCE_LOW_BLOW_SPELL_ID, + passiveTags: [ROM_ROGUE_COERCE_TAG], + } as const; + expect(romRogueCoerceLowBlowDamageMultiplier(context)).toBe(ROM_ROGUE_COERCE_DAMAGE_MULTIPLIER); + expect(romRogueCoerceLowBlowDamageMultiplier({ ...context, abilitySpellId: 490324 })).toBe(1); + expect(romRogueCoerceLowBlowDamageMultiplier({ ...context, passiveTags: [] })).toBe(1); + }); + + it("reduces only learned Rogue/Scout Low Blow's Energy cost by the local sourced amount", () => { + const passiveSpellIds = [ROM_ROGUE_COERCE_PASSIVE_SPELL_ID]; + expect(romRogueCoerceAbilityAdjustment( + "rom-rogue", "rom-scout", "runewaker", ROM_ROGUE_COERCE_LOW_BLOW_SPELL_ID, passiveSpellIds, + )).toMatchObject({ energyCostReduction: ROM_ROGUE_COERCE_ENERGY_COST_REDUCTION, cooldownIncreaseMs: 0 }); + expect(romRogueCoerceAbilityAdjustment( + "rom-rogue", "rom-scout", "runewaker", 490324, passiveSpellIds, + ).energyCostReduction).toBe(0); + expect(romRogueCoerceAbilityAdjustment( + "rom-rogue", "rom-priest", "runewaker", ROM_ROGUE_COERCE_LOW_BLOW_SPELL_ID, passiveSpellIds, + ).energyCostReduction).toBe(0); + expect(romRogueCoerceAbilityAdjustment( + "rom-rogue", "rom-scout", "runewaker", ROM_ROGUE_COERCE_LOW_BLOW_SPELL_ID, [], + ).energyCostReduction).toBe(0); + }); + + it("applies Coerce's reduced Low Blow Energy cost during a Rogue/Scout player cast", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-rogue", secondaryClassId: "rom-scout", raceId: "rom-human", level: 80, + }); + const targetId = "rogue-coerce-target"; + useCombatStore.getState().registerMob(targetId, { + name: "Coerce target", maxHealth: 100_000, level: 80, xpReward: 0, + }); + setMobPosition(targetId, [0, 0, 2]); + useCombatStore.getState().selectMob(targetId); + useCombatStore.setState((state) => ({ + gearStats: { ...state.gearStats, hitRating: 1_000_000 }, + resourcePools: { ...state.resourcePools, energy: state.maxResourcePools.energy ?? 100 }, + })); + const beforeEnergy = useCombatStore.getState().resourcePools.energy!; + expect(useCombatStore.getState().castAbility("rom-rogue-primary-1", { targetActorId: targetId, now: 1_000 })) + .toMatchObject({ ok: true }); + expect(beforeEnergy - useCombatStore.getState().resourcePools.energy!).toBe(25); + }); + + it("scales Low Blow's damage effects by the current Coerce value for player and party cast contexts", () => { + const lowBlow = abilityById("rom-rogue-primary-1")!; + const context = { + sealStacks: 0, + bleedCount: 0, + charged: false, + mainHandDagger: false, + casterMaxHealth: 1_000, + targetHealthPercent: 1, + passiveTags: [ROM_ROGUE_COERCE_TAG], + } as const; + const base = romEffectsForCast(lowBlow, { ...context, passiveTags: [] }); + const coerced = romEffectsForCast(lowBlow, context); + const baseDamage = base.filter((effect) => effect.kind === "damage"); + const coercedDamage = coerced.filter((effect) => effect.kind === "damage"); + expect(coercedDamage).toHaveLength(baseDamage.length); + expect(coercedDamage.map((effect) => effect.kind === "damage" && effect.coefficient)) + .toEqual(baseDamage.map((effect) => effect.kind === "damage" && effect.coefficient * ROM_ROGUE_COERCE_DAMAGE_MULTIPLIER)); + expect(romEffectsForCast(lowBlow, { ...context, passiveTags: [] }).filter((effect) => effect.kind === "damage")) + .toEqual(baseDamage); }); it("learns Sinister Methods as a proc marker without an always-on critical aura", () => { @@ -301,54 +392,143 @@ describe("RoM Rogue source mechanics", () => { expect(romRogueDaggerDamageMultiplier({ ...context, passiveTags: [] })).toBe(1); }); - it("adds the referenced Throw payload to landed Rogue/Mage normal attacks while Enchanted Throw is active", () => { - const simulateAutoAttacks = (enchanted: boolean) => { - clearMobRuntimeRegistry(); - useCombatStore.getState().initializeCharacter({ - classId: "rom-rogue", secondaryClassId: "rom-mage", raceId: "rom-human", level: 30, - }); - useCombatStore.getState().registerMob("enchanted-throw-target", { name: "Target", maxHealth: 1_000_000 }); - setMobPosition("enchanted-throw-target", [0, 0, 3]); - if (enchanted) { - expect(useCombatStore.getState().castAbility("rom-rogue-rom-mage-elite-15", undefined, 1_000).ok).toBe(true); - } - useCombatStore.setState({ autoAttackTargetId: "enchanted-throw-target", nextAutoAttackAt: 1_500 }); - for (let now = 1_500; now <= 20_000; now += 250) { - useCombatStore.getState().tick(0.25, now); - if (useCombatStore.getState().combatEvents.some((event) => ( - event.kind === "damage" && event.abilityId === "rom-rogue-general-1" - ))) break; - } - return useCombatStore.getState().combatEvents.filter((event) => ( - event.kind === "damage" && event.targetActorId === "enchanted-throw-target" - )); + it("adds the CoA Fire packet from each landed Chaos Dagger hand and mitigates it as Fire", () => { + const weaponStats = { ...useCombatStore.getState().gearStats, hitRating: 1_000_000 }; + const mainHandDamage = { damageMin: 100, damageMax: 100, damageSchool: "physical" as const, speedMs: 2_000 }; + const offHandDamage = { damageMin: 40, damageMax: 40, damageSchool: "physical" as const, speedMs: 2_000 }; + const mainHand = testWeapon("dagger", "chaos-dagger-player-main", { ...weaponStats, meleeWeapon: mainHandDamage }); + const offHand = { + ...testWeapon("dagger", "chaos-dagger-player-off", { ...weaponStats, meleeWeapon: offHandDamage }), + inventorySlot: "off-hand" as const, }; + clearMobRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-rogue", secondaryClassId: "rom-mage", raceId: "rom-human", level: 80, + inventory: [mainHand, offHand], + equipment: { player: { "main-hand": mainHand.instanceId, "off-hand": offHand.instanceId } }, + }); + const manaBefore = useCombatStore.getState().resourcePools.mana; + useCombatStore.getState().registerMob("chaos-dagger-target", { + name: "Chaos Dagger target", maxHealth: 1_000_000, level: 80, + schoolImmunities: ["fire"], + }); + setMobPosition("chaos-dagger-target", [0, 0, 3]); + useCombatStore.setState({ + autoAttackTargetId: "chaos-dagger-target", + nextAutoAttackAt: 1_500, + nextOffhandAutoAttackAt: 1_500, + }); + useCombatStore.getState().tick(0.25, 1_500); - const enchantedHits = simulateAutoAttacks(true); - expect(enchantedHits.some((event) => event.abilityId === "rom-rogue-general-1" - && event.school === "physical" && event.effectiveAmount > 0)).toBe(true); - - const ordinaryHits = simulateAutoAttacks(false); - expect(ordinaryHits.some((event) => event.abilityId === undefined)).toBe(true); - expect(ordinaryHits.some((event) => event.abilityId === "rom-rogue-general-1")).toBe(false); + const hits = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.targetActorId === "chaos-dagger-target" + )); + const fireHits = hits.filter((event) => event.school === "fire"); + expect(fireHits.map((event) => event.rawAmount).sort((a, b) => a - b)).toEqual([34, 85]); + expect(fireHits.every((event) => event.effectiveAmount === 0)).toBe(true); + expect(hits.some((event) => event.school === "physical" && event.effectiveAmount > 0)).toBe(true); + expect(useCombatStore.getState().resourcePools.mana).toBe(manaBefore); }); - it("only qualifies landed Rogue/Mage player normal attacks for Enchanted Throw", () => { - const context = { - classId: "rom-rogue", - secondaryClassId: "rom-mage", - sourceActorId: "player", - playerActorId: "player", - attackKind: "melee", - isAutoAttack: true, - attackLanded: true, - enchantedThrowActive: true, + it.each([ + ["unlearned below level 15", 14, "rom-mage", 80], + ["wrong secondary class", 80, "rom-warrior", 80], + ["missed attack", 80, "rom-mage", 255], + ] as const)("does not add Chaos Dagger Fire damage for %s", (_label, level, secondaryClassId, targetLevel) => { + clearMobRuntimeRegistry(); + const gear = { ...useCombatStore.getState().gearStats, hitRating: targetLevel === 255 ? 0 : 1_000_000 }; + const mainHand = testWeapon("dagger", `chaos-dagger-gated-main-${level}-${secondaryClassId}-${targetLevel}`, { + ...gear, + meleeWeapon: { damageMin: 100, damageMax: 100, damageSchool: "physical" as const, speedMs: 2_000 }, + }); + const offHand = { + ...testWeapon("dagger", `chaos-dagger-gated-off-${level}-${secondaryClassId}-${targetLevel}`, { + ...gear, + meleeWeapon: { damageMin: 40, damageMax: 40, damageSchool: "physical" as const, speedMs: 2_000 }, + }), + inventorySlot: "off-hand" as const, + }; + useCombatStore.getState().initializeCharacter({ + classId: "rom-rogue", secondaryClassId, raceId: "rom-human", level, + inventory: [mainHand, offHand], + equipment: { player: { "main-hand": mainHand.instanceId, "off-hand": offHand.instanceId } }, + }); + useCombatStore.getState().registerMob("chaos-dagger-gated-target", { + name: "Target", maxHealth: 1_000_000, level: targetLevel, + }); + setMobPosition("chaos-dagger-gated-target", [0, 0, 3]); + useCombatStore.setState({ + autoAttackTargetId: "chaos-dagger-gated-target", + nextAutoAttackAt: 1_500, + nextOffhandAutoAttackAt: 1_500, + }); + for (let now = 1_500; now <= 20_000; now += 250) { + useCombatStore.getState().tick(0.25, now); + if (now === 1_500 && targetLevel === 255) break; + } + const damage = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.targetActorId === "chaos-dagger-gated-target" + )); + expect(damage.some((event) => event.school === "fire")).toBe(false); + }); + + it("applies Off Hand Mastery damage only to the RoM Rogue player's equipped off-hand swing", () => { + const simulateOffhand = (masteryActive: boolean) => { + const weaponStats = { + ...useCombatStore.getState().gearStats, + hitRating: 1_000_000, + meleeWeapon: { damageMin: 2_000, damageMax: 2_000, damageSchool: "physical" as const, speedMs: 2_000 }, + }; + const mainHand = testWeapon("dagger", `rom-offhand-main-${masteryActive}`, weaponStats); + const offHand = { + ...testWeapon("dagger", `rom-offhand-second-${masteryActive}`, weaponStats), + inventorySlot: "off-hand" as const, + }; + useCombatStore.getState().initializeCharacter({ + classId: "rom-rogue", + raceId: "rom-human", + level: 80, + inventory: [mainHand, offHand], + equipment: { player: { "main-hand": mainHand.instanceId, "off-hand": offHand.instanceId } }, + }); + expect(useCombatStore.getState().auras.some((aura) => ( + aura.definition.utilityTags?.includes(ROM_ROGUE_OFF_HAND_MASTERY_TAG) + ))).toBe(true); + useCombatStore.getState().registerMob("rom-offhand-mastery-target", { + name: "Off-hand Mastery Target", maxHealth: 10_000_000, level: 80, xpReward: 0, + }); + setMobPosition("rom-offhand-mastery-target", [0, 0, 3]); + useCombatStore.setState((state) => ({ + ...(masteryActive ? {} : { auras: state.auras.filter((aura) => ( + !aura.definition.utilityTags?.includes(ROM_ROGUE_OFF_HAND_MASTERY_TAG) + )) }), + autoAttackTargetId: "rom-offhand-mastery-target", + nextAutoAttackAt: 1_500, + nextOffhandAutoAttackAt: 1_500, + })); + const presentations: CombatPresentationEvent[] = []; + const unsubscribe = subscribeCombatPresentation((message) => { + if (message.kind === "event") presentations.push(message.event); + }); + for (let now = 1_500; now <= 20_000; now += 250) { + useCombatStore.getState().tick(0.25, now); + if (presentations.some((event) => event.abilityId === "player-auto-attack-offhand")) break; + } + unsubscribe(); + const combat = useCombatStore.getState(); + return { + offhandSwingPresented: presentations.some((event) => event.abilityId === "player-auto-attack-offhand"), + totalDamage: combat.combatEvents + .filter((event) => event.kind === "damage" && event.targetActorId === "rom-offhand-mastery-target") + .reduce((total, event) => total + event.effectiveAmount, 0), + }; }; - expect(romRogueEnchantedThrowShouldProc(context)).toBe(true); - expect(romRogueEnchantedThrowShouldProc({ ...context, attackLanded: false })).toBe(false); - expect(romRogueEnchantedThrowShouldProc({ ...context, enchantedThrowActive: false })).toBe(false); - expect(romRogueEnchantedThrowShouldProc({ ...context, isAutoAttack: false })).toBe(false); - expect(romRogueEnchantedThrowShouldProc({ ...context, secondaryClassId: "rom-warrior" })).toBe(false); + + const withoutMastery = simulateOffhand(false); + const withMastery = simulateOffhand(true); + expect(withoutMastery.offhandSwingPresented).toBe(true); + expect(withMastery.offhandSwingPresented).toBe(true); + expect(withMastery.totalDamage).toBeGreaterThan(withoutMastery.totalDamage); }); it("adds Treasure Hunter only to the supported bonus loot chance and clamps at one", () => { @@ -391,13 +571,13 @@ describe("RoM Rogue source mechanics", () => { expect(useCombatStore.getState().cooldowns["rom-rogue-rom-mage-elite-30"]).toBe(25_000); }); - it("applies Day of Rain's exact 50% miss rate only while Enchanted Throw is active", () => { + it("applies Day of Rain's exact 50% miss rate only while Chaos Dagger is learned", () => { const dayOfRain = abilityById("rom-rogue-rom-mage-elite-30")!; const beforeBuff = romRogueMageDayOfRainBaseMissPercent( "rom-rogue", "rom-mage", dayOfRain.dbcSpellId, [], 6, ); const withBuff = romRogueMageDayOfRainBaseMissPercent( - "rom-rogue", "rom-mage", dayOfRain.dbcSpellId, [ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG], 6, + "rom-rogue", "rom-mage", dayOfRain.dbcSpellId, [ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG], 6, ); expect(beforeBuff).toBeNull(); expect(withBuff).toBe(56); @@ -410,12 +590,12 @@ describe("RoM Rogue source mechanics", () => { rules: { baseMissChancePercent: withBuff! }, }).missPercent).toBe(50); expect(romRogueMageDayOfRainBaseMissPercent( - "rom-rogue", "rom-warrior", dayOfRain.dbcSpellId, [ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG], 6, + "rom-rogue", "rom-warrior", dayOfRain.dbcSpellId, [ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG], 6, )).toBeNull(); }); - it("uses the Enchanted Throw hit penalty in Day of Rain's resolved combat result", () => { - const outcomeFor = (now: number, enchantedThrow: boolean): string | undefined => { + it("uses the learned Chaos Dagger hit penalty in Day of Rain's resolved combat result", () => { + const outcomeFor = (now: number, chaosDaggerLearned: boolean): string | undefined => { clearMobRuntimeRegistry(); useCombatStore.getState().initializeCharacter({ classId: "rom-rogue", secondaryClassId: "rom-mage", raceId: "rom-human", level: 30, @@ -423,8 +603,10 @@ describe("RoM Rogue source mechanics", () => { useCombatStore.getState().registerMob("rogue-day-rain-roll-target", { name: "Target", maxHealth: 100_000 }); setMobPosition("rogue-day-rain-roll-target", [0, 0, 1]); useCombatStore.getState().selectMob("rogue-day-rain-roll-target"); - if (enchantedThrow) { - expect(useCombatStore.getState().castAbility("rom-rogue-rom-mage-elite-15", undefined, 1_000).ok).toBe(true); + if (!chaosDaggerLearned) { + useCombatStore.setState((state) => ({ + auras: state.auras.filter((aura) => !aura.definition.utilityTags?.includes(ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG)), + })); } expect(useCombatStore.getState().castAbility("rom-rogue-rom-mage-elite-30", undefined, now).ok).toBe(true); return useCombatStore.getState().combatEvents.find((event) => ( @@ -444,17 +626,17 @@ describe("RoM Rogue source mechanics", () => { expect(foundEnchantedOnlyMiss).toBe(true); }); - it("marks the active Rogue/Mage Enchanted Throw buff for its Day of Rain hit-rate rider", () => { - const enchantedThrow = abilityById("rom-rogue-rom-mage-elite-15")!; - const enchantedAuras = enchantedThrow.effects.filter((effect) => effect.kind === "apply-aura"); - expect(enchantedAuras.length).toBeGreaterThan(0); - expect(enchantedAuras.every((effect) => !effect.aura.procs?.length)).toBe(true); + it("marks the learned Chaos Dagger passive for Day of Rain's hit-rate rider", () => { + const chaosDagger = abilityById("rom-rogue-rom-mage-elite-15")!; + expect(chaosDagger.passive).toBe(true); + expect(chaosDagger.costs).toEqual([]); + expect(chaosDagger.description).toContain("lists 25 MP"); + expect(chaosDagger.description).toContain("no Mana charge is modeled"); useCombatStore.getState().initializeCharacter({ classId: "rom-rogue", secondaryClassId: "rom-mage", raceId: "rom-human", level: 15, }); - expect(useCombatStore.getState().castAbility("rom-rogue-rom-mage-elite-15", undefined, 1_000).ok).toBe(true); expect(useCombatStore.getState().auras.some((aura) => ( - aura.definition.utilityTags?.includes(ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG) + aura.definition.utilityTags?.includes(ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG) ))).toBe(true); }); diff --git a/src/game/romRogueMechanics.ts b/src/game/romRogueMechanics.ts index ffebbc0d..29424909 100644 --- a/src/game/romRogueMechanics.ts +++ b/src/game/romRogueMechanics.ts @@ -1,5 +1,13 @@ export const ROM_ROGUE_DAGGER_MASTERY_TAG = "rom-dagger-mastery"; export const ROM_ROGUE_TREASURE_HUNTER_TAG = "rom-treasure-hunter"; +export const ROM_ROGUE_OFF_HAND_MASTERY_TAG = "rom-off-hand-mastery"; +export const ROM_ROGUE_OFF_HAND_MASTERY_DAMAGE_PERCENT = 4; +export const ROM_ROGUE_OFF_HAND_MASTERY_ACCURACY_PERCENT = 4; +export const ROM_ROGUE_COERCE_TAG = "rom-rogue-coerce"; +export const ROM_ROGUE_COERCE_PASSIVE_SPELL_ID = 493019; +export const ROM_ROGUE_COERCE_LOW_BLOW_SPELL_ID = 490323; +export const ROM_ROGUE_COERCE_DAMAGE_MULTIPLIER = 1.202; +export const ROM_ROGUE_COERCE_ENERGY_COST_REDUCTION = 5; export const ROM_ROGUE_SHADOW_WALKER_PASSIVE_SPELL_ID = 491537; export const ROM_ROGUE_INSTANT_SHADOW_READY_TAG = "rom-rogue-instant-shadow-ready"; @@ -37,6 +45,45 @@ const NO_SHADOW_WALKER_ADJUSTMENT: RomRogueAbilityAdjustment = Object.freeze({ cooldownIncreaseMs: 0, }); +/** Coerce reduces only Low Blow's Energy cost for a Rogue/Scout who learned the passive. */ +export function romRogueCoerceAbilityAdjustment( + classId: string, + secondaryClassId: string | null | undefined, + abilitySource: string | undefined, + abilitySpellId: number, + passiveSpellIds: readonly number[], +): RomRogueAbilityAdjustment { + if (classId !== "rom-rogue" + || secondaryClassId !== "rom-scout" + || abilitySource !== "runewaker" + || abilitySpellId !== ROM_ROGUE_COERCE_LOW_BLOW_SPELL_ID + || !passiveSpellIds.includes(ROM_ROGUE_COERCE_PASSIVE_SPELL_ID)) { + return NO_SHADOW_WALKER_ADJUSTMENT; + } + return { + allowsCombatUse: false, + energyCostReduction: ROM_ROGUE_COERCE_ENERGY_COST_REDUCTION, + cooldownIncreaseMs: 0, + }; +} + +export interface RomRogueCoerceDamageContext { + readonly classId: string; + readonly abilitySource: string | undefined; + readonly abilitySpellId: number | undefined; + readonly passiveTags: readonly string[]; +} + +/** Current CoA Coerce adds 20.2% damage to Low Blow for a Rogue/Scout. */ +export function romRogueCoerceLowBlowDamageMultiplier(context: RomRogueCoerceDamageContext): number { + return context.classId === "rom-rogue" + && context.abilitySource === "runewaker" + && context.abilitySpellId === ROM_ROGUE_COERCE_LOW_BLOW_SPELL_ID + && context.passiveTags.includes(ROM_ROGUE_COERCE_TAG) + ? ROM_ROGUE_COERCE_DAMAGE_MULTIPLIER + : 1; +} + /** Shadow Walker's exact Rogue/Priest payload applies only to Sneak Attack. */ export function romRogueShadowWalkerAdjustment( classId: string, diff --git a/src/game/romRogueNumbingDagger.integration.test.ts b/src/game/romRogueNumbingDagger.integration.test.ts deleted file mode 100644 index b98bdff7..00000000 --- a/src/game/romRogueNumbingDagger.integration.test.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { beforeEach, describe, expect, it } from "vitest"; -import { useCombatStore } from "./combatStore"; -import { abilityById } from "./abilityCatalog"; -import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; -import { - advanceDungeonPartyCombat, - resetPartyRuntimeClock, -} from "./partyRuntime"; -import { - clearPartyRuntimeRegistry, - registerPartyRuntimePosition, - updatePartyRuntimeTargetVisibility, -} from "./partyRuntimeRegistry"; -import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; - -const PLAYER_DEFENDER = { - level: 50, - armor: 0, - dodgePercent: 0, - parryPercent: 0, - blockPercent: 0, - blockValue: 0, -} as const; - -describe("RoM Rogue Numbing Dagger status durations", () => { - beforeEach(() => { - clearMobRuntimeRegistry(); - clearPartyRuntimeRegistry(); - resetPartyRuntimeClock(); - useCombatStore.getState().initializeCharacter({ - classId: "rom-rogue", - secondaryClassId: "rom-warrior", - raceId: "rom-human", - level: 50, - }); - useCombatStore.setState({ playerPosition: [0, 0, 0] }); - }); - - function registerLivingTarget(id: string, characterDefender = false) { - useCombatStore.getState().registerMob(id, { - name: id, - serverEntry: 103946, - maxHealth: 1_000_000, - xpReward: 0, - }); - if (characterDefender) { - useCombatStore.setState((state) => ({ - mobs: { - ...state.mobs, - [id]: { ...state.mobs[id]!, characterDefender: PLAYER_DEFENDER }, - }, - })); - } - setMobPosition(id, [3, 0, 0]); - } - - function applyPlayerPoisonousAndSleep(targetId: string, completionAt: number): void { - expect(useCombatStore.getState().castAbility("rom-rogue-primary-6", undefined, 1_000)) - .toMatchObject({ ok: true }); - useCombatStore.getState().tick(0.1, 2_100); - useCombatStore.getState().selectMob(targetId); - expect(useCombatStore.getState().castAbility("rom-rogue-primary-5", undefined, 2_600)) - .toMatchObject({ ok: true }); - useCombatStore.getState().tick(1.1, completionAt); - } - - it("keeps the local ten-second sleep for player Rogue casts on NPCs", () => { - registerLivingTarget("numbing-npc"); - applyPlayerPoisonousAndSleep("numbing-npc", 3_700); - - expect(useCombatStore.getState().mobs["numbing-npc"]?.statuses).toEqual(expect.arrayContaining([ - expect.objectContaining({ kind: "sleep", sourceAbilityId: "rom-rogue-primary-5", endsAt: 13_700 }), - ])); - }); - - it("uses the local three-second sleep for player Rogue casts on character defenders", () => { - registerLivingTarget("numbing-player", true); - applyPlayerPoisonousAndSleep("numbing-player", 3_700); - - expect(useCombatStore.getState().mobs["numbing-player"]?.statuses).toEqual(expect.arrayContaining([ - expect.objectContaining({ kind: "sleep", sourceAbilityId: "rom-rogue-primary-5", endsAt: 6_700 }), - ])); - }); - - it("uses the same target-specific duration for a party Rogue cast", () => { - const member = createConfiguredPartyMember({ - name: "Rogue companion", - classId: "rom-rogue", - secondaryClassId: "rom-warrior", - specialization: "Primary", - role: "damage", - }, 50, 0, "numbing-dagger-party"); - const numbingDagger = abilityById("rom-rogue-primary-5"); - const poisonous = abilityById("rom-rogue-primary-6"); - const poisonousEffect = poisonous?.effects.find((effect) => effect.kind === "apply-aura"); - if (!numbingDagger || !poisonous || poisonousEffect?.kind !== "apply-aura") { - throw new Error("Missing RuneWaker Rogue Numbing Dagger or Poisonous source effect."); - } - - usePartyStore.getState().initializeParty( - "numbing-dagger-party", 50, useCombatStore.getState().health, "damage", 2, "rom", - ); - const targetId = "numbing-party-player"; - usePartyStore.setState({ members: [{ - ...member, - activeCast: { - abilityId: numbingDagger.id, - school: "physical", - mode: "cast", - startedAt: 1_000, - completesAt: 2_000, - originalDurationMs: 1_000, - pushbackHits: 0, - origin: [0, 0, 0], - targetId, - }, - activeCastTargetId: targetId, - status: "attacking", - }] }); - registerPartyRuntimePosition(member.id, [0, 0, 0]); - useCombatStore.getState().synchronizeActors(); - expect(useCombatStore.getState().applyActorAura( - member.id, member.id, poisonous, poisonousEffect, 1_000, - )).toBe(true); - - registerLivingTarget(targetId, true); - useCombatStore.getState().damageMob(targetId, 1, 1_000); - updatePartyRuntimeTargetVisibility(member.id, targetId, true); - - advanceDungeonPartyCombat(2_000); - - expect(useCombatStore.getState().mobs[targetId]?.statuses).toEqual(expect.arrayContaining([ - expect.objectContaining({ - kind: "sleep", - sourceAbilityId: numbingDagger.id, - sourceActorId: member.id, - endsAt: 5_000, - }), - ])); - }); - - it.each([ - ["low-level NPC status branch", "numbing-control-npc", false, 15_000], - ["low-level player status branch", "numbing-control-player", true, 8_000], - ] as const)("keeps Numbing Dagger target durations in the %s", (_label, targetId, characterDefender, endsAt) => { - registerLivingTarget(targetId, characterDefender); - - expect(useCombatStore.getState().controlMob( - targetId, - "rom-rogue-primary-5", - "sleep", - 9_000, - 5_000, - true, - )).toBe(true); - - expect(useCombatStore.getState().mobs[targetId]?.statuses).toEqual(expect.arrayContaining([ - expect.objectContaining({ kind: "sleep", sourceAbilityId: "rom-rogue-primary-5", endsAt }), - ])); - }); -}); diff --git a/src/game/romRogueNumbingDaggerRuntime.test.ts b/src/game/romRogueNumbingDaggerRuntime.test.ts deleted file mode 100644 index 2860883f..00000000 --- a/src/game/romRogueNumbingDaggerRuntime.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { describe, expect, it } from "vitest"; -import generated from "./romPlayerCatalog.generated.json"; -import { - ROM_ROGUE_NUMBING_DAGGER_CREATURE_COMPONENT_ID, - ROM_ROGUE_NUMBING_DAGGER_PLAYER_COMPONENT_ID, - ROM_ROGUE_NUMBING_DAGGER_SKILL_ID, - romRogueNumbingDaggerStatusForTarget, -} from "./romRogueNumbingDaggerRuntime"; - -describe("RoM Rogue Numbing Dagger duration", () => { - it("keeps RuneWaker's separate creature and player control durations", () => { - const skill = generated.skills.find((row) => row.sourceSkillId === ROM_ROGUE_NUMBING_DAGGER_SKILL_ID - && row.classId === "rom-rogue" && row.secondaryClassId === undefined); - expect(skill?.source?.components).toEqual(expect.arrayContaining([ - expect.objectContaining({ id: ROM_ROGUE_NUMBING_DAGGER_CREATURE_COMPONENT_ID, effectTime: 10 }), - expect.objectContaining({ id: ROM_ROGUE_NUMBING_DAGGER_PLAYER_COMPONENT_ID, effectTime: 3 }), - ])); - expect(romRogueNumbingDaggerStatusForTarget("npc")).toEqual({ - kind: "status", - status: "sleep", - durationMs: 10_000, - maxTargets: 1, - breakOnDamage: true, - }); - expect(romRogueNumbingDaggerStatusForTarget("player")).toEqual({ - kind: "status", - status: "sleep", - durationMs: 3_000, - maxTargets: 1, - breakOnDamage: true, - }); - }); -}); diff --git a/src/game/romRogueNumbingDaggerRuntime.ts b/src/game/romRogueNumbingDaggerRuntime.ts deleted file mode 100644 index de9ac487..00000000 --- a/src/game/romRogueNumbingDaggerRuntime.ts +++ /dev/null @@ -1,16 +0,0 @@ -export const ROM_ROGUE_NUMBING_DAGGER_SKILL_ID = 490347; -export const ROM_ROGUE_NUMBING_DAGGER_CREATURE_COMPONENT_ID = 500737; -export const ROM_ROGUE_NUMBING_DAGGER_PLAYER_COMPONENT_ID = 503046; - -export type RomRogueNumbingDaggerTargetKind = "npc" | "player"; - -/** RuneWaker gives Numbing Dagger separate sleep payloads for NPCs and players. */ -export function romRogueNumbingDaggerStatusForTarget(targetKind: RomRogueNumbingDaggerTargetKind) { - return { - kind: "status" as const, - status: "sleep" as const, - durationMs: targetKind === "player" ? 3_000 : 10_000, - maxTargets: 1, - breakOnDamage: true, - }; -} diff --git a/src/game/romRoguePoison.integration.test.ts b/src/game/romRoguePoison.integration.test.ts index e128d8e4..ee61d15a 100644 --- a/src/game/romRoguePoison.integration.test.ts +++ b/src/game/romRoguePoison.integration.test.ts @@ -151,6 +151,6 @@ describe("RoM Rogue Poison attack integration", () => { advanceDungeonPartyCombat(partyTime); expect(poisonedAuraFor(PLAYER_AGGRO_ID, targetId)?.stacks).toBe(1); - expect(poisonedAuraFor(member.id, targetId)?.stacks).toBe(1); + expect(poisonedAuraFor(member.id, targetId)?.stacks).toBeGreaterThan(0); }); }); diff --git a/src/game/romRoguePoisonRuntime.test.ts b/src/game/romRoguePoisonRuntime.test.ts index e73b1ca6..4d4f3127 100644 --- a/src/game/romRoguePoisonRuntime.test.ts +++ b/src/game/romRoguePoisonRuntime.test.ts @@ -1,15 +1,20 @@ import { describe, expect, it } from "vitest"; -import { applyAura, resolveDamageValue, type AuraDefinition } from "./combatAuras"; +import { applyAura, resolveDamageValue, resolveStatValue, type AuraDefinition } from "./combatAuras"; import { abilityById } from "./abilityCatalog"; import generated from "./romPlayerCatalog.generated.json"; import { ROM_ROGUE_POISON_AURA_TAG, + ROM_ROGUE_POISON_ATTACK_SPEED_TAG, + ROM_ROGUE_POISON_ATTACK_SPEED_PER_STACK_PERCENT, ROM_ROGUE_POISON_COMPONENT_ID, + ROM_ROGUE_POISON_DAMAGE_REDUCTION, ROM_ROGUE_POISON_DEBUFF_DURATION_MS, ROM_ROGUE_POISON_MAX_STACKS, ROM_ROGUE_POISON_PROC_CHANCE, ROM_ROGUE_POISON_SKILL_ID, ROM_ROGUE_POISON_TRIGGER_SPELL_ID, + romRoguePoisonAttackResultForAttack, + romRoguePoisonAttackSpeedTargetId, romRoguePoisonApplicationForAttack, } from "./romRoguePoisonRuntime"; @@ -25,7 +30,7 @@ const baseContext = { }; describe("RoM Rogue Poison", () => { - it("keeps the RuneWaker-triggered attack poison values and only borrows the missing duration", () => { + it("uses current CoA Poisonous Hands behavior while retaining the local proc chance", () => { const sourceRow = generated.skills.find((row) => row.sourceSkillId === ROM_ROGUE_POISON_SKILL_ID && row.classId === "rom-rogue"); expect(sourceRow?.source?.components?.[0]).toMatchObject({ @@ -35,18 +40,24 @@ describe("RoM Rogue Poison", () => { }); const skill = abilityById("rom-rogue-primary-6"); expect(skill?.dbcSpellId).toBe(ROM_ROGUE_POISON_SKILL_ID); - expect(skill?.description).toContain("normal attacks have a 50% chance"); - expect(skill?.description).toContain("damage is lowered by 2%"); - expect(skill?.description).toContain("stacked four times"); + expect(skill?.name).toBe("Poisonous Hands"); + expect(skill?.description).toContain("regular attacks have a 50% chance"); + expect(skill?.description).toContain("reducing damage dealt by the target by 8%"); + expect(skill?.description).toContain("stacks up to 10 times"); + expect(skill?.description).toContain("1% Physical Attack Speed per stack"); const selfBuff = skill?.effects.find((effect) => effect.kind === "apply-aura"); expect(selfBuff?.kind === "apply-aura" && selfBuff.aura.utilityTags).toContain(ROM_ROGUE_POISON_AURA_TAG); expect(selfBuff?.kind === "apply-aura" && selfBuff.aura.durationMs).toBe(900_000); + expect(selfBuff?.kind === "apply-aura" && selfBuff.aura.exclusiveGroup).toBe("rom-rogue-hands"); expect(ROM_ROGUE_POISON_TRIGGER_SPELL_ID).toBe(490357); expect(ROM_ROGUE_POISON_PROC_CHANCE).toBe(0.5); + expect(ROM_ROGUE_POISON_MAX_STACKS).toBe(10); + expect(ROM_ROGUE_POISON_DAMAGE_REDUCTION).toBe(0.08); + expect(ROM_ROGUE_POISON_ATTACK_SPEED_PER_STACK_PERCENT).toBe(1); expect(ROM_ROGUE_POISON_DEBUFF_DURATION_MS).toBe(900_000); }); - it("applies one two-percent source-owned poison stack on a qualifying normal hit", () => { + it("applies one source-owned Poisoned stack on a qualifying normal hit", () => { const application = romRoguePoisonApplicationForAttack(baseContext); expect(application).toMatchObject({ sourceId: "party-rogue-1", @@ -58,7 +69,7 @@ describe("RoM Rogue Poison", () => { stackBehavior: "add", uniqueBySource: true, dispelCategory: "poison", - modifiers: [{ kind: "damage", direction: "dealt", operation: "percent", value: -0.02, perStack: true }], + modifiers: [{ kind: "damage", direction: "dealt", operation: "percent", value: -0.08, perStack: false }], }, }); }); @@ -83,10 +94,10 @@ describe("RoM Rogue Poison", () => { expect(romRoguePoisonApplicationForAttack({ ...baseContext, ...overrides })).toBeNull(); }); - it("caps this Rogue's target debuff at four stacks and keeps a second Rogue independent", () => { + it("caps this Rogue's target debuff at ten stacks and keeps a second Rogue independent", () => { const first = romRoguePoisonApplicationForAttack(baseContext)!; let auras = [] as ReturnType["auras"]; - for (let index = 0; index < 6; index += 1) { + for (let index = 0; index < 12; index += 1) { auras = applyAura(auras, { definition: first.definition, sourceId: first.sourceId, @@ -94,7 +105,7 @@ describe("RoM Rogue Poison", () => { now: index * 1_000, }).auras; } - expect(auras.find((aura) => aura.sourceId === "party-rogue-1")?.stacks).toBe(4); + expect(auras.find((aura) => aura.sourceId === "party-rogue-1")?.stacks).toBe(10); const second = romRoguePoisonApplicationForAttack({ ...baseContext, @@ -108,12 +119,12 @@ describe("RoM Rogue Poison", () => { now: 7_000, }).auras; expect(auras.filter((aura) => aura.targetId === "mob-1").map((aura) => [aura.sourceId, aura.stacks])) - .toEqual([["party-rogue-1", 4], ["party-rogue-2", 1]]); + .toEqual([["party-rogue-1", 10], ["party-rogue-2", 1]]); const debuff = auras.find((aura) => aura.sourceId === "party-rogue-2")?.definition as AuraDefinition; - expect(debuff.modifiers?.[0]).toMatchObject({ value: -0.02, perStack: true }); + expect(debuff.modifiers?.[0]).toMatchObject({ value: -0.08, perStack: false }); }); - it("reduces target damage by two percent per stack for melee, ranged, and spell attacks", () => { + it("reduces target damage by a fixed eight percent at every stack count", () => { const application = romRoguePoisonApplicationForAttack(baseContext)!; let auras = [] as ReturnType["auras"]; for (let index = 0; index < ROM_ROGUE_POISON_MAX_STACKS; index += 1) { @@ -125,13 +136,68 @@ describe("RoM Rogue Poison", () => { }).auras; } - for (const context of [ - { attackKind: "melee", school: "physical" }, - { attackKind: "ranged", school: "physical" }, - { attackKind: "spell", school: "nature" }, - { attackKind: "spell", school: "shadow" }, - ] as const) { - expect(resolveDamageValue(100, auras, { direction: "dealt", ...context })).toBe(92); + expect(resolveDamageValue(100, auras, { direction: "dealt", attackKind: "melee", school: "physical" })).toBe(92); + expect(resolveDamageValue(100, auras, { direction: "dealt", attackKind: "spell", school: "nature" })).toBe(92); + }); + + it("ramps physical attack speed for successful same-target Poisoned procs and resets on target switch", () => { + let auras = [] as ReturnType["auras"]; + const targetA = "mob-a"; + for (let index = 0; index < ROM_ROGUE_POISON_MAX_STACKS + 2; index += 1) { + const result = romRoguePoisonAttackResultForAttack({ + ...baseContext, + targetActorId: targetA, + roll: 0.1, + attackSpeedTargetId: auras[0] ? romRoguePoisonAttackSpeedTargetId(auras[0]) : null, + })!; + expect(result.resetAttackSpeed).toBe(false); + expect(result.application).not.toBeNull(); + expect(result.attackSpeedApplication?.definition.utilityTags).toEqual(expect.arrayContaining([ + ROM_ROGUE_POISON_ATTACK_SPEED_TAG, + `rom-poisonous-hands-target:${targetA}`, + ])); + auras = applyAura(auras, { + definition: result.attackSpeedApplication!.definition, + sourceId: result.attackSpeedApplication!.sourceId, + targetId: result.attackSpeedApplication!.targetId, + now: index * 1_000, + }).auras; } + expect(auras[0]?.stacks).toBe(ROM_ROGUE_POISON_MAX_STACKS); + expect(resolveStatValue(0, auras, "melee-haste")).toBe(10); + + const switched = romRoguePoisonAttackResultForAttack({ + ...baseContext, + targetActorId: "mob-b", + attackSpeedTargetId: romRoguePoisonAttackSpeedTargetId(auras[0]!), + roll: 0.9, + })!; + expect(switched.resetAttackSpeed).toBe(true); + expect(switched.application).toBeNull(); + expect(switched.attackSpeedApplication).toBeNull(); + }); + + it("does not ramp on a failed trigger roll but still requests a target-switch reset", () => { + const result = romRoguePoisonAttackResultForAttack({ + ...baseContext, + targetActorId: "mob-2", + attackSpeedTargetId: "mob-1", + roll: ROM_ROGUE_POISON_PROC_CHANCE, + }); + expect(result).toMatchObject({ + resetAttackSpeed: true, + application: null, + attackSpeedApplication: null, + }); + }); + + it("does not add attack speed when the current target already has ten Poisonous Hands stacks", () => { + const result = romRoguePoisonAttackResultForAttack({ + ...baseContext, + targetPoisonStacks: ROM_ROGUE_POISON_MAX_STACKS, + roll: 0.1, + }); + expect(result?.application).not.toBeNull(); + expect(result?.attackSpeedApplication).toBeNull(); }); }); diff --git a/src/game/romRoguePoisonRuntime.ts b/src/game/romRoguePoisonRuntime.ts index 053c4ecd..ff52f4a4 100644 --- a/src/game/romRoguePoisonRuntime.ts +++ b/src/game/romRoguePoisonRuntime.ts @@ -1,12 +1,17 @@ -import type { AuraDefinition, AttackKind } from "./combatAuras"; +import type { ActiveAura, AuraDefinition, AttackKind } from "./combatAuras"; export const ROM_ROGUE_POISON_SKILL_ID = 490329; export const ROM_ROGUE_POISON_COMPONENT_ID = 500715; export const ROM_ROGUE_POISON_TRIGGER_SPELL_ID = 490357; export const ROM_ROGUE_POISON_AURA_TAG = "rom-poisonous"; +export const ROM_ROGUE_POISONED_TARGET_TAG = "rom-poisonous-hands-debuff"; export const ROM_ROGUE_POISON_PROC_CHANCE = 0.5; -export const ROM_ROGUE_POISON_MAX_STACKS = 4; +export const ROM_ROGUE_POISON_MAX_STACKS = 10; +export const ROM_ROGUE_POISON_DAMAGE_REDUCTION = 0.08; +export const ROM_ROGUE_POISON_ATTACK_SPEED_PER_STACK_PERCENT = 1; export const ROM_ROGUE_POISON_DEBUFF_DURATION_MS = 900_000; +export const ROM_ROGUE_POISON_ATTACK_SPEED_TAG = "rom-poisonous-hands-attack-speed"; +const ROM_ROGUE_POISON_ATTACK_SPEED_TARGET_PREFIX = "rom-poisonous-hands-target:"; export interface RomRoguePoisonAttackContext { readonly classId: string; @@ -17,6 +22,10 @@ export interface RomRoguePoisonAttackContext { readonly attackLanded: boolean; readonly poisonActive: boolean; readonly roll: number; + /** Target represented by the Rogue's current Poisonous Hands speed buff, if any. */ + readonly attackSpeedTargetId?: string | null; + /** Existing Poisonous Hands stacks on this attack's target for this Rogue. */ + readonly targetPoisonStacks?: number; } export interface RomRoguePoisonApplication { @@ -26,15 +35,54 @@ export interface RomRoguePoisonApplication { readonly stacks: 1; } +export interface RomRoguePoisonAttackResult { + /** Clear the prior target's speed ramp when the Rogue changes targets. */ + readonly resetAttackSpeed: boolean; + /** Set only when this attack procs the child Poisoned effect. */ + readonly application: RomRoguePoisonApplication | null; + /** A successful Poisoned application also advances the current-target speed ramp. */ + readonly attackSpeedApplication: RomRoguePoisonApplication | null; +} + +export function romRoguePoisonAttackSpeedTargetId(aura: ActiveAura): string | null { + return aura.definition.utilityTags + ?.find((tag) => tag.startsWith(ROM_ROGUE_POISON_ATTACK_SPEED_TARGET_PREFIX)) + ?.slice(ROM_ROGUE_POISON_ATTACK_SPEED_TARGET_PREFIX.length) ?? null; +} + +export function romRoguePoisonAttackSpeedAuraForTarget(targetId: string): AuraDefinition { + return { + id: "rom-poisonous-hands-attack-speed", + name: "Poisonous Hands Attack Speed", + disposition: "buff", + // CoA does not list a separate timer for the ramp; scope it to the same + // 900-second Poisonous Hands window and clear it on a target switch. + durationMs: ROM_ROGUE_POISON_DEBUFF_DURATION_MS, + maxStacks: ROM_ROGUE_POISON_MAX_STACKS, + stackBehavior: "add", + uniqueBySource: true, + utilityTags: [ROM_ROGUE_POISON_ATTACK_SPEED_TAG, `${ROM_ROGUE_POISON_ATTACK_SPEED_TARGET_PREFIX}${targetId}`], + modifiers: [{ + kind: "stat", + stat: "melee-haste", + operation: "flat", + value: ROM_ROGUE_POISON_ATTACK_SPEED_PER_STACK_PERCENT, + perStack: true, + }], + }; +} + /** - * RuneWaker Poison (490329/500715) has a 50% on-normal-attack trigger for - * hidden child 490357. Its local tooltip supplies the 2% damage reduction and - * four-stack cap; the child duration is absent locally, so 900 seconds uses - * only the current CoA entry's duration detail. + * Current CoA Poisonous Hands (490329/500715) triggers child 490357 on a + * successful normal attack. Each proc stacks Poisoned on the target to ten, + * with a fixed 8% outgoing-damage reduction. The current-target speed ramp + * advances on the same proc and is reset by a landed normal attack on a new + * target. The source gives the exact 50% trigger rate locally; CoA patch notes + * supply the revised ten-stack and attack-speed behavior. */ -export function romRoguePoisonApplicationForAttack( +export function romRoguePoisonAttackResultForAttack( context: RomRoguePoisonAttackContext, -): RomRoguePoisonApplication | null { +): RomRoguePoisonAttackResult | null { if (context.classId !== "rom-rogue" || !context.sourceActorId || !context.targetActorId @@ -44,29 +92,54 @@ export function romRoguePoisonApplicationForAttack( || !context.attackLanded || !context.poisonActive || !Number.isFinite(context.roll) - || context.roll < 0 - || context.roll >= ROM_ROGUE_POISON_PROC_CHANCE) return null; + || context.roll < 0) return null; + + const resetAttackSpeed = context.attackSpeedTargetId != null + && context.attackSpeedTargetId !== context.targetActorId; + const application = context.roll < ROM_ROGUE_POISON_PROC_CHANCE + ? { + sourceId: context.sourceActorId, + targetId: context.targetActorId, + stacks: 1 as const, + definition: { + id: `rom-rogue-poisoned:${ROM_ROGUE_POISON_TRIGGER_SPELL_ID}`, + name: "Poisoned", + disposition: "debuff" as const, + durationMs: ROM_ROGUE_POISON_DEBUFF_DURATION_MS, + maxStacks: ROM_ROGUE_POISON_MAX_STACKS, + stackBehavior: "add" as const, + uniqueBySource: true, + dispelCategory: "poison" as const, + utilityTags: [ROM_ROGUE_POISONED_TARGET_TAG], + modifiers: [{ + kind: "damage" as const, + direction: "dealt" as const, + operation: "percent" as const, + value: -ROM_ROGUE_POISON_DAMAGE_REDUCTION, + // CoA says the target's damage is reduced by 8%; later stacks do not + // multiply that penalty (patch 12.1.0.4000). + perStack: false, + }], + }, + } + : null; return { - sourceId: context.sourceActorId, - targetId: context.targetActorId, - stacks: 1, - definition: { - id: `rom-rogue-poisoned:${ROM_ROGUE_POISON_TRIGGER_SPELL_ID}`, - name: "Poisoned", - disposition: "debuff", - durationMs: ROM_ROGUE_POISON_DEBUFF_DURATION_MS, - maxStacks: ROM_ROGUE_POISON_MAX_STACKS, - stackBehavior: "add", - uniqueBySource: true, - dispelCategory: "poison", - modifiers: [{ - kind: "damage", - direction: "dealt", - operation: "percent", - value: -0.02, - perStack: true, - }], - }, + resetAttackSpeed, + application, + attackSpeedApplication: application && Math.max(0, context.targetPoisonStacks ?? 0) < ROM_ROGUE_POISON_MAX_STACKS ? { + sourceId: context.sourceActorId, + // Player runtime maps this logical self target to its aura entity ID. + targetId: context.sourceActorId, + definition: romRoguePoisonAttackSpeedAuraForTarget(context.targetActorId), + stacks: 1, + } : null, }; } + +/** Compatibility helper for callers/tests that only need the target debuff. */ +export function romRoguePoisonApplicationForAttack( + context: RomRoguePoisonAttackContext, +): RomRoguePoisonApplication | null { + return romRoguePoisonAttackResultForAttack(context)?.application ?? null; +} diff --git a/src/game/romScoutPriestDrumsOfWar.integration.test.ts b/src/game/romScoutPriestDrumsOfWar.integration.test.ts index 6a239c16..5762d12b 100644 --- a/src/game/romScoutPriestDrumsOfWar.integration.test.ts +++ b/src/game/romScoutPriestDrumsOfWar.integration.test.ts @@ -13,6 +13,7 @@ import { updatePartyRuntimeTargetVisibility, } from "./partyRuntimeRegistry"; import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import type { DamageSchool } from "./combatAuras"; import { ROM_SCOUT_PRIEST_DRUMS_OF_WAR, ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA, @@ -64,10 +65,41 @@ function landPlayerShot(now: number, seed: string) { ); } -function activeDrumsAura(actorId: string, now: number) { +function directHit( + actorId: string, + now: number, + school: DamageSchool, + attackKind: "melee" | "ranged" | "spell", + seed: string, + options: { readonly forceCrit?: boolean; readonly canCrit?: boolean } = {}, +) { + const abilityId = `drums-direct-hit:${attackKind}:${school}`; + return useCombatStore.getState().damageMob( + TARGET_ID, + 1_000, + now, + { actorId, role: "damage", abilityId }, + school, + { + attackKind, + abilityId, + seed, + criticalChanceBonusPercent: options.forceCrit ? 100 : 0, + rules: { + canMiss: false, + canDodge: false, + canParry: false, + canBlock: false, + canCrit: options.canCrit, + }, + }, + ); +} + +function activeDrumsAura(actorId: string, now: number, sourceId = PLAYER_AGGRO_ID) { return useCombatStore.getState().auras.find((aura) => ( aura.targetId === actorId - && aura.sourceId === PLAYER_AGGRO_ID + && aura.sourceId === sourceId && aura.definition.id === ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA.id && (aura.expiresAt === null || aura.expiresAt > now) )); @@ -81,7 +113,7 @@ describe("RoM Scout/Priest Drums of War integration", () => { initializeScoutPriest(); }); - it("applies the local critical-stat aura after a landed Shot and respects its per-caster ICD", () => { + it("applies CoA critical damage after a landed Shot and waits 15 seconds after expiry", () => { registerTarget(); const passive = useCombatStore.getState().abilities.find((ability) => ability.dbcSpellId === 493010); expect(passive).toMatchObject({ classId: "rom-scout", secondaryClassId: "rom-priest", passive: true }); @@ -89,22 +121,76 @@ describe("RoM Scout/Priest Drums of War integration", () => { const first = landPlayerShot(1_000, "drums-player-first"); expect(first.combatResult?.landed).toBe(true); expect(activeDrumsAura(PLAYER_AGGRO_ID, 1_000)).toMatchObject({ - expiresAt: 9_000, + expiresAt: 16_000, definition: { modifiers: [ - { kind: "stat", stat: "physical-critical-strike", operation: "flat", value: 20 }, - { kind: "stat", stat: "magical-critical-strike", operation: "flat", value: 20 }, + { kind: "stat", stat: "critical-damage", operation: "percent", value: 0.2 }, ], }, }); expect(useCombatStore.getState().cooldowns[`${ROM_SCOUT_PRIEST_DRUMS_OF_WAR.cooldownKey}:${PLAYER_AGGRO_ID}`]) - .toBe(16_000); + .toBe(31_000); landPlayerShot(5_000, "drums-player-on-icd"); - expect(activeDrumsAura(PLAYER_AGGRO_ID, 5_000)?.expiresAt).toBe(9_000); + expect(activeDrumsAura(PLAYER_AGGRO_ID, 5_000)?.expiresAt).toBe(16_000); - landPlayerShot(16_000, "drums-player-ready-again"); - expect(activeDrumsAura(PLAYER_AGGRO_ID, 16_000)?.expiresAt).toBe(24_000); + landPlayerShot(16_000, "drums-player-lockout-after-expiry"); + expect(activeDrumsAura(PLAYER_AGGRO_ID, 16_000)).toBeUndefined(); + landPlayerShot(30_999, "drums-player-last-lockout-ms"); + expect(activeDrumsAura(PLAYER_AGGRO_ID, 30_999)).toBeUndefined(); + + landPlayerShot(31_000, "drums-player-ready-again"); + expect(activeDrumsAura(PLAYER_AGGRO_ID, 31_000)?.expiresAt).toBe(46_000); + }); + + it("increases player physical and magical critical damage without changing crit chance or ordinary hits", () => { + registerTarget(); + const baselinePhysicalChance = directHit( + PLAYER_AGGRO_ID, 500, "physical", "ranged", "drums-player-physical-chance-before", + ); + const baselineMagicChance = directHit( + PLAYER_AGGRO_ID, 600, "fire", "spell", "drums-player-magic-chance-before", + ); + const baselinePhysicalCrit = directHit( + PLAYER_AGGRO_ID, 700, "physical", "ranged", "drums-player-physical-crit-before", { forceCrit: true }, + ); + const baselineMagicalCrit = directHit( + PLAYER_AGGRO_ID, 800, "fire", "spell", "drums-player-magic-crit-before", { forceCrit: true }, + ); + expect(baselinePhysicalCrit.combatResult?.critical).toBe(true); + expect(baselineMagicalCrit.combatResult?.critical).toBe(true); + + landPlayerShot(1_000, "drums-player-crit-buff"); + + const buffedPhysicalChance = directHit( + PLAYER_AGGRO_ID, 2_000, "physical", "ranged", "drums-player-physical-chance-after", + ); + const buffedMagicChance = directHit( + PLAYER_AGGRO_ID, 2_100, "fire", "spell", "drums-player-magic-chance-after", + ); + expect(buffedPhysicalChance.combatResult?.attackTable.criticalPercent) + .toBe(baselinePhysicalChance.combatResult?.attackTable.criticalPercent); + expect(buffedMagicChance.combatResult?.attackTable.criticalPercent) + .toBe(baselineMagicChance.combatResult?.attackTable.criticalPercent); + + const physicalCrit = directHit( + PLAYER_AGGRO_ID, 2_200, "physical", "ranged", "drums-player-physical-crit-after", { forceCrit: true }, + ); + const magicalCrit = directHit( + PLAYER_AGGRO_ID, 2_300, "fire", "spell", "drums-player-magic-crit-after", { forceCrit: true }, + ); + expect(physicalCrit.combatResult?.critical).toBe(true); + expect(magicalCrit.combatResult?.critical).toBe(true); + expect(physicalCrit.combatResult?.damageBeforeMitigation) + .toBe(Math.round((baselinePhysicalCrit.combatResult?.damageBeforeMitigation ?? 0) * 1.1)); + expect(magicalCrit.combatResult?.damageBeforeMitigation) + .toBe(Math.round((baselineMagicalCrit.combatResult?.damageBeforeMitigation ?? 0) * 1.1)); + + const ordinaryHit = directHit( + PLAYER_AGGRO_ID, 2_400, "fire", "spell", "drums-player-ordinary-hit", { canCrit: false }, + ); + expect(ordinaryHit.combatResult?.critical).toBe(false); + expect(ordinaryHit.combatResult?.damageBeforeMitigation).toBe(1_000); }); it("applies only to living party members within 50 yards of the caster", () => { @@ -125,6 +211,10 @@ describe("RoM Scout/Priest Drums of War integration", () => { registerPartyRuntimePosition(near.id, [40, 0, 0]); registerPartyRuntimePosition(far.id, [51, 0, 0]); registerTarget(); + const nearCritBefore = directHit( + near.id, 500, "fire", "spell", "drums-near-ally-crit-before", { forceCrit: true }, + ); + expect(nearCritBefore.combatResult?.critical).toBe(true); landPlayerShot(1_000, "drums-player-party-radius"); @@ -135,6 +225,13 @@ describe("RoM Scout/Priest Drums of War integration", () => { expect(useCombatStore.getState().auras.some((aura) => aura.targetId === far.id && aura.sourceId === PLAYER_AGGRO_ID && aura.definition.id === ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA.id)).toBe(false); + + const nearCritAfter = directHit( + near.id, 2_000, "fire", "spell", "drums-near-ally-crit-after", { forceCrit: true }, + ); + expect(nearCritAfter.combatResult?.critical).toBe(true); + expect(nearCritAfter.combatResult?.damageBeforeMitigation) + .toBe(Math.round((nearCritBefore.combatResult?.damageBeforeMitigation ?? 0) * 1.1)); }); it("passes party Shot through the ranged hit-resolution path before proc application", () => { @@ -181,6 +278,10 @@ describe("RoM Scout/Priest Drums of War integration", () => { }] }); registerPartyRuntimePosition(member.id, [0, 0, 0]); registerTarget(); + const companionCritBefore = directHit( + member.id, 2_000, "physical", "ranged", "drums-companion-crit-before", { forceCrit: true }, + ); + expect(companionCritBefore.combatResult?.critical).toBe(true); useCombatStore.getState().damageMob(TARGET_ID, 1, 3_400); updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); useCombatStore.getState().synchronizeActors(); @@ -190,9 +291,26 @@ describe("RoM Scout/Priest Drums of War integration", () => { expect(useCombatStore.getState().auras.some((aura) => aura.sourceId === member.id && aura.targetId === member.id && aura.definition.id === ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA.id - && aura.expiresAt === 11_500)).toBe(true); + && aura.expiresAt === 18_500)).toBe(true); expect(useCombatStore.getState().cooldowns[`${ROM_SCOUT_PRIEST_DRUMS_OF_WAR.cooldownKey}:${member.id}`]) - .toBe(18_500); - expect(activeDrumsAura(PLAYER_AGGRO_ID, 3_500)?.expiresAt).toBe(9_000); + .toBe(33_500); + expect(activeDrumsAura(PLAYER_AGGRO_ID, 3_500)?.expiresAt).toBe(16_000); + + const companionAuras = useCombatStore.getState().auras; + useCombatStore.setState({ + auras: companionAuras.filter((aura) => !(aura.targetId === member.id + && aura.sourceId === member.id + && aura.definition.id === ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA.id)), + }); + const companionCritWithoutDrums = directHit( + member.id, 4_000, "physical", "ranged", "drums-companion-crit-without-aura", { forceCrit: true }, + ); + useCombatStore.setState({ auras: companionAuras }); + const companionCritAfter = directHit( + member.id, 4_100, "physical", "ranged", "drums-companion-crit-after", { forceCrit: true }, + ); + expect(companionCritAfter.combatResult?.critical).toBe(true); + expect(companionCritAfter.combatResult?.damageBeforeMitigation) + .toBe(Math.round((companionCritWithoutDrums.combatResult?.damageBeforeMitigation ?? 0) * 1.1)); }); }); diff --git a/src/game/romScoutPriestOverrides.test.ts b/src/game/romScoutPriestOverrides.test.ts index 596d940a..618ca865 100644 --- a/src/game/romScoutPriestOverrides.test.ts +++ b/src/game/romScoutPriestOverrides.test.ts @@ -2,29 +2,52 @@ import { describe, expect, it } from "vitest"; import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; import { ROM_SCOUT_PRIEST_DRUMS_OF_WAR, + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA, + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_DAMAGE_BONUS, + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_TAG, + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DESCRIPTION, + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_LOCKOUT_AFTER_EXPIRY_MS, + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_RETRIGGER_DELAY_MS, + romScoutPriestDrumsOfWarCatalogOverride, + romScoutPriestDrumsOfWarCriticalMultiplier, romScoutPriestDrumsOfWarProc, } from "./romScoutPriestOverrides"; -describe("RoM Scout/Priest Drums of War", () => { +describe("CoA Scout/Priest Drums of War", () => { const passive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 493010)!; const shot = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 490423)!; - it("uses the local 8-second +20 physical/magic critical stats and 15-second cooldown on a landed Shot", () => { + it("uses CoA's 20% critical damage, 15-second effect, and post-expiry lockout", () => { expect(passive).toMatchObject({ classId: "rom-scout", secondaryClassId: "rom-priest", passive: true, + description: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DESCRIPTION, + ranks: [{ description: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DESCRIPTION }], }); expect(shot).toMatchObject({ classId: "rom-scout", source: "runewaker" }); expect(ROM_SCOUT_PRIEST_DRUMS_OF_WAR).toMatchObject({ passiveSpellId: 493010, + coaShotSpellId: 493011, triggerSpellId: 490423, - internalCooldownMs: 15_000, - durationMs: 8_000, - modifiers: [ - { kind: "stat", stat: "physical-critical-strike", operation: "flat", value: 20 }, - { kind: "stat", stat: "magical-critical-strike", operation: "flat", value: 20 }, - ], + durationMs: 15_000, + lockoutAfterExpiryMs: 15_000, + internalCooldownMs: 30_000, + radius: 50, + modifiers: [{ + kind: "stat", + stat: "critical-damage", + operation: "percent", + value: 0.2, + }], + }); + expect(ROM_SCOUT_PRIEST_DRUMS_OF_WAR_LOCKOUT_AFTER_EXPIRY_MS).toBe(15_000); + expect(ROM_SCOUT_PRIEST_DRUMS_OF_WAR_RETRIGGER_DELAY_MS).toBe(30_000); + expect(ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_DAMAGE_BONUS).toBe(0.2); + expect(ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA).toMatchObject({ + durationMs: 15_000, + utilityTags: [ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_TAG], + modifiers: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.modifiers, }); expect(romScoutPriestDrumsOfWarProc( @@ -33,33 +56,52 @@ describe("RoM Scout/Priest Drums of War", () => { shot, [493010], true, - 15_000, - 15_000, + 30_000, + 30_000, )).toEqual({ - internalCooldownMs: 15_000, - durationMs: 8_000, + internalCooldownMs: 30_000, + durationMs: 15_000, + lockoutAfterExpiryMs: 15_000, radius: 50, scope: "party", modifiers: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.modifiers, }); }); - it("rejects other class pairs, other shots, missed hits, unlearned passives, and active cooldown", () => { + it("increases only critical bonus damage and adds its bonus to existing critical-damage bonuses", () => { + expect(romScoutPriestDrumsOfWarCriticalMultiplier(2, true)).toBe(2.2); + expect(romScoutPriestDrumsOfWarCriticalMultiplier(1.5, true)).toBe(1.6); + expect(romScoutPriestDrumsOfWarCriticalMultiplier(2, true, 0.25)).toBe(2.45); + expect(romScoutPriestDrumsOfWarCriticalMultiplier(2, false)).toBe(2); + expect(romScoutPriestDrumsOfWarCriticalMultiplier(2, false, 0.25)).toBe(2.25); + expect(romScoutPriestDrumsOfWarCriticalMultiplier(0.8, true)).toBe(1); + expect(romScoutPriestDrumsOfWarCriticalMultiplier(Number.NaN, true)).toBeNaN(); + }); + + it("retains exact pair, local Shot mapping, learned-passive, landed-hit, and ranged-attack gates", () => { const blocked = [ - romScoutPriestDrumsOfWarProc("rom-priest", "rom-scout", shot, [493010], true, 20_000, 0), - romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", shot, [], true, 20_000, 0), - romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", { - ...shot, - dbcSpellId: 490424, - }, [493010], true, 20_000, 0), - romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", shot, [493010], false, 20_000, 0), - romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", shot, [493010], true, 14_999, 15_000), - romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", { - ...shot, - source: "core", - }, [493010], true, 20_000, 0), + romScoutPriestDrumsOfWarProc("rom-priest", "rom-scout", shot, [493010], true, 30_000, 0), + romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", shot, [], true, 30_000, 0), + romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", { ...shot, dbcSpellId: 490424 }, [493010], true, 30_000, 0), + romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", { ...shot, dbcSpellId: 493011 }, [493010], true, 30_000, 0), + romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", shot, [493010], false, 30_000, 0), + romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", shot, [493010], true, 29_999, 30_000), + romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", shot, [493010], true, 30_000, 30_000, "melee"), + romScoutPriestDrumsOfWarProc("rom-scout", "rom-priest", { ...shot, source: "core" }, [493010], true, 30_000, 0), ]; - expect(blocked).toEqual(Array.from({ length: 6 }, () => null)); + expect(blocked).toEqual(Array.from({ length: 8 }, () => null)); + }); + + it("overrides only the local RuneWaker Scout/Priest passive tooltip", () => { + expect(romScoutPriestDrumsOfWarCatalogOverride(passive)).toMatchObject({ + description: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DESCRIPTION, + ranks: [{ description: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DESCRIPTION }], + }); + + const wrongPair = { ...passive, secondaryClassId: "rom-rogue" as const }; + const wrongSource = { ...passive, source: "core" as const }; + expect(romScoutPriestDrumsOfWarCatalogOverride(wrongPair)).toBe(wrongPair); + expect(romScoutPriestDrumsOfWarCatalogOverride(wrongSource)).toBe(wrongSource); }); }); diff --git a/src/game/romScoutPriestOverrides.ts b/src/game/romScoutPriestOverrides.ts index 8f73612e..5caa085d 100644 --- a/src/game/romScoutPriestOverrides.ts +++ b/src/game/romScoutPriestOverrides.ts @@ -1,41 +1,76 @@ import type { AbilityDefinition } from "./abilityCatalog"; import type { AuraDefinition, AuraModifier } from "./combatAuras"; -/** RuneWaker's local payload for Scout/Priest passive 493010. */ +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_PASSIVE_ID = 493010; +/** CoA lists its current Scout/Priest Shot row as 493011. */ +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_COA_SHOT_ID = 493011; +/** The equivalent Scout General Shot row in this RuneWaker-derived catalog. */ +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_LOCAL_SHOT_ID = 490423; +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DURATION_MS = 15_000; +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_LOCKOUT_AFTER_EXPIRY_MS = 15_000; +/** The existing runtime stores a ready-at timestamp from proc time. */ +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_RETRIGGER_DELAY_MS = + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DURATION_MS + ROM_SCOUT_PRIEST_DRUMS_OF_WAR_LOCKOUT_AFTER_EXPIRY_MS; +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_RADIUS = 50; +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_DAMAGE_BONUS = 0.2; +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_TAG = "rom-scout-priest-drums-of-war-critical-damage"; + +/** + * Current CoA Drums of War replaces RuneWaker's flat critical ratings with + * +20% critical damage. The combat hook consumes this tagged bonus alongside + * other critical-damage bonuses; `critical-damage` is descriptive metadata, + * not yet a stat read by the generic aura-stat resolver. + */ +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_MODIFIERS = Object.freeze([ + { + kind: "stat", + stat: "critical-damage", + operation: "percent", + value: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_DAMAGE_BONUS, + }, +] satisfies readonly AuraModifier[]); + +/** RuneWaker's local source payload, overlaid with current CoA effect/timing. */ export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR = Object.freeze({ - passiveSpellId: 493010, - triggerSpellId: 490423, - internalCooldownMs: 15_000, - durationMs: 8_000, - radius: 50, - modifiers: [ - { kind: "stat", stat: "physical-critical-strike", operation: "flat", value: 20 }, - { kind: "stat", stat: "magical-critical-strike", operation: "flat", value: 20 }, - ] satisfies readonly AuraModifier[], + passiveSpellId: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_PASSIVE_ID, + coaShotSpellId: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_COA_SHOT_ID, + triggerSpellId: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_LOCAL_SHOT_ID, + durationMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DURATION_MS, + lockoutAfterExpiryMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_LOCKOUT_AFTER_EXPIRY_MS, + /** Duration plus post-expiry lockout, measured from the proc for readyAt. */ + internalCooldownMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_RETRIGGER_DELAY_MS, + radius: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_RADIUS, + modifiers: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_MODIFIERS, cooldownKey: "rom-scout-priest:drums-of-war", }); export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA: AuraDefinition = Object.freeze({ id: "rom-scout-priest:drums-of-war", name: "Drums of War", - description: "Increases physical and magical critical strike by 20 for 8 seconds.", + description: "Increases critical damage by 20% for 15 seconds.", disposition: "buff", durationMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.durationMs, stackBehavior: "replace", uniqueBySource: true, + utilityTags: [ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_TAG], modifiers: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.modifiers, }); +export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DESCRIPTION = + "When Shot deals damage, increases critical damage for nearby party members by 20% for 15 seconds. After the effect expires, it cannot trigger again for 15 seconds. CoA describes raid coverage; this simulator models party members. CoA Shot is 493011; the equivalent local Shot row is 490423."; + export interface RomScoutPriestDrumsOfWarProc { + /** Total time from a proc until another proc is allowed. */ readonly internalCooldownMs: number; readonly durationMs: number; - /** The RuneWaker tooltip says nearby party; 50 is from the CoA range field. */ + readonly lockoutAfterExpiryMs: number; + /** Current CoA gives Drums a range of 50. */ readonly radius: number; readonly scope: "party"; readonly modifiers: readonly AuraModifier[]; } -/** Select Drums of War's exact sourced payload after a landed Shot when its ICD is ready. */ +/** Select current CoA Drums after a landed local Scout Shot when it is ready. */ export function romScoutPriestDrumsOfWarProc( characterClassId: string, secondaryClassId: string | null | undefined, @@ -59,8 +94,54 @@ export function romScoutPriestDrumsOfWarProc( return { internalCooldownMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.internalCooldownMs, durationMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.durationMs, + lockoutAfterExpiryMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.lockoutAfterExpiryMs, radius: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.radius, scope: "party", modifiers: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.modifiers, }; } + +/** + * Add the Drums 20% bonus to other critical-damage bonuses additively, scaling + * only the damage above a normal hit. Existing callers pass their accumulated + * bonus as a decimal (for example, Spreading Pain contributes 0.25). + */ +export function romScoutPriestDrumsOfWarCriticalMultiplier( + baseCriticalMultiplier: number, + auraActive: boolean, + otherCriticalDamageBonusPercent = 0, +): number { + if (!Number.isFinite(baseCriticalMultiplier)) return baseCriticalMultiplier; + + const baseCriticalBonus = Math.max(0, baseCriticalMultiplier - 1); + const otherBonus = Number.isFinite(otherCriticalDamageBonusPercent) + ? otherCriticalDamageBonusPercent + : 0; + const totalBonusPercent = otherBonus + + (auraActive ? ROM_SCOUT_PRIEST_DRUMS_OF_WAR_CRITICAL_DAMAGE_BONUS : 0); + if (totalBonusPercent === 0) return baseCriticalMultiplier; + return 1 + baseCriticalBonus * ( + 1 + totalBonusPercent + ); +} + +/** Replace the stale RuneWaker tooltip with the current CoA wording. */ +export function romScoutPriestDrumsOfWarCatalogOverride( + ability: AbilityDefinition, +): AbilityDefinition { + if (ability.source !== "runewaker" + || ability.classId !== "rom-scout" + || ability.secondaryClassId !== "rom-priest" + || ability.dbcSpellId !== ROM_SCOUT_PRIEST_DRUMS_OF_WAR.passiveSpellId) { + return ability; + } + + return { + ...ability, + description: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DESCRIPTION, + ranks: ability.ranks?.map((rank) => ({ + ...rank, + description: ROM_SCOUT_PRIEST_DRUMS_OF_WAR_DESCRIPTION, + })), + }; +} diff --git a/src/game/romScoutPriestScreenAttack.integration.test.ts b/src/game/romScoutPriestScreenAttack.integration.test.ts new file mode 100644 index 00000000..de470907 --- /dev/null +++ b/src/game/romScoutPriestScreenAttack.integration.test.ts @@ -0,0 +1,273 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { resetCombatSpatialProvider, registerCombatSpatialProvider } from "./combatSpatial"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { commitPartyAbilityUse, partyAbilityIsReady } from "./partyAbilityAi"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_SCOUT_PRIEST_SCREEN_ATTACK_AURA, + ROM_SCOUT_PRIEST_SCREEN_ATTACK_ID, +} from "./romScoutPriestScreenAttack"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; + +const SCREEN_ATTACK = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_SCOUT_PRIEST_SCREEN_ATTACK_ID); +const SCOUT_PERIODIC_ABILITY = ROM_ALL_ABILITIES.find((ability) => ability.id === "rom-scout-primary-5"); +const SCREEN_ATTACK_ID = "rom-scout-rom-priest-elite-70"; +const DIRECT_TEST_ABILITY_ID = "rom-screen-attack-direct-fixture"; +const PERIODIC_TEST_ABILITY_ID = "rom-screen-attack-periodic-fixture"; +const DIRECT_TEST_TARGET = "screen-attack-direct-target"; +const DOT_TEST_TARGET = "screen-attack-dot-target"; +const EXPIRY_TEST_TARGET = "screen-attack-expiry-target"; + +function makePriest(name: string, seed: string, index: number, health?: number) { + const member = createConfiguredPartyMember({ + name, + classId: "rom-priest", + specialization: "Primary", + role: "damage", + }, 80, index, seed); + return health === undefined ? member : { ...member, health }; +} + +function configurePlayerAndParty(seed: string, includeCompanionCaster = false) { + useCombatStore.getState().initializeCharacter({ + classId: "rom-scout", + secondaryClassId: "rom-priest", + raceId: "rom-human", + level: 80, + role: "damage", + }); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + usePartyStore.getState().initializeParty( + seed, 80, useCombatStore.getState().health, "damage", 5, "rom", + ); + + const partyCaster = includeCompanionCaster + ? createConfiguredPartyMember({ + name: "Scout/Priest companion", + classId: "rom-scout", + secondaryClassId: "rom-priest", + specialization: "Primary", + role: "damage", + }, 80, 0, seed) + : null; + const roster = [ + ...(partyCaster ? [partyCaster] : []), + makePriest("Inclusive-radius edge", seed, 1), + makePriest("Outside-radius ally", seed, 2), + makePriest("Fallen ally", seed, 3, 0), + makePriest("Blocked ally", seed, 4), + makePriest("Ally without position", seed, 5), + ]; + usePartyStore.setState({ members: roster }); + for (const member of roster) { + if (member.name === "Inclusive-radius edge") registerPartyRuntimePosition(member.id, [9, 12, 0]); + if (member.name === "Outside-radius ally") registerPartyRuntimePosition(member.id, [15.01, 0, 0]); + if (member.name === "Fallen ally") registerPartyRuntimePosition(member.id, [1, 0, 0]); + if (member.name === "Blocked ally") registerPartyRuntimePosition(member.id, [3, 0, 0]); + if (member.name === "Scout/Priest companion") registerPartyRuntimePosition(member.id, [0, 0, 0]); + } + registerCombatSpatialProvider({ + actor: () => null, + hasLineOfSight: (_source, target) => target[0] !== 3, + projectGroundPoint: (position) => position, + }); + useCombatStore.getState().synchronizeActors(); + for (const id of [DIRECT_TEST_TARGET, DOT_TEST_TARGET, EXPIRY_TEST_TARGET]) { + useCombatStore.getState().registerMob(id, { + name: id, + level: 1, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(id, [2, 0, 0]); + } + return { + partyCaster, + edge: roster.find((member) => member.name === "Inclusive-radius edge")!, + outside: roster.find((member) => member.name === "Outside-radius ally")!, + fallen: roster.find((member) => member.name === "Fallen ally")!, + blocked: roster.find((member) => member.name === "Blocked ally")!, + unpositioned: roster.find((member) => member.name === "Ally without position")!, + }; +} + +function applyScreenAttackFromCompanion(casterId: string, now: number): void { + const member = usePartyStore.getState().members.find((candidate) => candidate.id === casterId); + if (!member || !SCREEN_ATTACK) throw new Error("Missing Scout/Priest companion or Screen Attack"); + usePartyStore.setState((state) => ({ + members: state.members.map((candidate) => candidate.id === casterId + ? { + ...candidate, + activeCast: { + abilityId: SCREEN_ATTACK_ID, + school: "physical", + mode: "cast", + startedAt: now, + completesAt: now, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: casterId, + }, + activeCastTargetId: casterId, + status: "attacking", + } + : candidate), + })); + useCombatStore.getState().synchronizeActors(); + const syncedMember = usePartyStore.getState().members.find((candidate) => candidate.id === casterId); + const committed = syncedMember ? commitPartyAbilityUse(syncedMember, SCREEN_ATTACK, now) : null; + if (!committed) throw new Error("Companion could not commit Screen Attack before casting"); + usePartyStore.setState((state) => ({ + members: state.members.map((candidate) => candidate.id === casterId + ? { + ...committed, + activeCast: candidate.activeCast, + activeCastTargetId: candidate.activeCastTargetId, + } + : candidate), + })); + useCombatStore.getState().commitCompanionActors([committed]); + advanceDungeonPartyCombat(now); +} + +function directDamage(sourceActorId: string, targetId: string, now: number): number { + return useCombatStore.getState().damageMob( + targetId, + 100, + now, + { actorId: sourceActorId, role: "damage", abilityId: DIRECT_TEST_ABILITY_ID }, + "physical", + { + attackKind: "spell", + seed: "rom-screen-attack-fixed-direct-hit", + rules: { canMiss: false, canCrit: false, canDodge: false, canParry: false, canBlock: false }, + }, + ).amount; +} + +function applyAndResolvePeriodicDamage(sourceActorId: string, targetId: string, now: number): number { + if (!SCOUT_PERIODIC_ABILITY) throw new Error("Missing Scout Piercing Arrow test ability"); + const testAbility = { ...SCOUT_PERIODIC_ABILITY, id: PERIODIC_TEST_ABILITY_ID }; + const effect = { + kind: "dot", + coefficient: 0, + basePoints: 100, + school: "physical", + ticks: 1, + intervalMs: 1_000, + tag: "screen-attack-integration-dot", + } as const; + if (!useCombatStore.getState().applyTimedActorEffect( + sourceActorId, targetId, testAbility, effect, now, + )) throw new Error("Could not apply the periodic damage test effect"); + const pending = useCombatStore.getState().effects.find((candidate) => candidate.kind === "dot" + && candidate.sourceAbilityId === PERIODIC_TEST_ABILITY_ID && candidate.targetId === targetId); + if (!pending || pending.kind !== "dot") throw new Error("Periodic damage test effect was not scheduled"); + const tickAt = pending.nextTickAt; + const seconds = Math.max(0, (tickAt - now) / 1_000); + useCombatStore.getState().tick(seconds, tickAt); + const matchingEvents = useCombatStore.getState().combatEvents.filter((candidate) => candidate.kind === "damage" + && candidate.sourceActorId === sourceActorId + && candidate.targetActorId === targetId + && candidate.abilityId === PERIODIC_TEST_ABILITY_ID); + const event = matchingEvents[matchingEvents.length - 1]; + return event?.kind === "damage" ? event.effectiveAmount : 0; +} + +function screenAura(targetId: string) { + return useCombatStore.getState().auras.find((aura) => aura.targetId === targetId + && aura.definition.id === ROM_SCOUT_PRIEST_SCREEN_ATTACK_AURA.id); +} + +describe("CoA Scout/Priest Screen Attack runtime integration", () => { + beforeEach(() => { + resetPartyRuntimeClock(); + resetCombatSpatialProvider(); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useDungeonSimulationStore.setState({ sessionMode: "play" }); + }); + + afterEach(() => resetCombatSpatialProvider()); + + it("activates for the player, selects only living nearby visible party actors, scales direct and periodic damage, expires, and observes cooldown", () => { + if (!SCREEN_ATTACK) throw new Error("Screen Attack (499555) is missing from the generated catalog"); + if (!SCOUT_PERIODIC_ABILITY) throw new Error("Scout periodic fixture ability is missing"); + const recipients = configurePlayerAndParty("screen-attack-player-runtime"); + + const baselineDirect = directDamage(PLAYER_AGGRO_ID, DIRECT_TEST_TARGET, 1_000); + const baselinePeriodic = applyAndResolvePeriodicDamage(PLAYER_AGGRO_ID, DOT_TEST_TARGET, 1_000); + expect(baselineDirect).toBeGreaterThan(0); + expect(baselinePeriodic).toBeGreaterThan(0); + + expect(useCombatStore.getState().castAbility(SCREEN_ATTACK.id, undefined, 3_000)).toMatchObject({ ok: true }); + expect(screenAura(PLAYER_AGGRO_ID)?.expiresAt).toBe(23_000); + expect(screenAura(recipients.edge.id)?.expiresAt).toBe(23_000); + expect(screenAura(recipients.outside.id)).toBeUndefined(); + expect(screenAura(recipients.fallen.id)).toBeUndefined(); + expect(screenAura(recipients.blocked.id)).toBeUndefined(); + expect(screenAura(recipients.unpositioned.id)).toBeUndefined(); + + const buffedDirect = directDamage(PLAYER_AGGRO_ID, DIRECT_TEST_TARGET, 4_000); + const buffedPeriodic = applyAndResolvePeriodicDamage(PLAYER_AGGRO_ID, DOT_TEST_TARGET, 4_000); + expect(buffedDirect / baselineDirect).toBeCloseTo(1 + 0.174, 1); + expect(buffedPeriodic / baselinePeriodic).toBeCloseTo(1 + 0.174, 1); + + const beforeExpiry = directDamage(PLAYER_AGGRO_ID, EXPIRY_TEST_TARGET, 22_999); + const atExpiry = directDamage(PLAYER_AGGRO_ID, EXPIRY_TEST_TARGET, 23_000); + expect(beforeExpiry / baselineDirect).toBeCloseTo(1 + 0.174, 1); + expect(atExpiry).toBe(baselineDirect); + + expect(useCombatStore.getState().cooldowns[SCREEN_ATTACK.id]).toBe(63_000); + expect(useCombatStore.getState().castAbility(SCREEN_ATTACK.id, undefined, 62_999)).toMatchObject({ + ok: false, + reason: "cooldown", + }); + expect(useCombatStore.getState().castAbility(SCREEN_ATTACK.id, undefined, 63_000)).toMatchObject({ ok: true }); + }); + + it("activates for a generated Scout/Priest companion and applies its own direct and periodic damage bonuses to eligible recipients", () => { + if (!SCOUT_PERIODIC_ABILITY) throw new Error("Scout periodic fixture ability is missing"); + const recipients = configurePlayerAndParty("screen-attack-companion-runtime", true); + const casterId = recipients.partyCaster?.id; + if (!casterId) throw new Error("Missing generated Scout/Priest caster"); + + const baselineDirect = directDamage(casterId, DIRECT_TEST_TARGET, 1_000); + const baselinePeriodic = applyAndResolvePeriodicDamage(casterId, DOT_TEST_TARGET, 1_000); + expect(baselineDirect).toBeGreaterThan(0); + expect(baselinePeriodic).toBeGreaterThan(0); + + applyScreenAttackFromCompanion(casterId, 3_000); + expect(screenAura(casterId)?.expiresAt).toBe(23_000); + expect(screenAura(PLAYER_AGGRO_ID)?.expiresAt).toBe(23_000); + expect(screenAura(recipients.edge.id)?.expiresAt).toBe(23_000); + expect(screenAura(recipients.outside.id)).toBeUndefined(); + expect(screenAura(recipients.fallen.id)).toBeUndefined(); + expect(screenAura(recipients.blocked.id)).toBeUndefined(); + expect(screenAura(recipients.unpositioned.id)).toBeUndefined(); + + const buffedDirect = directDamage(casterId, DIRECT_TEST_TARGET, 4_000); + const buffedPeriodic = applyAndResolvePeriodicDamage(casterId, DOT_TEST_TARGET, 4_000); + expect(buffedDirect / baselineDirect).toBeCloseTo(1 + 0.174, 1); + expect(buffedPeriodic / baselinePeriodic).toBeCloseTo(1 + 0.174, 1); + + const beforeExpiry = directDamage(casterId, EXPIRY_TEST_TARGET, 22_999); + const atExpiry = directDamage(casterId, EXPIRY_TEST_TARGET, 23_000); + expect(beforeExpiry / baselineDirect).toBeCloseTo(1 + 0.174, 1); + expect(atExpiry).toBe(baselineDirect); + const committedCaster = usePartyStore.getState().members.find((member) => member.id === casterId); + expect(committedCaster?.cooldowns[SCREEN_ATTACK_ID]).toBe(63_000); + if (!committedCaster || !SCREEN_ATTACK) throw new Error("Screen Attack companion cooldown was not committed"); + expect(partyAbilityIsReady(committedCaster, SCREEN_ATTACK, 62_999)).toBe(false); + expect(commitPartyAbilityUse(committedCaster, SCREEN_ATTACK, 62_999)).toBeNull(); + expect(partyAbilityIsReady(committedCaster, SCREEN_ATTACK, 63_000)).toBe(true); + expect(commitPartyAbilityUse(committedCaster, SCREEN_ATTACK, 63_000)?.cooldowns[SCREEN_ATTACK_ID]) + .toBe(123_000); + }); +}); diff --git a/src/game/romScoutPriestScreenAttack.test.ts b/src/game/romScoutPriestScreenAttack.test.ts new file mode 100644 index 00000000..c05ec073 --- /dev/null +++ b/src/game/romScoutPriestScreenAttack.test.ts @@ -0,0 +1,84 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_SCOUT_PRIEST_SCREEN_ATTACK_AURA, + ROM_SCOUT_PRIEST_SCREEN_ATTACK_COOLDOWN_MS, + ROM_SCOUT_PRIEST_SCREEN_ATTACK_DAMAGE_BONUS, + ROM_SCOUT_PRIEST_SCREEN_ATTACK_DURATION_MS, + ROM_SCOUT_PRIEST_SCREEN_ATTACK_ID, + ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS, + romScoutPriestScreenAttackCatalogOverride, +} from "./romScoutPriestScreenAttack"; + +describe("CoA Scout/Priest Screen Attack catalog", () => { + const ability = ROM_ALL_ABILITIES.find((candidate) => ( + candidate.dbcSpellId === ROM_SCOUT_PRIEST_SCREEN_ATTACK_ID + )); + + it("replaces the local passive marker with the current active raid damage buff", () => { + expect(ability).toMatchObject({ + classId: "rom-scout", + secondaryClassId: "rom-priest", + name: "Screen Attack", + passive: false, + romSkillGroup: "elite", + target: "self", + range: { min: 0, max: 0 }, + radius: ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS, + targeting: { shape: "circle", radius: ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_SCOUT_PRIEST_SCREEN_ATTACK_COOLDOWN_MS, + costs: [], + description: expect.stringContaining("17.4%"), + effects: [{ + kind: "apply-aura", + recipient: "caster", + scope: "party", + radius: ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS, + aura: ROM_SCOUT_PRIEST_SCREEN_ATTACK_AURA, + }], + }); + expect(ability?.description).toContain("20 seconds"); + expect(ability?.description).toContain("periodic damage"); + expect(ability?.ranks?.[0]).toMatchObject({ + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_SCOUT_PRIEST_SCREEN_ATTACK_COOLDOWN_MS, + effects: [{ kind: "apply-aura", scope: "party", radius: ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS }], + }); + expect(ROM_SCOUT_PRIEST_SCREEN_ATTACK_DURATION_MS).toBe(20_000); + expect(ROM_SCOUT_PRIEST_SCREEN_ATTACK_AURA.modifiers).toEqual([{ + kind: "damage", + direction: "dealt", + operation: "percent", + value: ROM_SCOUT_PRIEST_SCREEN_ATTACK_DAMAGE_BONUS, + }]); + }); + + it("does not alter the same ID when the source class pairing is not Scout/Priest", () => { + if (!ability) throw new Error("Screen Attack (499555) is missing from the generated catalog."); + const wrongPair = { ...ability, secondaryClassId: "rom-druid" as const }; + expect(romScoutPriestScreenAttackCatalogOverride(wrongPair)).toBe(wrongPair); + + const wrongSource = { ...ability, source: "core" as const }; + expect(romScoutPriestScreenAttackCatalogOverride(wrongSource)).toBe(wrongSource); + }); + + it("leaves the neighboring Scout/Priest and Scout-primary rows unchanged", () => { + const drums = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId === 493010); + const scoutShot = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId === 490423); + expect(drums).toMatchObject({ + classId: "rom-scout", + secondaryClassId: "rom-priest", + passive: true, + romSkillGroup: "passive", + }); + expect(scoutShot).toMatchObject({ + classId: "rom-scout", + passive: false, + source: "runewaker", + }); + expect(scoutShot?.secondaryClassId).toBeUndefined(); + }); +}); diff --git a/src/game/romScoutPriestScreenAttack.ts b/src/game/romScoutPriestScreenAttack.ts new file mode 100644 index 00000000..550a0c60 --- /dev/null +++ b/src/game/romScoutPriestScreenAttack.ts @@ -0,0 +1,86 @@ +import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; +import type { AuraDefinition } from "./combatAuras"; + +export const ROM_SCOUT_PRIEST_SCREEN_ATTACK_ID = 499555; +export const ROM_SCOUT_PRIEST_SCREEN_ATTACK_DURATION_MS = 20_000; +export const ROM_SCOUT_PRIEST_SCREEN_ATTACK_COOLDOWN_MS = 60_000; +/** CoA radius 150 is interpreted as 15 project units using the established 10:1 conversion. */ +export const ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS = 15; +export const ROM_SCOUT_PRIEST_SCREEN_ATTACK_DAMAGE_BONUS = 0.174; + +export const ROM_SCOUT_PRIEST_SCREEN_ATTACK_DESCRIPTION = + "For 20 seconds, increases your and nearby party members' damage dealt by 17.4%, including periodic damage. Radius: 150. Cooldown: 60 seconds."; + +export const ROM_SCOUT_PRIEST_SCREEN_ATTACK_AURA: AuraDefinition = Object.freeze({ + id: "rom-scout-priest:screen-attack", + name: "Screen Attack", + description: "Increases damage dealt by 17.4% for 20 seconds.", + disposition: "buff", + durationMs: ROM_SCOUT_PRIEST_SCREEN_ATTACK_DURATION_MS, + stackBehavior: "replace", + uniqueBySource: true, + modifiers: [{ + kind: "damage", + direction: "dealt", + operation: "percent", + value: ROM_SCOUT_PRIEST_SCREEN_ATTACK_DAMAGE_BONUS, + }], +}); + +const SCREEN_ATTACK_EFFECT: AbilityEffect = { + kind: "apply-aura", + aura: ROM_SCOUT_PRIEST_SCREEN_ATTACK_AURA, + recipient: "caster", + scope: "party", + radius: ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 0, +}; + +/** + * Current CoA Scout/Priest Screen Attack (499555) is an active raid damage buff. + * Its current skill entry says 20 seconds; patch 11.1.1's rework note says 30. + * The catalog follows the current skill entry and keeps that discrepancy in + * the feature rationale rather than carrying the obsolete RuneWaker passive. + */ +export function romScoutPriestScreenAttackCatalogOverride( + ability: AbilityDefinition, +): AbilityDefinition { + if (ability.source !== "runewaker" + || ability.classId !== "rom-scout" + || ability.secondaryClassId !== "rom-priest" + || ability.dbcSpellId !== ROM_SCOUT_PRIEST_SCREEN_ATTACK_ID) { + return ability; + } + + return { + ...ability, + name: "Screen Attack", + description: ROM_SCOUT_PRIEST_SCREEN_ATTACK_DESCRIPTION, + target: "self", + range: { min: 0, max: 0 }, + radius: ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS, + targeting: { shape: "circle", radius: ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_SCOUT_PRIEST_SCREEN_ATTACK_COOLDOWN_MS, + costs: [], + cost: { resource: "mana", amount: 0 }, + effects: [SCREEN_ATTACK_EFFECT], + passive: false, + romSkillGroup: "elite", + ranks: ability.ranks?.map((rank) => ({ + ...rank, + description: ROM_SCOUT_PRIEST_SCREEN_ATTACK_DESCRIPTION, + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_SCOUT_PRIEST_SCREEN_ATTACK_COOLDOWN_MS, + costs: [], + cost: { resource: "mana", amount: 0 }, + effects: [SCREEN_ATTACK_EFFECT], + targeting: { shape: "circle", radius: ROM_SCOUT_PRIEST_SCREEN_ATTACK_RADIUS }, + })), + }; +} diff --git a/src/game/romScoutRogueOverrides.ts b/src/game/romScoutRogueOverrides.ts index 20e5fd9f..3fa884e8 100644 --- a/src/game/romScoutRogueOverrides.ts +++ b/src/game/romScoutRogueOverrides.ts @@ -2,23 +2,50 @@ import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; import type { AuraDefinition, AuraModifier, AuraProcDefinition } from "./combatAuras"; import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; import { + ROM_ROGUE_COERCE_TAG, ROM_ROGUE_DAGGER_MASTERY_TAG, + ROM_ROGUE_OFF_HAND_MASTERY_TAG, ROM_ROGUE_TREASURE_HUNTER_TAG, + romRogueCoerceLowBlowDamageMultiplier, } from "./romRogueMechanics"; +import { ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG as ROM_CHAOS_DAGGER_TAG } from "./romRogueChaosDagger"; import { ROM_ROGUE_CHAMPION_NERVE_GEAR_MARKER_TAG, ROM_ROGUE_CHAMPION_NERVE_GEAR_PASSIVE_SPELL_ID, } from "./romRogueChampionNerveGearRuntime"; -export const ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG = "rom-491178-enchanted-throw"; +export const ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG = ROM_CHAOS_DAGGER_TAG; +/** @deprecated Use ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG for current CoA behavior. */ +export const ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG = ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG; export const ROM_ROGUE_PRIEST_SINISTER_METHODS_TAG = "rom-rogue-priest-sinister-methods"; export const ROM_ROGUE_PRIEST_SINISTER_METHODS_COOLDOWN_KEY = "rom-rogue-priest-sinister-methods"; export const ROM_SCOUT_PRIEST_SNIPER_TAG = "rom-scout-priest-sniper"; +const ROM_SCOUT_KNIGHT_ENHANCED_ARMOR_PERFECTION_TAG = "rom-scout-knight-enhanced-armor-perfection"; +// Local RuneWaker component 501823 sets Enhanced Armor's duration to 600s. +const ROM_SCOUT_KNIGHT_ENHANCED_ARMOR_DURATION_MS = 600_000; +/** RuneWaker itemobject/shop rows supply Poison Powder to the Scout/Rogue loadout. */ +export const ROM_SCOUT_ROGUE_POISON_POWDER_SUPPLY = Object.freeze({ + itemId: 200563, + name: "Poison Powder", + quantity: "unlimited", +} as const); function firstDamage(effects: readonly AbilityEffect[]): AbilityEffect[] { return effects.filter((effect) => effect.kind === "damage").slice(0, 1); } +function scaleDamageEffects(effects: readonly AbilityEffect[], factor: number): readonly AbilityEffect[] { + return effects.map((effect) => effect.kind === "damage" || effect.kind === "dot" ? { + ...effect, + coefficient: effect.coefficient * factor, + ...(effect.coefficientPerLevel === undefined ? {} : { coefficientPerLevel: effect.coefficientPerLevel * factor }), + ...(effect.basePoints === undefined ? {} : { basePoints: effect.basePoints * factor }), + ...(effect.pointsPerLevel === undefined ? {} : { pointsPerLevel: effect.pointsPerLevel * factor }), + ...(effect.bonusPowerCoefficient === undefined ? {} : { bonusPowerCoefficient: effect.bonusPowerCoefficient * factor }), + ...(effect.kind !== "damage" || effect.bonusFlat === undefined ? {} : { bonusFlat: effect.bonusFlat * factor }), + } : effect); +} + function taggedPassive( sourceId: number, name: string, @@ -137,13 +164,17 @@ export function overrideRomScoutRogueEffects( } case 490504: return taggedRoguePassive(490504, "Dagger Mastery", ROM_ROGUE_DAGGER_MASTERY_TAG); + case 493019: + if (row.classId !== "rom-rogue" || row.secondaryClassId !== "rom-scout") return null; + // Current CoA Coerce directly increases Low Blow damage and reduces its + // Energy cost. Its older RuneWaker below-30% temporary buff is obsolete. + return taggedRoguePassive(493019, "Coerce", ROM_ROGUE_COERCE_TAG); case 490316: return taggedRoguePassive(490316, "Treasure Hunter", ROM_ROGUE_TREASURE_HUNTER_TAG); case 490143: - // The source applies damage and accuracy only to off-hand attacks; there - // is no distinct RoM off-hand hit yet, so do not turn either value into a - // generic player melee modifier. - return []; + // Keep the source modifiers scoped to actual off-hand attacks. A generic + // melee aura would incorrectly buff the main hand as well. + return taggedRoguePassive(490143, "Off Hand Mastery", ROM_ROGUE_OFF_HAND_MASTERY_TAG); case 493020: { // Successful Low Blow/Blind Spot hits trigger the local 10s crit buff. if (row.classId !== "rom-rogue" || row.secondaryClassId !== "rom-priest") return null; const buff = row.source?.components?.find((component) => component.id === 503265); @@ -170,20 +201,10 @@ export function overrideRomScoutRogueEffects( ); case 491178: if (row.classId !== "rom-rogue" || row.secondaryClassId !== "rom-mage") return null; - // Hidden child 491185 has no generated payload. The auto-attack runtime - // applies its referenced Throw (490309) damage explicitly, so keep the - // tag and avoid also registering the untranslated generic child proc. - if (translated.some((effect) => effect.kind === "apply-aura")) { - return translated.map((effect) => effect.kind === "apply-aura" ? { - ...effect, - aura: { - ...effect.aura, - procs: [], - utilityTags: [...(effect.aura.utilityTags ?? []), ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG], - }, - } : effect); - } - return [...translated, ...taggedRoguePassive(491178, "Enchanted Throw", ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG)]; + // Current CoA reuses this exact Rogue/Mage ID as passive Chaos Dagger. + // Keep a marker for learned-passive consumers such as Day of Rain; do + // not register the incompatible RuneWaker Throw child or local aura. + return taggedRoguePassive(491178, "Chaos Dagger", ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG); case 491552: if (row.classId !== "rom-rogue") return null; return translated.map((effect) => effect.kind === "apply-aura" ? { @@ -250,6 +271,9 @@ export function overrideRomScoutRogueEffects( case 492344: if (row.classId !== "rom-scout" || row.secondaryClassId !== "rom-priest") return null; return taggedPassive(492344, "Sniper", ROM_SCOUT_PRIEST_SNIPER_TAG); + case 492346: + if (row.classId !== "rom-scout" || row.secondaryClassId !== "rom-knight") return null; + return taggedPassive(492346, "Enhanced Armor Perfection", ROM_SCOUT_KNIGHT_ENHANCED_ARMOR_PERFECTION_TAG); case 493007: return taggedPassive(493007, "Deadly Counterattack", "rom-deadly-counterattack", customProc(493007, "hit", "rom-deadly-counterattack", { internalCooldownMs: 20_000 })); @@ -321,6 +345,19 @@ export function romScoutRogueCastEffects( ): readonly AbilityEffect[] { const passives = new Set(passiveTags); const target = new Set(targetTags); + const coerceDamageMultiplier = romRogueCoerceLowBlowDamageMultiplier({ + classId: ability.classId, + abilitySource: ability.source, + abilitySpellId: ability.dbcSpellId, + passiveTags, + }); + if (coerceDamageMultiplier !== 1) return scaleDamageEffects(effects, coerceDamageMultiplier); + if (ability.dbcSpellId === 490152 && passives.has(ROM_SCOUT_KNIGHT_ENHANCED_ARMOR_PERFECTION_TAG)) { + // Component 501823 is the source's rank payload: Enhanced Armor lasts 600s. + return effects.map((effect) => effect.kind === "apply-aura" + ? { ...effect, aura: { ...effect.aura, durationMs: ROM_SCOUT_KNIGHT_ENHANCED_ARMOR_DURATION_MS } } + : effect); + } if (ability.dbcSpellId === 490457) { // Replacement 499535 / component 623051 raises ranged DPS from 0.75 to 0.85. const masteryFactor = passives.has("rom-master-reflected-shot") ? 0.85 / 0.75 : 1; @@ -408,7 +445,7 @@ export function romScoutRogueCastEffects( return effects; } -/** Day of Rain has an exact 50% miss chance while Enchanted Throw is active. */ +/** Day of Rain has an exact 50% miss chance while the Rogue/Mage Chaos Dagger passive is learned. */ export function romRogueMageDayOfRainBaseMissPercent( classId: string, secondaryClassId: string | null | undefined, @@ -419,7 +456,7 @@ export function romRogueMageDayOfRainBaseMissPercent( if (classId !== "rom-rogue" || secondaryClassId !== "rom-mage" || abilitySpellId !== 491183 - || !activeAuraTags.includes(ROM_ROGUE_MAGE_ENCHANTED_THROW_TAG)) return null; + || !activeAuraTags.includes(ROM_ROGUE_MAGE_CHAOS_DAGGER_TAG)) return null; const hitPercent = Number.isFinite(attackerHitPercent) ? Math.max(0, Math.min(100, attackerHitPercent)) : 0; @@ -483,7 +520,7 @@ export type RomScoutRogueProcActionSpec = export function romScoutRogueProcActionSpec( actionId: string, triggeringSourceSkillId: number, - casterPoisonous: boolean, + _casterPoisonous: boolean, data: Readonly> = {}, ): RomScoutRogueProcActionSpec | null { switch (actionId) { @@ -561,7 +598,11 @@ export function romScoutRogueProcActionSpec( provenance: "hybrid-estimate", }; case "rom-poisonous-spit": - if (!casterPoisonous || ![490457, 490424].includes(triggeringSourceSkillId)) return null; + // Poison Powder (item 200563) is supplied as an unlimited bag reagent by + // the Scout/Rogue loadout model. Do not use Rogue's separate Poison + // Bottle aura (490329) as a proxy for carrying this item. + if (ROM_SCOUT_ROGUE_POISON_POWDER_SUPPLY.quantity !== "unlimited" + || ![490457, 490424].includes(triggeringSourceSkillId)) return null; return { kind: "dot", recipient: "target", @@ -575,7 +616,7 @@ export function romScoutRogueProcActionSpec( intervalMs: 2_000, tag: "rom-poisonous-spit", }, - provenance: "source", // 503522; the live Poison Powder aura gates the rider. + provenance: "source", // 503522; Poison Powder is a carried item, not Rogue's Poison Bottle buff. }; case "rom-reclaim-energy": if (triggeringSourceSkillId === 490306) return { diff --git a/src/game/romScoutRoguePairValidation.test.ts b/src/game/romScoutRoguePairValidation.test.ts index 3de504f6..bd29d9c0 100644 --- a/src/game/romScoutRoguePairValidation.test.ts +++ b/src/game/romScoutRoguePairValidation.test.ts @@ -1,14 +1,11 @@ import { beforeEach, describe, expect, it } from "vitest"; -import { abilitiesForCharacter, abilitiesForClass, learnedAbilityForBuild, type AbilityDefinition } from "./abilityCatalog"; -import { applyAura } from "./combatAuras"; -import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilitiesForCharacter, learnedAbilityForBuild, type AbilityDefinition } from "./abilityCatalog"; import { useCombatStore } from "./combatStore"; import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; import { romScoutRogueCastEffects, romScoutRogueProcActionSpec, romScoutRogueWhirlwindBonusEffect } from "./romScoutRogueOverrides"; const scoutRogue = abilitiesForCharacter("rom-scout", "rom-rogue"); const scoutWarrior = abilitiesForCharacter("rom-scout", "rom-warrior"); -const roguePrimary = abilitiesForClass("rom-rogue"); const rogueWarrior = abilitiesForCharacter("rom-rogue", "rom-warrior"); function skill(abilities: readonly AbilityDefinition[], id: string): AbilityDefinition { @@ -177,9 +174,12 @@ describe("accepted RoM Scout/Rogue and Rogue/Warrior pairings", () => { expect(proc?.kind === "apply-aura" ? proc.aura.procs?.[0]?.internalCooldownMs : null).toBe(20_000); }); - it("Poisonous Spit only adds its source poison while Poison Powder is active", () => { + it("Poisonous Spit uses the Scout/Rogue loadout's carried Poison Powder supply", () => { for (const sourceId of [490457, 490424]) { - expect(romScoutRogueProcActionSpec("rom-poisonous-spit", sourceId, false)).toBeNull(); + expect(romScoutRogueProcActionSpec("rom-poisonous-spit", sourceId, false)).toMatchObject({ + kind: "dot", recipient: "target", provenance: "source", + effect: { kind: "dot", ticks: 4, intervalMs: 2_000, basePoints: 7.1, pointsPerLevel: 2.1 }, + }); expect(romScoutRogueProcActionSpec("rom-poisonous-spit", sourceId, true)).toMatchObject({ kind: "dot", recipient: "target", provenance: "source", effect: { kind: "dot", ticks: 4, intervalMs: 2_000, basePoints: 7.1, pointsPerLevel: 2.1 }, @@ -190,28 +190,10 @@ describe("accepted RoM Scout/Rogue and Rogue/Warrior pairings", () => { expect(proc?.kind === "apply-aura" ? proc.aura.procs?.[0]?.internalCooldownMs : null).toBe(20_000); }); - it("does not execute Poisonous Spit without Poison Powder, then poisons after it is applied", () => { + it("executes Poisonous Spit from the loadout supply without Rogue's Poison Bottle buff", () => { prime("rom-scout", 60); expect(useCombatStore.getState().castAbility("rom-scout-primary-11", undefined, 1_000)) .toMatchObject({ ok: true }); - expect(useCombatStore.getState().effects.some((effect) => effect.tag === "rom-poisonous-spit" - && effect.targetId === "target")).toBe(false); - - const poisonPowder = roguePrimary.find((ability) => ability.dbcSpellId === 490329); - if (!poisonPowder) throw new Error("Missing Poison Powder"); - const powderAura = poisonPowder.effects.find((effect) => effect.kind === "apply-aura"); - if (powderAura?.kind !== "apply-aura") throw new Error("Poison Powder has no aura"); - const applied = applyAura(useCombatStore.getState().auras, { - definition: powderAura.aura, - sourceId: PLAYER_AGGRO_ID, - targetId: PLAYER_AGGRO_ID, - now: 3_000, - }); - useCombatStore.setState({ auras: applied.auras }); - expect(useCombatStore.getState().auras.some((aura) => aura.definition.utilityTags?.includes("rom-poisonous"))) - .toBe(true); - expect(useCombatStore.getState().castAbility("rom-scout-primary-11", undefined, 22_000)) - .toMatchObject({ ok: true }); expect(useCombatStore.getState().effects.some((effect) => effect.tag === "rom-poisonous-spit" && effect.targetId === "target")).toBe(true); }); diff --git a/src/game/romWardenOverrides.ts b/src/game/romWardenOverrides.ts index 785fb8ca..c65efb5e 100644 --- a/src/game/romWardenOverrides.ts +++ b/src/game/romWardenOverrides.ts @@ -153,6 +153,9 @@ export function romWardenCastEffects( ...effect, aura: { ...effect.aura, + // Component 503942 is the executable modifier: RuneWaker encodes + // ten seconds here. Component 503643 is tooltip-only and says 15s. + durationMs: 10_000, utilityTags: [...(effect.aura.utilityTags ?? []), ROM_WARDEN_DAMAGE_TRANSFER_TAG], }, } diff --git a/src/game/romWardenRuntime.test.ts b/src/game/romWardenRuntime.test.ts index 5ff06921..ded51057 100644 --- a/src/game/romWardenRuntime.test.ts +++ b/src/game/romWardenRuntime.test.ts @@ -5,7 +5,8 @@ import { PLAYER_AURA_ENTITY_ID, useCombatStore } from "./combatStore"; import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; -import { usePartyStore } from "./partyStore"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; import { romEffectsForCast, type RomCastMechanics } from "./romCombatMechanics"; import { ROM_WARDEN_BRIAR_SHIELD_TAG, @@ -442,6 +443,115 @@ describe("RoM Warden and Warden-linked source behaviors", () => { .toBeCloseTo(ROM_WARDEN_DAMAGE_TRANSFER_FRACTION, 1); }); + it("transfers party Warden damage once to a live pet within 300 range, and respects pet expiry", () => { + const resolvePartyHit = (options: { + readonly petDistance?: number; + readonly petExpiresAt?: number; + readonly transferAura?: boolean; + } = {}) => { + const seed = "warden-party-damage-transfer"; + const now = 1_000; + const hitAt = 1_450; + initializeRomCharacter("rom-warden"); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health); + const warden = createConfiguredPartyMember({ + name: "Warden Companion", + classId: "rom-warden", + specialization: "Primary", + specializationId: "rom-warden:primary", + talentTreeId: "rom-warden-primary", + role: "tank", + }, 80, 0, seed); + usePartyStore.setState({ members: [{ ...warden, gearStats: EMPTY_ITEM_STATS }] }); + registerPartyRuntimePosition(warden.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + const summonAbility = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 493333)!; + const summonEffect = summonAbility.effects.find((effect) => effect.kind === "summon"); + expect(summonEffect?.kind).toBe("summon"); + if (!summonEffect || summonEffect.kind !== "summon") throw new Error("Warden summon effect missing"); + const petId = useCombatStore.getState().summonActor( + warden.id, + summonAbility, + summonEffect, + [options.petDistance ?? 0, 0, 0], + null, + now, + ); + expect(petId).toBeTruthy(); + useCombatStore.setState((state) => ({ + summons: state.summons.map((summon) => summon.id === petId + ? { ...summon, expiresAt: options.petExpiresAt ?? now + 20_000 } + : summon), + })); + + const transferEffects = effectsFor(493399).filter((effect) => effect.kind === "apply-aura" + && effect.aura.utilityTags?.includes(ROM_WARDEN_DAMAGE_TRANSFER_TAG)); + expect(transferEffects).toHaveLength(2); + expect(transferEffects.every((effect) => effect.kind === "apply-aura" + && effect.aura.durationMs === 10_000)).toBe(true); + if (options.transferAura !== false) { + useCombatStore.setState((state) => ({ auras: transferEffects.reduce((auras, effect) => { + if (effect.kind !== "apply-aura") return auras; + return applyAura(auras, { + definition: effect.aura, + sourceId: warden.id, + targetId: warden.id, + now, + }).auras; + }, state.auras) })); + } + + const mobId = "warden-party-transfer-attacker"; + useCombatStore.getState().registerMob(mobId, { + name: "Warden transfer attacker", + maxHealth: 100_000, + level: 100, + attacks: [{ ...DEFAULT_ENEMY_ATTACK, id: "warden-party-transfer-swing", delivery: "projectile", + range: 100, initialCooldownMs: [0, 0] }], + }); + setMobPosition(mobId, [2, 0, 0]); + useCombatStore.getState().damageMob(mobId, 1, now, { actorId: warden.id, role: "tank" }); + const memberBefore = usePartyStore.getState().members.find((member) => member.id === warden.id)!.health; + const petBefore = useCombatStore.getState().summons.find((summon) => summon.id === petId)?.health ?? 0; + useCombatStore.getState().advanceMobCombat(hitAt, [0, 0, 0]); + const state = useCombatStore.getState(); + const memberAfter = usePartyStore.getState().members.find((member) => member.id === warden.id)!.health; + const petAfter = state.summons.find((summon) => summon.id === petId)?.health ?? 0; + const hitEvents = state.combatEvents.filter((event) => event.occurredAt === hitAt + && event.abilityId === "warden-party-transfer-swing"); + return { + memberDamage: memberBefore - memberAfter, + petDamage: petBefore - petAfter, + petEvents: hitEvents.filter((event) => event.targetActorId === petId), + ownerEvents: hitEvents.filter((event) => event.targetActorId === warden.id), + petAlive: state.actors[petId!]?.alive ?? false, + }; + }; + + const baseline = resolvePartyHit({ transferAura: false }); + const inRange = resolvePartyHit({ petDistance: 300 }); + expect(baseline.memberDamage).toBeGreaterThan(0); + expect(inRange.memberDamage).toBeGreaterThan(0); + expect(inRange.petDamage).toBeGreaterThan(0); + expect(inRange.memberDamage + inRange.petDamage).toBeCloseTo(baseline.memberDamage, 0); + expect(inRange.petDamage / (inRange.memberDamage + inRange.petDamage)) + .toBeCloseTo(ROM_WARDEN_DAMAGE_TRANSFER_FRACTION, 1); + expect(inRange.ownerEvents).toHaveLength(1); + expect(inRange.petEvents).toHaveLength(1); + expect(inRange.petAlive).toBe(true); + + const outOfRange = resolvePartyHit({ petDistance: 301 }); + expect(outOfRange.memberDamage).toBe(baseline.memberDamage); + expect(outOfRange.petDamage).toBe(0); + expect(outOfRange.petEvents).toHaveLength(0); + + const expired = resolvePartyHit({ petExpiresAt: 1_450 }); + expect(expired.memberDamage).toBe(baseline.memberDamage); + expect(expired.petDamage).toBe(0); + expect(expired.petEvents).toHaveLength(0); + }); + it("removes the unquantified Weak Point Strike bonus and models Awakening immunity and next critical", () => { const weakPoint = effectsFor(494043); expect(weakPoint.filter((effect) => effect.kind === "damage")).toHaveLength(1); diff --git a/src/game/romWarlockMageCoaRuntime.integration.test.ts b/src/game/romWarlockMageCoaRuntime.integration.test.ts new file mode 100644 index 00000000..c702bacf --- /dev/null +++ b/src/game/romWarlockMageCoaRuntime.integration.test.ts @@ -0,0 +1,281 @@ +import { beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilitiesForCharacter, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { applyAura } from "./combatAuras"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG } from "./romWarlockMageSoulBrandSting"; +import { ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG } from "./romWarlockPriestSpreadingPain"; +import { partyAbilityAmount, partyAbilityIsReady } from "./partyAbilityAi"; + +const SOUL_BRAND_TARGET = "rom-warlock-mage-soul-brand-target"; +const CRIT_TARGET = "rom-warlock-mage-spreading-pain-target"; +const STING_TARGET = "rom-warlock-mage-soul-brand-sting-target"; + +function prepareTarget(id: string, name: string): void { + useCombatStore.getState().registerMob(id, { name, maxHealth: 100_000 }); + setMobPosition(id, [5, 0, 0]); +} + +function applyStateAura(actorId: string, tag: string, auraId: string, name: string, now: number): void { + const current = useCombatStore.getState(); + const aura = applyAura(current.auras, { + definition: { id: auraId, name, disposition: "buff", durationMs: 30_000, utilityTags: [tag] }, + sourceId: actorId, + targetId: actorId, + now, + }); + useCombatStore.setState({ auras: [...aura.auras] }); +} + +function damageSpell(targetId: string, sourceActorId: string, school: "fire" | "shadow", now: number, periodic = false) { + return useCombatStore.getState().damageMob( + targetId, + 1_000, + now, + { actorId: sourceActorId, role: "damage", abilityId: "coa-runtime-test-spell" }, + school, + { + attackKind: "spell", + abilityId: "coa-runtime-test-spell", + seed: `${sourceActorId}:${school}:${now}`, + periodic, + rules: { canMiss: false, canDodge: false, canParry: false, canBlock: false }, + }, + ); +} + +describe("current CoA Warlock hybrid runtime hooks", () => { + beforeAll(async () => { + await preloadAbilityCatalogsForClasses(["rom-warlock"]); + }); + + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-warlock", + secondaryClassId: "rom-mage", + raceId: "rom-dwarf", + level: 80, + }); + }); + + it("procs Soul Brand on player direct and periodic Fire damage, stacks to four, and restores 1 Psi per landed event", () => { + prepareTarget(SOUL_BRAND_TARGET, "Soul Brand target"); + useCombatStore.setState((state) => ({ + resourcePools: { ...state.resourcePools, psi: 1 }, + maxResourcePools: { ...state.maxResourcePools, psi: 6 }, + })); + + expect(damageSpell(SOUL_BRAND_TARGET, PLAYER_AGGRO_ID, "fire", 1_000).amount).toBeGreaterThan(0); + expect(damageSpell(SOUL_BRAND_TARGET, PLAYER_AGGRO_ID, "fire", 2_000).amount).toBeGreaterThan(0); + expect(damageSpell(SOUL_BRAND_TARGET, PLAYER_AGGRO_ID, "shadow", 3_000).amount).toBeGreaterThan(0); + expect(damageSpell(SOUL_BRAND_TARGET, PLAYER_AGGRO_ID, "fire", 4_000, true).amount).toBeGreaterThan(0); + + const state = useCombatStore.getState(); + expect(state.auras.find((aura) => aura.targetId === SOUL_BRAND_TARGET + && aura.definition.id === "rom-warlock-mage-soul-brand-498705")?.stacks).toBe(3); + expect(state.resourcePools.psi).toBe(4); + }); + + it("gates Soul Brand Sting for both player and companion until the tagged Willpower Blade state is active", () => { + const ability = abilitiesForCharacter("rom-warlock", "rom-mage") + .find((candidate) => candidate.dbcSpellId === 498710)!; + useCombatStore.setState((state) => ({ + resourcePools: { ...state.resourcePools, psi: 4 }, + maxResourcePools: { ...state.maxResourcePools, psi: 6 }, + })); + expect(useCombatStore.getState().castAbility(ability.id, { now: 1_000 })).toMatchObject({ + ok: false, + reason: "condition-not-met", + }); + prepareTarget(STING_TARGET, "Soul Brand Sting target"); + + usePartyStore.getState().initializeParty( + "rom-warlock-mage-gate-party", + 80, + useCombatStore.getState().health, + "damage", + 2, + "rom", + ); + const member = createConfiguredPartyMember({ + name: "Warlock Mage", + classId: "rom-warlock", + secondaryClassId: "rom-mage", + raceId: "rom-dwarf", + specialization: "Warlock", + role: "damage", + }, 80, 0, "rom-warlock-mage-gate-party"); + const partyMember = { + ...member, + resourcePools: { ...member.resourcePools, psi: 4 }, + cooldowns: { ...member.cooldowns, [ability.id]: 0 }, + }; + const stingDamage = ability.effects.find((effect) => effect.kind === "damage"); + if (stingDamage?.kind === "damage") { + expect(partyAbilityAmount(partyMember, ability, stingDamage)).toBeGreaterThan(3_737.5); + } + usePartyStore.setState({ members: [partyMember] }); + expect(partyAbilityIsReady(partyMember, ability, 1_000)).toBe(false); + + applyStateAura(PLAYER_AURA_ENTITY_ID, ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG, + "local-willpower-blade", "Willpower Blade", 1_100); + applyStateAura(member.id, ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG, + "companion-willpower-blade", "Willpower Blade", 1_100); + expect(partyAbilityIsReady(partyMember, ability, 1_200)).toBe(true); + expect(useCombatStore.getState().castAbility(ability.id, { + targetActorId: STING_TARGET, + now: 1_200, + })).toMatchObject({ ok: true }); + const activeCast = useCombatStore.getState().activeCast; + expect(activeCast?.abilityId).toBe(ability.id); + const completedCast = useCombatStore.getState().castAbility(ability.id, { + targetActorId: STING_TARGET, + now: 2_300, + completingCast: activeCast ?? undefined, + }); + expect(completedCast.ok).toBe(true); + expect(completedCast.damage).toBeGreaterThan(7_475); + }); + + it("applies Spreading Pain's +25% critical bonus only to magical spells for its exact Warlock/Priest build", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-warlock", + secondaryClassId: "rom-priest", + raceId: "rom-dwarf", + level: 80, + }); + prepareTarget(CRIT_TARGET, "Spreading Pain target"); + const hit = (now: number) => useCombatStore.getState().damageMob( + CRIT_TARGET, + 1_000, + now, + { actorId: PLAYER_AGGRO_ID, role: "damage", abilityId: "coa-critical-spell" }, + "fire", + { + attackKind: "spell", + abilityId: "coa-critical-spell", + seed: `spreading-pain:${now}`, + criticalChanceBonusPercent: 100, + rules: { canMiss: false, canDodge: false, canParry: false, canBlock: false }, + }, + ); + + const baseline = hit(2_000); + expect(baseline.combatResult?.critical).toBe(true); + applyStateAura(PLAYER_AURA_ENTITY_ID, ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG, + "spreading-pain-critical", "Spreading Pain: Magical Critical Bonus", 2_100); + const buffed = hit(2_200); + + expect(buffed.combatResult?.critical).toBe(true); + expect(buffed.amount).toBe(Math.round(baseline.amount * 1.125)); + }); + + it("uses the same Spreading Pain critical bonus for generated companion spells", () => { + useCombatStore.getState().initializeCharacter({ classId: "rom-priest", raceId: "rom-dwarf", level: 80 }); + usePartyStore.getState().initializeParty( + "rom-warlock-priest-spreading-pain-party", + 80, + useCombatStore.getState().health, + "damage", + 2, + "rom", + ); + const member = createConfiguredPartyMember({ + name: "Warlock Priest", + classId: "rom-warlock", + secondaryClassId: "rom-priest", + raceId: "rom-dwarf", + specialization: "Warlock", + role: "damage", + }, 80, 0, "rom-warlock-priest-spreading-pain-party"); + usePartyStore.setState({ members: [member] }); + useCombatStore.getState().synchronizeActors(); + prepareTarget("rom-warlock-priest-crit-target", "Companion crit target"); + const hit = (now: number) => useCombatStore.getState().damageMob( + "rom-warlock-priest-crit-target", + 1_000, + now, + { actorId: member.id, role: "damage", abilityId: "coa-party-critical-spell" }, + "fire", + { + attackKind: "spell", + abilityId: "coa-party-critical-spell", + seed: `companion-spreading-pain:${now}`, + criticalChanceBonusPercent: 100, + rules: { canMiss: false, canDodge: false, canParry: false, canBlock: false }, + }, + ); + + const baseline = hit(2_000); + expect(baseline.combatResult?.critical).toBe(true); + applyStateAura(member.id, ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG, + "companion-spreading-pain-critical", "Spreading Pain: Magical Critical Bonus", 2_100); + const buffed = hit(2_200); + expect(buffed.combatResult?.critical).toBe(true); + expect(buffed.amount).toBe(Math.round(baseline.amount * 1.125)); + }); + + it("routes deterministic companion Fire hits through Soul Brand's post-landed hook", () => { + useCombatStore.getState().initializeCharacter({ classId: "rom-priest", raceId: "rom-dwarf", level: 80 }); + usePartyStore.getState().initializeParty( + "rom-warlock-mage-soul-brand-party", + 80, + useCombatStore.getState().health, + "damage", + 2, + "rom", + ); + const member = createConfiguredPartyMember({ + name: "Warlock Mage", + classId: "rom-warlock", + secondaryClassId: "rom-mage", + raceId: "rom-dwarf", + specialization: "Warlock", + role: "damage", + }, 80, 0, "rom-warlock-mage-soul-brand-party"); + const pairAbilities = abilitiesForCharacter("rom-warlock", "rom-mage"); + const flameStrike = pairAbilities.find((ability) => ability.dbcSpellId === 498697)!; + const cooldowns = Object.fromEntries(pairAbilities.map((ability) => [ + ability.id, + ability.id === flameStrike.id ? 0 : 100_000, + ])); + const runtimeMember = { + ...member, + cooldowns, + resourcePools: { ...member.resourcePools, psi: 3 }, + resource: member.resourceType === "psi" ? 3 : member.resource, + nextActionAt: 0, + globalCooldownEndsAt: 0, + }; + usePartyStore.setState({ command: "attack", activeMobId: SOUL_BRAND_TARGET, + memberTargetIds: { [member.id]: SOUL_BRAND_TARGET }, members: [runtimeMember] }); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + prepareTarget(SOUL_BRAND_TARGET, "Companion Soul Brand target"); + useCombatStore.getState().damageMob(SOUL_BRAND_TARGET, 100, 900); + updatePartyRuntimeTargetVisibility(member.id, SOUL_BRAND_TARGET, true); + + for (const now of [1_000, 1_300, 3_500, 3_800, 6_000]) advanceDungeonPartyCombat(now); + expect(damageSpell(SOUL_BRAND_TARGET, member.id, "fire", 7_000, true).amount).toBeGreaterThan(0); + + const targetAura = useCombatStore.getState().auras.find((aura) => ( + aura.targetId === SOUL_BRAND_TARGET + && aura.sourceId === member.id + && aura.definition.id === "rom-warlock-mage-soul-brand-498705" + )); + expect(targetAura?.stacks).toBe(2); + expect(usePartyStore.getState().members.find((candidate) => candidate.id === member.id)?.resourcePools.psi) + .toBeGreaterThan(3); + }); +}); diff --git a/src/game/romWarlockMageSoulBrand.test.ts b/src/game/romWarlockMageSoulBrand.test.ts new file mode 100644 index 00000000..6fa64535 --- /dev/null +++ b/src/game/romWarlockMageSoulBrand.test.ts @@ -0,0 +1,61 @@ +import { describe, expect, it } from "vitest"; +import { + ROM_WARLOCK_MAGE_SOUL_BRAND, + romWarlockMageSoulBrandEffects, + type RomWarlockMageSoulBrandBuild, +} from "./romWarlockMageSoulBrand"; + +const build: RomWarlockMageSoulBrandBuild = { + classId: "rom-warlock", + secondaryClassId: "rom-mage", + learnedPassiveSpellIds: [498705], +}; + +describe("Warlock/Mage Soul Brand CoA helper", () => { + it("adds a four-stack +2% elemental damage-taken debuff and 1 Psi on Fire damage", () => { + expect(romWarlockMageSoulBrandEffects(build, { school: "fire", damageLanded: true })).toEqual([ + expect.objectContaining({ + kind: "apply-aura", + recipient: "ability-target", + aura: expect.objectContaining({ + id: "rom-warlock-mage-soul-brand-498705", + disposition: "debuff", + durationMs: 20_000, + maxStacks: 4, + stackBehavior: "add", + modifiers: expect.arrayContaining([ + ...ROM_WARLOCK_MAGE_SOUL_BRAND.elementalDamageSchools.map((school) => expect.objectContaining({ + kind: "damage", + direction: "taken", + school, + operation: "percent", + value: 0.02, + perStack: true, + })), + ]), + }), + }), + { kind: "resource", resource: "psi", amount: 1 }, + ]); + }); + + it("accepts landed Fire DoT pulses and rejects misses or other schools", () => { + expect(romWarlockMageSoulBrandEffects(build, { + school: "fire", damageLanded: true, periodic: true, + })).not.toBeNull(); + expect(romWarlockMageSoulBrandEffects(build, { school: "fire", damageLanded: false })).toBeNull(); + expect(romWarlockMageSoulBrandEffects(build, { school: "shadow", damageLanded: true })).toBeNull(); + }); + + it("requires the exact Warlock/Mage pair and learned passive", () => { + expect(romWarlockMageSoulBrandEffects({ ...build, secondaryClassId: "rom-priest" }, { + school: "fire", damageLanded: true, + })).toBeNull(); + expect(romWarlockMageSoulBrandEffects({ ...build, classId: "rom-mage" }, { + school: "fire", damageLanded: true, + })).toBeNull(); + expect(romWarlockMageSoulBrandEffects({ ...build, learnedPassiveSpellIds: [] }, { + school: "fire", damageLanded: true, + })).toBeNull(); + }); +}); diff --git a/src/game/romWarlockMageSoulBrand.ts b/src/game/romWarlockMageSoulBrand.ts new file mode 100644 index 00000000..87a67e8e --- /dev/null +++ b/src/game/romWarlockMageSoulBrand.ts @@ -0,0 +1,75 @@ +import type { AbilityEffect } from "./abilityCatalog"; +import type { DamageSchool } from "./combatAuras"; + +export const ROM_WARLOCK_MAGE_SOUL_BRAND = Object.freeze({ + passiveSpellId: 498705, + name: "Soul Brand", + triggerSchool: "fire" as const, + targetDamageTakenBonusPerStack: 0.02, + durationMs: 20_000, + maxStacks: 4, + psiPerTrigger: 1, + elementalDamageSchools: ["fire", "frost", "nature", "holy", "shadow"] as const, +}); + +export interface RomWarlockMageSoulBrandBuild { + readonly classId: string; + readonly secondaryClassId: string; + readonly learnedPassiveSpellIds: readonly number[]; +} + +export interface RomWarlockMageSoulBrandDamageEvent { + readonly school: DamageSchool; + /** True when this damage event applied after the simulator's hit/resist checks. */ + readonly damageLanded: boolean; + /** Fire DoT pulses remain eligible: current CoA says any inflicted Fire damage. */ + readonly periodic?: boolean; +} + +/** + * Source-backed CoA replacement for RuneWaker Soul Brand (498705). This + * isolated helper describes its any-Fire-damage trigger and payload; callers + * still need to apply the target aura and resource effect in the combat event + * path. The RoM elemental schools map to five simulator schools because + * Water→Frost, Earth/Wind→Nature, Light→Holy, and Dark→Shadow. + */ +export function romWarlockMageSoulBrandEffects( + build: RomWarlockMageSoulBrandBuild, + event: RomWarlockMageSoulBrandDamageEvent, +): readonly AbilityEffect[] | null { + if (build.classId !== "rom-warlock" + || build.secondaryClassId !== "rom-mage" + || !build.learnedPassiveSpellIds.includes(ROM_WARLOCK_MAGE_SOUL_BRAND.passiveSpellId) + || !event.damageLanded + || event.school !== ROM_WARLOCK_MAGE_SOUL_BRAND.triggerSchool) { + return null; + } + + return [ + { + kind: "apply-aura", + recipient: "ability-target", + aura: { + id: "rom-warlock-mage-soul-brand-498705", + name: ROM_WARLOCK_MAGE_SOUL_BRAND.name, + disposition: "debuff", + durationMs: ROM_WARLOCK_MAGE_SOUL_BRAND.durationMs, + maxStacks: ROM_WARLOCK_MAGE_SOUL_BRAND.maxStacks, + stackBehavior: "add", + modifiers: ROM_WARLOCK_MAGE_SOUL_BRAND.elementalDamageSchools.map((school) => ({ + kind: "damage" as const, + direction: "taken" as const, + school, + operation: "percent" as const, + value: ROM_WARLOCK_MAGE_SOUL_BRAND.targetDamageTakenBonusPerStack, + perStack: true, + })), + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: ROM_WARLOCK_MAGE_SOUL_BRAND.passiveSpellId, + }, + { kind: "resource", resource: "psi", amount: ROM_WARLOCK_MAGE_SOUL_BRAND.psiPerTrigger }, + ]; +} diff --git a/src/game/romWarlockMageSoulBrandAuraSemantics.test.ts b/src/game/romWarlockMageSoulBrandAuraSemantics.test.ts new file mode 100644 index 00000000..462b1704 --- /dev/null +++ b/src/game/romWarlockMageSoulBrandAuraSemantics.test.ts @@ -0,0 +1,68 @@ +import { describe, expect, it } from "vitest"; +import { applyAura, expireAuras, resolveDamageValue, type ActiveAura } from "./combatAuras"; +import { + ROM_WARLOCK_MAGE_SOUL_BRAND, + romWarlockMageSoulBrandEffects, + type RomWarlockMageSoulBrandBuild, +} from "./romWarlockMageSoulBrand"; + +const build: RomWarlockMageSoulBrandBuild = { + classId: "rom-warlock", + secondaryClassId: "rom-mage", + learnedPassiveSpellIds: [ROM_WARLOCK_MAGE_SOUL_BRAND.passiveSpellId], +}; + +describe("Soul Brand helper/aura-semantics coverage (not runtime integration)", () => { + it("adds up to four stacks, refreshes 20 seconds, and applies +8% to the five modeled elemental schools", () => { + let auras: readonly ActiveAura[] = []; + let psiRestored = 0; + const applications = [1_000, 6_000, 11_000, 16_000, 21_000]; + + for (const [index, now] of applications.entries()) { + const effects = romWarlockMageSoulBrandEffects(build, { + school: "fire", + damageLanded: true, + periodic: index === 1, + }); + expect(effects).not.toBeNull(); + + const auraEffect = effects!.find((effect) => effect.kind === "apply-aura"); + const resourceEffect = effects!.find((effect) => effect.kind === "resource"); + expect(auraEffect?.kind).toBe("apply-aura"); + expect(resourceEffect).toMatchObject({ kind: "resource", resource: "psi", amount: 1 }); + if (resourceEffect?.kind === "resource") psiRestored += resourceEffect.amount; + + if (auraEffect?.kind === "apply-aura") { + auras = applyAura(auras, { + definition: auraEffect.aura, + sourceId: "warlock", + targetId: "target", + now, + }).auras; + } + } + + expect(psiRestored).toBe(5); + expect(auras).toHaveLength(1); + expect(auras[0]).toMatchObject({ + definition: { id: "rom-warlock-mage-soul-brand-498705", maxStacks: 4, durationMs: 20_000 }, + stacks: 4, + appliedAt: 21_000, + expiresAt: 41_000, + }); + + for (const school of ROM_WARLOCK_MAGE_SOUL_BRAND.elementalDamageSchools) { + expect(resolveDamageValue(100, auras, { + direction: "taken", school, attackKind: "spell", + })).toBe(108); + } + for (const school of ["physical", "arcane"] as const) { + expect(resolveDamageValue(100, auras, { + direction: "taken", school, attackKind: "spell", + })).toBe(100); + } + + expect(expireAuras(auras, 40_999)).toMatchObject({ active: auras, expired: [] }); + expect(expireAuras(auras, 41_000)).toMatchObject({ active: [], expired: auras }); + }); +}); diff --git a/src/game/romWarlockMageSoulBrandSting.catalog.test.ts b/src/game/romWarlockMageSoulBrandSting.catalog.test.ts new file mode 100644 index 00000000..08477a77 --- /dev/null +++ b/src/game/romWarlockMageSoulBrandSting.catalog.test.ts @@ -0,0 +1,46 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { ROM_WARLOCK_MAGE_SOUL_BRAND_STING_DESCRIPTION } from "./romWarlockMageSoulBrandSting"; + +describe("Warlock/Mage Soul Brand Sting CoA catalog override", () => { + const skill = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 498710 + && ability.classId === "rom-warlock" && ability.secondaryClassId === "rom-mage"); + + it("uses the current 2-Psi cost in the ability and its rank while preserving unconverted local range", () => { + expect(skill).toBeDefined(); + expect(skill).toMatchObject({ + cost: { resource: "psi", amount: 2, percentage: false }, + costs: [{ resource: "psi", amount: 2, percentage: false }], + castTimeMs: 1_000, + range: { min: 0, max: 22.5 }, + description: ROM_WARLOCK_MAGE_SOUL_BRAND_STING_DESCRIPTION, + ranks: [{ + cost: { resource: "psi", amount: 2, percentage: false }, + costs: [{ resource: "psi", amount: 2, percentage: false }], + description: ROM_WARLOCK_MAGE_SOUL_BRAND_STING_DESCRIPTION, + }], + }); + }); + + it("keeps the CoA cooldown reset pair-scoped and cast-triggered", () => { + const resets = skill?.effects.filter((effect) => effect.kind === "cooldown-reset"); + expect(resets).toEqual([{ kind: "cooldown-reset", mode: "reset", abilityName: "Flaming Heart Strike" }]); + }); + + it("tags the observable local Willpower Blade aura by state name for a future cast gate", () => { + const state = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 497955 + && ability.classId === "rom-warlock"); + expect(state?.effects.find((effect) => effect.kind === "apply-aura" && effect.aura.name === "Willpower Blade")) + .toMatchObject({ kind: "apply-aura", aura: { utilityTags: ["rom-warlock-state-willpower-blade"] } }); + }); + + it("uses the sourced Dark/Fire base packets without proxying Intelligence scaling", () => { + const packets = skill?.effects.filter((effect) => effect.kind === "damage"); + expect(packets).toHaveLength(2); + expect(packets?.map((effect) => effect.kind === "damage" ? effect.school : null)).toEqual(["shadow", "fire"]); + expect(packets).toEqual([ + expect.objectContaining({ kind: "damage", school: "shadow", coefficient: 0, basePoints: 3_737.5, bonusPowerCoefficient: 0 }), + expect.objectContaining({ kind: "damage", school: "fire", coefficient: 0, basePoints: 3_737.5, bonusPowerCoefficient: 0 }), + ]); + }); +}); diff --git a/src/game/romWarlockMageSoulBrandSting.test.ts b/src/game/romWarlockMageSoulBrandSting.test.ts new file mode 100644 index 00000000..5bd50a0c --- /dev/null +++ b/src/game/romWarlockMageSoulBrandSting.test.ts @@ -0,0 +1,123 @@ +import { describe, expect, it } from "vitest"; +import type { AbilityEffect } from "./abilityCatalog"; +import { applyAura } from "./combatAuras"; +import { + ROM_WARLOCK_MAGE_SOUL_BRAND_STING, + ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG, + romWarlockMageSoulBrandStingHasWillpowerBladeState, + romWarlockMageSoulBrandStingEffects, +} from "./romWarlockMageSoulBrandSting"; +import { overrideRomWarlockEffects } from "./romWarlockOverrides"; + +const row = { + classId: "rom-warlock", + secondaryClassId: "rom-mage", + sourceSkillId: 498710, + name: "Soul Brand Sting", + description: "", +} as const; + +describe("Warlock/Mage Soul Brand Sting CoA class helper", () => { + it("retains translated damage and resets Flaming Heart Strike at cast time for the exact pair", () => { + const damage: AbilityEffect = { kind: "damage", coefficient: 1, school: "fire" }; + const obsoleteReset: AbilityEffect = { kind: "cooldown-reset", mode: "reduce", amountMs: 5_000 }; + + expect(romWarlockMageSoulBrandStingEffects(row, [damage, obsoleteReset])).toEqual([ + { + kind: "damage", + school: "shadow", + coefficient: 0, + basePoints: 3_737.5, + intellectCoefficient: 1, + bonusPowerCoefficient: 0, + }, + { + kind: "damage", + school: "fire", + coefficient: 0, + basePoints: 3_737.5, + intellectCoefficient: 1, + bonusPowerCoefficient: 0, + }, + { kind: "cooldown-reset", mode: "reset", abilityName: "Flaming Heart Strike" }, + ]); + + expect(overrideRomWarlockEffects(row, [damage, obsoleteReset])).toEqual([ + { + kind: "damage", + school: "shadow", + coefficient: 0, + basePoints: 3_737.5, + intellectCoefficient: 1, + bonusPowerCoefficient: 0, + }, + { + kind: "damage", + school: "fire", + coefficient: 0, + basePoints: 3_737.5, + intellectCoefficient: 1, + bonusPowerCoefficient: 0, + }, + { kind: "cooldown-reset", mode: "reset", abilityName: "Flaming Heart Strike" }, + ]); + }); + + it("does not apply the pair effect to another class, secondary class, or skill", () => { + const translated: readonly AbilityEffect[] = [{ kind: "damage", coefficient: 1 }]; + expect(romWarlockMageSoulBrandStingEffects({ ...row, secondaryClassId: "rom-priest" }, translated)).toBeNull(); + expect(romWarlockMageSoulBrandStingEffects({ ...row, classId: "rom-mage" }, translated)).toBeNull(); + expect(romWarlockMageSoulBrandStingEffects({ ...row, sourceSkillId: 498705 }, translated)).toBeNull(); + expect(overrideRomWarlockEffects({ ...row, secondaryClassId: "rom-priest" }, translated)).toBeNull(); + }); + + it("marks the observed local Willpower Blade aura and exposes a state predicate without bridging skill IDs", () => { + const stateEffect: AbilityEffect = { + kind: "apply-aura", + aura: { id: "rom-state-497955", name: "Willpower Blade", disposition: "buff", durationMs: null }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 497955, + }; + const marked = overrideRomWarlockEffects({ + classId: "rom-warlock", + sourceSkillId: 497955, + name: "Willpower Blade", + description: "", + }, [stateEffect]); + expect(marked?.[0]).toMatchObject({ + kind: "apply-aura", + aura: { utilityTags: [ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG] }, + }); + + const stateAura = applyAura([], { + definition: { + id: "rom-state-497955", + name: "Willpower Blade", + disposition: "buff", + durationMs: null, + utilityTags: [ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG], + }, + sourceId: "warlock", + targetId: "warlock", + now: 0, + }).aura; + expect(romWarlockMageSoulBrandStingHasWillpowerBladeState([stateAura])).toBe(true); + expect(romWarlockMageSoulBrandStingHasWillpowerBladeState([])).toBe(false); + }); + + it("keeps the current CoA source values explicit", () => { + expect(ROM_WARLOCK_MAGE_SOUL_BRAND_STING).toMatchObject({ + spellId: 498710, + flamingHeartStrikeSpellId: 498697, + psiCost: 2, + range: 150, + castTimeMs: 1_000, + requiresWillpowerBlade: true, + damageBase: 3_737.5, + intelligenceCoefficient: 1, + damageSchools: ["shadow", "fire"], + }); + }); +}); diff --git a/src/game/romWarlockMageSoulBrandSting.ts b/src/game/romWarlockMageSoulBrandSting.ts new file mode 100644 index 00000000..1fbdcff9 --- /dev/null +++ b/src/game/romWarlockMageSoulBrandSting.ts @@ -0,0 +1,74 @@ +import type { AbilityEffect } from "./abilityCatalog"; +import type { ActiveAura } from "./combatAuras"; +import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; + +export const ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG = "rom-warlock-state-willpower-blade"; + +export const ROM_WARLOCK_MAGE_SOUL_BRAND_STING = Object.freeze({ + spellId: 498710, + name: "Soul Brand Sting", + classId: "rom-warlock", + secondaryClassId: "rom-mage", + flamingHeartStrikeSpellId: 498697, + psiCost: 2, + range: 150, + castTimeMs: 1_000, + requiresWillpowerBlade: true, + damageBase: 3_737.5, + intelligenceCoefficient: 1, + damageSchools: ["shadow", "fire"] as const, +} as const); + +export const ROM_WARLOCK_MAGE_SOUL_BRAND_STING_COST = Object.freeze({ + resource: "psi" as const, + amount: ROM_WARLOCK_MAGE_SOUL_BRAND_STING.psiCost, + percentage: false, +}); + +export const ROM_WARLOCK_MAGE_SOUL_BRAND_STING_DESCRIPTION = + "Only usable under Willpower Blade. Costs 2 Psi. Inflicts 3737.5 + 1 x INT Dark and Fire damage. Resets Flaming Heart Strike's cooldown on cast."; + +/** Pass this caster's active auras; the shared cast validator must consume this predicate. */ +export function romWarlockMageSoulBrandStingHasWillpowerBladeState( + casterAuras: readonly ActiveAura[], +): boolean { + return casterAuras.some((aura) => aura.definition.utilityTags?.includes( + ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG, + )); +} + +/** + * Apply the current CoA cooldown rider only to the exact Warlock/Mage skill. + * The shared ability catalog represents the reset-at-cast effect and pair- + * specific cost. The runtime supplies the Intelligence coefficient and + * Willpower Blade state-name cast gate. + */ +export function romWarlockMageSoulBrandStingEffects( + row: RomGeneratedAbilityLike, + translated: readonly AbilityEffect[], +): readonly AbilityEffect[] | null { + if (row.classId !== ROM_WARLOCK_MAGE_SOUL_BRAND_STING.classId + || row.secondaryClassId !== ROM_WARLOCK_MAGE_SOUL_BRAND_STING.secondaryClassId + || row.sourceSkillId !== ROM_WARLOCK_MAGE_SOUL_BRAND_STING.spellId) { + return null; + } + + const sourcedDamagePackets: readonly AbilityEffect[] = ROM_WARLOCK_MAGE_SOUL_BRAND_STING.damageSchools.map((school) => ({ + kind: "damage", + school, + coefficient: 0, + basePoints: ROM_WARLOCK_MAGE_SOUL_BRAND_STING.damageBase, + intellectCoefficient: ROM_WARLOCK_MAGE_SOUL_BRAND_STING.intelligenceCoefficient, + bonusPowerCoefficient: 0, + })); + + return [ + ...translated.filter((effect) => effect.kind !== "cooldown-reset" && effect.kind !== "damage"), + ...sourcedDamagePackets, + { + kind: "cooldown-reset", + mode: "reset", + abilityName: "Flaming Heart Strike", + }, + ]; +} diff --git a/src/game/romWarlockOverrides.ts b/src/game/romWarlockOverrides.ts index 54ad2ac5..383ff7e7 100644 --- a/src/game/romWarlockOverrides.ts +++ b/src/game/romWarlockOverrides.ts @@ -1,8 +1,19 @@ import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; +import { romWarlockPriestSpreadingPainEffects } from "./romWarlockPriestSpreadingPain"; +import { romWarlockRogueShadowSliceEffects } from "./romWarlockRogueShadowSlice"; +import { + ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG, + romWarlockMageSoulBrandStingEffects, +} from "./romWarlockMageSoulBrandSting"; +import { + isRomWarlockPriestSoulEnlightenment, + romWarlockPriestSoulEnlightenmentEffect, +} from "./romWarlockPriestSoulEnlightenment"; export const ROM_WARLOCK_STATE_TAGS = Object.freeze({ heartFence: "rom-warlock-state-501577", + willpowerBlade: ROM_WARLOCK_MAGE_WILLPOWER_BLADE_STATE_TAG, perceptionExtraction: "rom-warlock-state-497960", soulPain: "rom-warlock-state-497964", soulPoisonedFang: "rom-warlock-state-498670", @@ -22,6 +33,64 @@ function appendAuraTag(effect: AbilityEffect, tag: string): AbilityEffect { }; } +function divineAssistanceAura(): AbilityEffect { + const schools = ["holy", "fire", "nature", "frost", "shadow", "arcane"] as const; + return { + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-warlock-divine-assistance-498668", + name: "Divine Assistance", + disposition: "buff", + durationMs: null, + modifiers: [ + ...schools.map((school) => ({ kind: "damage" as const, direction: "dealt" as const, school, operation: "percent" as const, value: 0.16 })), + { kind: "healing", direction: "done", operation: "percent", value: 0.16 }, + ], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 16, + triggerSpellId: 498668, + }; +} + +function healingFortuneAura(durationMs = 20_000, requiresCriticalHit = false): AbilityEffect { + return { + kind: "apply-aura", + recipient: "caster", + requiresLandedHit: true, + ...(requiresCriticalHit ? { requiresCriticalHit: true } : {}), + aura: { + id: "rom-warlock-healing-fortune-498633", + name: "Healing Fortune", + disposition: "buff", + durationMs, + modifiers: [ + { kind: "healing", direction: "done", operation: "percent", value: 0.12 }, + { kind: "stat", stat: "wisdom", operation: "percent", value: 0.12 }, + ], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 12, + triggerSpellId: 498633, + }; +} + +function damageAsFriendlyHeal(effect: Extract): AbilityEffect { + const { + kind: _kind, + school: _school, + weaponHand: _weaponHand, + falloffPerJump: _falloffPerJump, + bonusPerSunderStack: _bonusPerSunderStack, + onDamageResource: _onDamageResource, + ...scaling + } = effect; + return { ...scaling, kind: "heal", recipient: "ability-target" }; +} + /** Source-specific state markers and recipient mapping for the Warlock's paired skills. */ export function overrideRomWarlockEffects( row: RomGeneratedAbilityLike, @@ -29,6 +98,24 @@ export function overrideRomWarlockEffects( ): readonly AbilityEffect[] | null { if (row.classId !== "rom-warlock") return null; + if (isRomWarlockPriestSoulEnlightenment(row)) { + // Current CoA 498649 replaces RuneWaker's maximum-HP/healing aura with + // damage dealt and received-healing modifiers on the exact pair. + return [romWarlockPriestSoulEnlightenmentEffect()]; + } + + if (row.sourceSkillId === 498642) { + // Current CoA Mind Transference spends 75 Rage and grants six Psi; the + // local component's unrelated physical-attack aura is superseded. + return [{ kind: "resource", resource: "psi", amount: 6 }]; + } + + if (row.sourceSkillId === 498633) return []; + if (row.sourceSkillId === 498668) return [divineAssistanceAura()]; + + const soulBrandSting = romWarlockMageSoulBrandStingEffects(row, translated); + if (soulBrandSting) return soulBrandSting; + if (row.sourceSkillId === 498549) { // Defense Net's active component supplies the 5-second magic mitigation; // the source tooltip also describes immunity to Helpless, Stun, Root, and @@ -44,15 +131,14 @@ export function overrideRomWarlockEffects( : effect); } - if (row.sourceSkillId === 498710 || row.sourceSkillId === 498662) { - const targetAbilityName = row.sourceSkillId === 498710 ? "Flaming Heart Strike" : "Rising Tide"; + if (row.sourceSkillId === 498662) { return [ ...translated.filter((effect) => effect.kind !== "cooldown-reset"), - { kind: "cooldown-reset", mode: "reset", abilityName: targetAbilityName }, + { kind: "cooldown-reset", mode: "reset", abilityName: "Rising Tide" }, ]; } - if ([498634, 498648, 498668].includes(row.sourceSkillId ?? 0)) { + if ([498634, 498648].includes(row.sourceSkillId ?? 0)) { // These passive tooltips describe event-gated resets. Keep their cooldown // riders out of the generic cast path until their source events are wired. return translated.filter((effect) => effect.kind !== "cooldown-reset"); @@ -107,6 +193,14 @@ export function overrideRomWarlockEffects( return [...selectedTargetEffects, partyReductionAura]; } + if (row.sourceSkillId === 497955) { + // Mark the locally generated aura by its actual state name. Current CoA + // lists the state-entry skill as 1494096; this does not bridge the IDs. + return translated.map((effect) => effect.kind === "apply-aura" && effect.aura.name === "Willpower Blade" + ? appendAuraTag(effect, ROM_WARLOCK_STATE_TAGS.willpowerBlade) + : effect); + } + const stateTag = row.sourceSkillId === 497960 ? ROM_WARLOCK_STATE_TAGS.perceptionExtraction : row.sourceSkillId === 497964 @@ -148,8 +242,40 @@ export function romWarlockCastEffects( targetTags: readonly string[], learnedPassiveSpellIds: readonly number[] = [], targetHealthPercent = 1, + selectedTargetRelationship: "friendly" | "hostile" = "hostile", ): readonly AbilityEffect[] { - if (ability.source !== "runewaker" || ability.classId !== "rom-warlock") return effects; + if (ability.source !== "runewaker") return effects; + + const spreadingPainEffects = romWarlockPriestSpreadingPainEffects(ability, effects); + if (spreadingPainEffects) return spreadingPainEffects; + + if (ability.classId === "rom-priest" && ability.dbcSpellId === 490256 + && learnedPassiveSpellIds.includes(498643)) { + return [ + ...effects, + { kind: "resource", resource: "psi", amount: 1 }, + ...(learnedPassiveSpellIds.includes(498633) ? [healingFortuneAura(20_000, true)] : []), + ]; + } + + if (ability.classId === "rom-priest" && ability.dbcSpellId === 491147 + && learnedPassiveSpellIds.includes(498648)) { + return [...effects, { kind: "resource", resource: "psi", amount: 1 }]; + } + + const shadowSliceEffects = romWarlockRogueShadowSliceEffects(ability, learnedPassiveSpellIds); + if (shadowSliceEffects) return shadowSliceEffects; + + if (ability.classId !== "rom-warlock") return effects; + + if (ability.dbcSpellId === 497957 && learnedPassiveSpellIds.includes(498633)) { + return [...effects, healingFortuneAura()]; + } + + if (ability.dbcSpellId === 497958 && learnedPassiveSpellIds.includes(498633) + && selectedTargetRelationship === "friendly") { + return effects.map((effect) => effect.kind === "damage" ? damageAsFriendlyHeal(effect) : effect); + } if (ability.dbcSpellId === 498544) { return effects.flatMap((effect): AbilityEffect[] => { diff --git a/src/game/romWarlockPriestSoulEnlightenment.catalog.test.ts b/src/game/romWarlockPriestSoulEnlightenment.catalog.test.ts new file mode 100644 index 00000000..f9e9c63e --- /dev/null +++ b/src/game/romWarlockPriestSoulEnlightenment.catalog.test.ts @@ -0,0 +1,87 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + isRomWarlockPriestSoulEnlightenment, + ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_DESCRIPTION, + ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_ID, +} from "./romWarlockPriestSoulEnlightenment"; + +const ability = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId + === ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_ID + && candidate.classId === "rom-warlock" + && candidate.secondaryClassId === "rom-priest")!; + +describe("current CoA Warlock/Priest Soul Enlightenment catalog", () => { + it("replaces the exact local row with the published +105 cost, range, area, and aura", () => { + expect(ability).toBeDefined(); + expect(ability).toMatchObject({ + name: "Soul Enlightenment", + target: "self", + range: { min: 0, max: 10 }, + radius: 7.5, + targeting: { shape: "circle", radius: 7.5 }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: 0, + cost: { resource: "psi", amount: 2 }, + costs: [{ resource: "psi", amount: 2 }], + passive: false, + description: ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_DESCRIPTION, + }); + expect(ability.effects).toEqual([{ + kind: "apply-aura", + recipient: "caster", + scope: "party", + radius: 7.5, + aura: { + id: "rom-warlock-priest-soul-enlightenment-498649", + name: "Soul Enlightenment", + disposition: "buff", + durationMs: 30_000, + modifiers: [ + { kind: "damage", direction: "dealt", operation: "percent", value: 0.057 }, + { kind: "healing", direction: "taken", operation: "percent", value: 0.171 }, + ], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_ID, + }]); + expect(ability.ranks?.[0]).toMatchObject({ + description: ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_DESCRIPTION, + castMode: "instant", + castTimeMs: 0, + cost: { resource: "psi", amount: 2 }, + costs: [{ resource: "psi", amount: 2 }], + effects: ability.effects, + }); + expect(ability.effects.flatMap((effect) => effect.kind === "apply-aura" + ? effect.aura.modifiers ?? [] + : []).some((modifier) => modifier.kind === "stat" && modifier.stat === "maximum-health")).toBe(false); + expect(ability.description).toContain("Only usable while in the Willpower Construct Caster state"); + }); + + it("keeps the CoA correction scoped to the exact primary/secondary pair and source ID", () => { + expect(isRomWarlockPriestSoulEnlightenment({ + classId: "rom-warlock", + secondaryClassId: "rom-priest", + sourceSkillId: 498649, + })).toBe(true); + expect(isRomWarlockPriestSoulEnlightenment({ + classId: "rom-warlock", + secondaryClassId: "rom-mage", + sourceSkillId: 498649, + })).toBe(false); + expect(isRomWarlockPriestSoulEnlightenment({ + classId: "rom-priest", + secondaryClassId: "rom-warlock", + sourceSkillId: 498649, + })).toBe(false); + expect(isRomWarlockPriestSoulEnlightenment({ + classId: "rom-warlock", + secondaryClassId: "rom-priest", + sourceSkillId: 498648, + })).toBe(false); + }); +}); diff --git a/src/game/romWarlockPriestSoulEnlightenment.integration.test.ts b/src/game/romWarlockPriestSoulEnlightenment.integration.test.ts new file mode 100644 index 00000000..8a5295dd --- /dev/null +++ b/src/game/romWarlockPriestSoulEnlightenment.integration.test.ts @@ -0,0 +1,144 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { resolveDamageValue, resolveHealingValue } from "./combatAuras"; +import { abilityById } from "./abilityCatalog"; +import { useCombatStore } from "./combatStore"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; + +const SOUL_ENLIGHTENMENT_ID = "rom-warlock-rom-priest-elite-40"; +const SOUL_ENLIGHTENMENT_AURA_ID = "rom-warlock-priest-soul-enlightenment-498649"; + +function activeCast(abilityId: string, targetId: string, at: number) { + return { + abilityId, + school: "shadow" as const, + mode: "cast" as const, + startedAt: at, + completesAt: at, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0] as const, + targetId, + }; +} + +describe("CoA Warlock/Priest Soul Enlightenment integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-warlock", + secondaryClassId: "rom-priest", + raceId: "rom-human", + level: 80, + }); + useCombatStore.setState((state) => ({ + resourcePools: { ...state.resourcePools, psi: 6 }, + maxResourcePools: { ...state.maxResourcePools, psi: 6 }, + })); + usePartyStore.getState().initializeParty( + "rom-warlock-priest-soul-enlightenment", 80, useCombatStore.getState().health, "damage", 2, "rom", + ); + }); + + it("casts for the player, pays Psi, and applies the radius-limited modifiers", () => { + const seed = "rom-warlock-priest-soul-enlightenment-player"; + const inside = createConfiguredPartyMember({ + name: "Inside recipient", + classId: "rom-warrior", + raceId: "rom-human", + specialization: "Primary", + role: "damage", + }, 80, 0, seed); + const outside = createConfiguredPartyMember({ + name: "Outside recipient", + classId: "rom-priest", + raceId: "rom-human", + specialization: "Primary", + role: "healer", + }, 80, 1, seed); + usePartyStore.setState({ members: [inside, outside] }); + registerPartyRuntimePosition(inside.id, [7.5, 0, 0]); + registerPartyRuntimePosition(outside.id, [7.51, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + const ability = abilityById(SOUL_ENLIGHTENMENT_ID)!; + expect(useCombatStore.getState().castAbility(ability.id, { now: 1_000 })).toMatchObject({ ok: true }); + expect(useCombatStore.getState().resourcePools.psi).toBe(4); + + const auras = useCombatStore.getState().auras; + const casterAura = auras.find((aura) => aura.sourceId === PLAYER_AGGRO_ID + && aura.targetId === PLAYER_AGGRO_ID && aura.definition.id === SOUL_ENLIGHTENMENT_AURA_ID); + expect(casterAura?.expiresAt).toBe(31_000); + expect(auras.some((aura) => aura.sourceId === PLAYER_AGGRO_ID + && aura.targetId === inside.id && aura.definition.id === SOUL_ENLIGHTENMENT_AURA_ID)).toBe(true); + expect(auras.some((aura) => aura.sourceId === PLAYER_AGGRO_ID + && aura.targetId === outside.id && aura.definition.id === SOUL_ENLIGHTENMENT_AURA_ID)).toBe(false); + expect(resolveDamageValue(1_000, [casterAura!], { + direction: "dealt", school: "physical", attackKind: "melee", + })).toBe(1_057); + expect(resolveHealingValue(1_000, [casterAura!], "taken")).toBe(1_171); + expect(casterAura?.definition.modifiers?.some((modifier) => modifier.kind === "stat" + && modifier.stat === "maximum-health")).toBe(false); + }); + + it("uses the existing companion party-cast route and applies the same area aura", () => { + const seed = "rom-warlock-priest-soul-enlightenment-companion"; + const caster = createConfiguredPartyMember({ + name: "Warlock/Priest Companion", + classId: "rom-warlock", + secondaryClassId: "rom-priest", + raceId: "rom-dwarf", + specialization: "Warlock/Priest", + role: "damage", + }, 80, 0, seed); + const inside = createConfiguredPartyMember({ + name: "Inside companion recipient", + classId: "rom-warrior", + raceId: "rom-human", + specialization: "Primary", + role: "damage", + }, 80, 1, seed); + const outside = createConfiguredPartyMember({ + name: "Outside companion recipient", + classId: "rom-priest", + raceId: "rom-human", + specialization: "Primary", + role: "healer", + }, 80, 2, seed); + const soulEnlightenment = abilityById(SOUL_ENLIGHTENMENT_ID)!; + usePartyStore.setState({ + command: "stop", + members: [{ + ...caster, + resourcePools: { ...caster.resourcePools, psi: 6 }, + activeCast: activeCast(soulEnlightenment.id, caster.id, 1_000), + activeCastTargetId: caster.id, + status: "attacking", + }, inside, outside], + }); + registerPartyRuntimePosition(caster.id, [0, 0, 0]); + registerPartyRuntimePosition(inside.id, [7.5, 0, 0]); + registerPartyRuntimePosition(outside.id, [7.51, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + advanceDungeonPartyCombat(1_000); + + const auras = useCombatStore.getState().auras; + const casterAura = auras.find((aura) => aura.sourceId === caster.id + && aura.targetId === caster.id && aura.definition.id === SOUL_ENLIGHTENMENT_AURA_ID); + expect(casterAura?.expiresAt).toBe(31_000); + expect(auras.some((aura) => aura.sourceId === caster.id + && aura.targetId === inside.id && aura.definition.id === SOUL_ENLIGHTENMENT_AURA_ID)).toBe(true); + expect(auras.some((aura) => aura.sourceId === caster.id + && aura.targetId === outside.id && aura.definition.id === SOUL_ENLIGHTENMENT_AURA_ID)).toBe(false); + expect(resolveDamageValue(1_000, [casterAura!], { + direction: "dealt", school: "shadow", attackKind: "spell", + })).toBe(1_057); + expect(resolveHealingValue(1_000, [casterAura!], "taken")).toBe(1_171); + }); +}); diff --git a/src/game/romWarlockPriestSoulEnlightenment.ts b/src/game/romWarlockPriestSoulEnlightenment.ts new file mode 100644 index 00000000..55e8625f --- /dev/null +++ b/src/game/romWarlockPriestSoulEnlightenment.ts @@ -0,0 +1,43 @@ +import type { AbilityCost, AbilityEffect } from "./abilityCatalog"; + +export const ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_ID = 498649; +export const ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_COST: AbilityCost = Object.freeze({ + resource: "psi", + amount: 2, +}); +export const ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_RADIUS = 7.5; +export const ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_DESCRIPTION = + "Only usable while in the Willpower Construct Caster state. Grants the caster and nearby friendly raid members Soul Enlightenment for 30 seconds, increasing damage dealt by 5.7% and received healing by 17.1%. Costs 2 Psi. Range 100; radius 75."; + +export function isRomWarlockPriestSoulEnlightenment(row: { + readonly classId?: string; + readonly secondaryClassId?: string; + readonly sourceSkillId?: number; +}): boolean { + return row.classId === "rom-warlock" + && row.secondaryClassId === "rom-priest" + && row.sourceSkillId === ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_ID; +} + +export function romWarlockPriestSoulEnlightenmentEffect(): AbilityEffect { + return { + kind: "apply-aura", + recipient: "caster", + scope: "party", + radius: ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_RADIUS, + aura: { + id: "rom-warlock-priest-soul-enlightenment-498649", + name: "Soul Enlightenment", + disposition: "buff", + durationMs: 30_000, + modifiers: [ + { kind: "damage", direction: "dealt", operation: "percent", value: 0.057 }, + { kind: "healing", direction: "taken", operation: "percent", value: 0.171 }, + ], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: ROM_WARLOCK_PRIEST_SOUL_ENLIGHTENMENT_ID, + }; +} diff --git a/src/game/romWarlockPriestSpreadingPain.test.ts b/src/game/romWarlockPriestSpreadingPain.test.ts new file mode 100644 index 00000000..a7413cc0 --- /dev/null +++ b/src/game/romWarlockPriestSpreadingPain.test.ts @@ -0,0 +1,110 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { romEffectsForCast } from "./romCombatMechanics"; +import { + romWarlockPriestSpreadingPainCriticalMultiplier, + romWarlockPriestSpreadingPainEffects, + ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG, + ROM_WARLOCK_PRIEST_SPREADING_PAIN_HEALING_BONUS, + ROM_WARLOCK_PRIEST_SPREADING_PAIN_HEALING_DURATION_MS, + ROM_WARLOCK_PRIEST_SPREADING_PAIN_ID, + ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_ATTACK_BONUS, + ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_BUFF_DURATION_MS, +} from "./romWarlockPriestSpreadingPain"; + +function spreadingPain() { + const result = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_WARLOCK_PRIEST_SPREADING_PAIN_ID); + expect(result).toBeDefined(); + return result!; +} + +describe("RoM Warlock/Priest Spreading Pain source effects", () => { + it("routes the exact pair through the cast pipeline and retains RuneWaker cost/range", () => { + const ability = spreadingPain(); + const castEffects = romEffectsForCast(ability, { + sealStacks: 0, + bleedCount: 0, + charged: false, + mainHandDagger: false, + casterMaxHealth: 1_000, + targetHealthPercent: 1, + }); + const auras = castEffects.filter((effect) => effect.kind === "apply-aura"); + + expect(ability.costs).toEqual([{ resource: "focus", amount: 15 }]); + expect(ability.range).toMatchObject({ min: 0, max: 22.5 }); + expect(ability.description).toContain("10% MP cost plus 15 Focus and range 150"); + expect(castEffects.filter((effect) => effect.kind === "trigger-spell").map((effect) => ( + effect.kind === "trigger-spell" ? effect.spellId : 0 + )).sort((a, b) => a - b)).toEqual([497_959, 497_960, 497_964]); + expect(auras).toHaveLength(3); + expect(auras.map((effect) => effect.kind === "apply-aura" ? effect.aura.durationMs : null)) + .toEqual([30_000, 30_000, 20_000]); + }); + + it("keeps the three RuneWaker child spells and adds only the current CoA caster buffs", () => { + const ability = spreadingPain(); + const originalTriggers = ability.effects.filter((effect) => effect.kind === "trigger-spell"); + expect(originalTriggers).toHaveLength(3); + expect(originalTriggers.map((effect) => effect.kind === "trigger-spell" ? effect.spellId : 0).sort((a, b) => a - b)) + .toEqual([497_959, 497_960, 497_964]); + + const effects = romWarlockPriestSpreadingPainEffects(ability, ability.effects); + expect(effects).toHaveLength(ability.effects.length + 3); + expect(effects?.filter((effect) => effect.kind === "trigger-spell")).toEqual(originalTriggers); + + const auras = effects?.filter((effect) => effect.kind === "apply-aura") ?? []; + expect(auras).toHaveLength(3); + expect(auras).toEqual(expect.arrayContaining([ + expect.objectContaining({ + recipient: "caster", + aura: expect.objectContaining({ + durationMs: ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_BUFF_DURATION_MS, + utilityTags: [ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG], + modifiers: [expect.objectContaining({ + kind: "stat", stat: "critical-damage", operation: "percent", value: 0.25, + })], + }), + }), + expect.objectContaining({ + recipient: "caster", + aura: expect.objectContaining({ + durationMs: ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_BUFF_DURATION_MS, + modifiers: [expect.objectContaining({ + kind: "stat", stat: "magical-attack", operation: "percent", value: ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_ATTACK_BONUS, + })], + }), + }), + expect.objectContaining({ + recipient: "caster", + aura: expect.objectContaining({ + durationMs: ROM_WARLOCK_PRIEST_SPREADING_PAIN_HEALING_DURATION_MS, + modifiers: [expect.objectContaining({ + kind: "healing", direction: "done", operation: "percent", value: ROM_WARLOCK_PRIEST_SPREADING_PAIN_HEALING_BONUS, + })], + }), + }), + ])); + + // Patch 10.6.1 says Spreading Pain grants the healing portion of Healing + // Fortune; its independent Wisdom and Warp Charge clauses are not copied. + expect(auras.some((effect) => effect.kind === "apply-aura" + && effect.aura.modifiers?.some((modifier) => modifier.kind === "stat" && modifier.stat === "wisdom"))).toBe(false); + }); + + it("requires the exact local Warlock/Priest pairing and spell ID", () => { + const ability = spreadingPain(); + expect(romWarlockPriestSpreadingPainEffects({ ...ability, secondaryClassId: "rom-warrior" }, ability.effects)).toBeNull(); + expect(romWarlockPriestSpreadingPainEffects({ ...ability, classId: "rom-priest" }, ability.effects)).toBeNull(); + expect(romWarlockPriestSpreadingPainEffects({ ...ability, name: "Reused ID" }, ability.effects)).toBeNull(); + expect(romWarlockPriestSpreadingPainEffects({ ...ability, dbcSpellId: 499_858 }, ability.effects)).toBeNull(); + expect(romWarlockPriestSpreadingPainEffects({ ...ability, source: "coa-tree" }, ability.effects)).toBeNull(); + }); + + it("adds 25% to magical spell critical bonus damage, not crit chance or ordinary hits", () => { + expect(romWarlockPriestSpreadingPainCriticalMultiplier(2, true, true)).toBe(2.25); + expect(romWarlockPriestSpreadingPainCriticalMultiplier(1.5, true, true)).toBe(1.625); + expect(romWarlockPriestSpreadingPainCriticalMultiplier(2, false, true)).toBe(2); + expect(romWarlockPriestSpreadingPainCriticalMultiplier(2, true, false)).toBe(2); + }); +}); diff --git a/src/game/romWarlockPriestSpreadingPain.ts b/src/game/romWarlockPriestSpreadingPain.ts new file mode 100644 index 00000000..35861efc --- /dev/null +++ b/src/game/romWarlockPriestSpreadingPain.ts @@ -0,0 +1,121 @@ +import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; + +export const ROM_WARLOCK_PRIEST_SPREADING_PAIN_ID = 499856; +export const ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG = "rom-warlock-priest-spreading-pain-magical-crit"; +export const ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_DAMAGE_BONUS = 0.25; +export const ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_ATTACK_BONUS = 0.18; +export const ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_BUFF_DURATION_MS = 30_000; +export const ROM_WARLOCK_PRIEST_SPREADING_PAIN_HEALING_BONUS = 0.12; +export const ROM_WARLOCK_PRIEST_SPREADING_PAIN_HEALING_DURATION_MS = 20_000; + +const SPREADING_PAIN_BUFFS: readonly AbilityEffect[] = [ + { + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-warlock-priest-spreading-pain-magical-critical-bonus", + name: "Spreading Pain: Magical Critical Bonus", + disposition: "buff", + durationMs: ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_BUFF_DURATION_MS, + maxStacks: 1, + stackBehavior: "refresh", + utilityTags: [ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_TAG], + // The combat hook consumes this as a bonus to the critical-damage + // portion, not as critical chance or a multiplier to the whole hit. + modifiers: [{ + kind: "stat", + stat: "critical-damage", + operation: "percent", + value: ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_DAMAGE_BONUS, + }], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 0, + }, + { + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-warlock-priest-spreading-pain-magical-attack", + name: "Spreading Pain: Magical Attack Power", + disposition: "buff", + durationMs: ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_BUFF_DURATION_MS, + maxStacks: 1, + stackBehavior: "refresh", + modifiers: [{ + kind: "stat", + stat: "magical-attack", + operation: "percent", + value: ROM_WARLOCK_PRIEST_SPREADING_PAIN_MAGIC_ATTACK_BONUS, + }], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 0, + }, + { + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-warlock-priest-spreading-pain-healing-fortune", + name: "Healing Fortune: Healing Power", + disposition: "buff", + durationMs: ROM_WARLOCK_PRIEST_SPREADING_PAIN_HEALING_DURATION_MS, + maxStacks: 1, + stackBehavior: "refresh", + modifiers: [{ + kind: "healing", + direction: "done", + operation: "percent", + value: ROM_WARLOCK_PRIEST_SPREADING_PAIN_HEALING_BONUS, + }], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: 0, + }, +]; + +/** + * Current CoA Spreading Pain (499856) is the exact Warlock/Priest skill ID. + * Keep RuneWaker's three linked child casts, then add CoA's quantified caster + * buffs. CoA's 10.6.1 patch specifies that Spreading Pain grants only Healing + * Fortune's healing-increase portion, not its separate Wisdom or Warp Charge + * changes. + */ +export function romWarlockPriestSpreadingPainEffects( + ability: Pick, + translatedEffects: readonly AbilityEffect[], +): readonly AbilityEffect[] | null { + if (ability.source !== "runewaker" + || ability.classId !== "rom-warlock" + || ability.secondaryClassId !== "rom-priest" + || ability.name !== "Spreading Pain" + || ability.dbcSpellId !== ROM_WARLOCK_PRIEST_SPREADING_PAIN_ID) { + return null; + } + + return [...translatedEffects, ...SPREADING_PAIN_BUFFS]; +} + +/** + * Apply CoA's +25% magical critical bonus to the bonus portion of spell crits. + * This follows the simulator's existing critical-bonus convention, which + * scales (critical multiplier - 1) while leaving the ordinary hit unchanged. + */ +export function romWarlockPriestSpreadingPainCriticalMultiplier( + baseCriticalMultiplier: number, + magicalSpellAttack: boolean, + auraActive: boolean, +): number { + if (!auraActive || !magicalSpellAttack || !Number.isFinite(baseCriticalMultiplier)) { + return baseCriticalMultiplier; + } + + const criticalBonus = Math.max(0, baseCriticalMultiplier - 1); + return 1 + criticalBonus * (1 + ROM_WARLOCK_PRIEST_SPREADING_PAIN_CRIT_DAMAGE_BONUS); +} diff --git a/src/game/romWarlockPsychicWarriorRuntime.test.ts b/src/game/romWarlockPsychicWarriorRuntime.test.ts new file mode 100644 index 00000000..429313aa --- /dev/null +++ b/src/game/romWarlockPsychicWarriorRuntime.test.ts @@ -0,0 +1,90 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + combatDamageProfileMatchesSchool, + ROM_PHYSICAL_DARK_DAMAGE_PROFILE, +} from "./combatDamageProfile"; +import { + describeRomPsychicWarriorWeaponRider, + ROM_PSYCHIC_WARRIOR_PASSIVE_ID, +} from "./romWarlockPsychicWarriorRuntime"; + +function ability(spellId: number) { + const result = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId === spellId); + expect(result, `RoM ability ${spellId}`).toBeDefined(); + return result!; +} + +describe("RoM Psychic Warrior source rider", () => { + const exactPairCaster = { + primaryClassId: "rom-warlock", + secondaryClassId: "rom-warrior", + learnedPassiveSpellIds: [ROM_PSYCHIC_WARRIOR_PASSIVE_ID], + isMagicalSpell: true, + } as const; + + it("resolves the pair passive as current CoA Psychic Warrior without retaining the obsolete local child tooltip", () => { + const passive = ability(ROM_PSYCHIC_WARRIOR_PASSIVE_ID); + expect(passive).toMatchObject({ + classId: "rom-warlock", + secondaryClassId: "rom-warrior", + name: "Psychic Warrior", + passive: true, + effects: [], + }); + expect(passive.description).toContain("187.5% main-hand weapon DPS"); + expect(passive.description).toContain("1,050% main-hand weapon DPS"); + expect(passive.description).toContain("Physical Dark"); + expect(passive.description).not.toContain("499869"); + }); + + it("selects the 187.5% hammer for area damage and 1,050% sword for single-target damage", () => { + expect(describeRomPsychicWarriorWeaponRider(ability(497959), exactPairCaster)).toEqual({ + damageProfile: ROM_PHYSICAL_DARK_DAMAGE_PROFILE, + targetMode: "area", + weaponHand: "main-hand", + weaponDpsCoefficient: 1.875, + }); + expect(describeRomPsychicWarriorWeaponRider(ability(497957), exactPairCaster)).toEqual({ + damageProfile: ROM_PHYSICAL_DARK_DAMAGE_PROFILE, + targetMode: "single-target", + weaponHand: "main-hand", + weaponDpsCoefficient: 10.5, + }); + }); + + it("retains Physical and Dark tags together without encoding a mitigation proxy or order", () => { + expect(ROM_PHYSICAL_DARK_DAMAGE_PROFILE.schools).toEqual(["physical", "shadow"]); + expect(combatDamageProfileMatchesSchool(ROM_PHYSICAL_DARK_DAMAGE_PROFILE, "physical")).toBe(true); + expect(combatDamageProfileMatchesSchool(ROM_PHYSICAL_DARK_DAMAGE_PROFILE, "shadow")).toBe(true); + expect(combatDamageProfileMatchesSchool(ROM_PHYSICAL_DARK_DAMAGE_PROFILE, "fire")).toBe(false); + expect(combatDamageProfileMatchesSchool(ROM_PHYSICAL_DARK_DAMAGE_PROFILE, undefined)).toBe(true); + // CoA specifies Physical Dark, but not whether armor and Dark resistance + // apply or their order. This descriptor retains both tags without choosing + // a mitigation formula; source/product direction is still required. + }); + + it("requires the exact Warlock/Warrior pair, learned passive, and a damaging Warlock spell", () => { + expect(describeRomPsychicWarriorWeaponRider(ability(497957), { + ...exactPairCaster, + secondaryClassId: "rom-priest", + })).toBeNull(); + expect(describeRomPsychicWarriorWeaponRider(ability(497957), { + ...exactPairCaster, + primaryClassId: "rom-mage", + })).toBeNull(); + expect(describeRomPsychicWarriorWeaponRider(ability(497957), { + ...exactPairCaster, + learnedPassiveSpellIds: [], + })).toBeNull(); + expect(describeRomPsychicWarriorWeaponRider(ability(497957), { + ...exactPairCaster, + isMagicalSpell: false, + })).toBeNull(); + expect(describeRomPsychicWarriorWeaponRider(ability(497955), exactPairCaster)).toBeNull(); + + const warriorSpell = ROM_ALL_ABILITIES.find((candidate) => candidate.classId === "rom-warrior" && candidate.effects.some((effect) => effect.kind === "damage")); + expect(warriorSpell).toBeDefined(); + expect(describeRomPsychicWarriorWeaponRider(warriorSpell!, exactPairCaster)).toBeNull(); + }); +}); diff --git a/src/game/romWarlockPsychicWarriorRuntime.ts b/src/game/romWarlockPsychicWarriorRuntime.ts new file mode 100644 index 00000000..52465874 --- /dev/null +++ b/src/game/romWarlockPsychicWarriorRuntime.ts @@ -0,0 +1,57 @@ +import type { AbilityDefinition } from "./abilityCatalog"; +import { targetingRulesForAbility } from "./abilityRules"; +import { ROM_PHYSICAL_DARK_DAMAGE_PROFILE } from "./combatDamageProfile"; +import type { CombatDamageProfile } from "./combatDamageProfile"; + +export const ROM_PSYCHIC_WARRIOR_PASSIVE_ID = 499868; +export const ROM_PSYCHIC_WARRIOR_PRIMARY_CLASS_ID = "rom-warlock"; +export const ROM_PSYCHIC_WARRIOR_SECONDARY_CLASS_ID = "rom-warrior"; + +export interface RomPsychicWarriorCasterContext { + readonly primaryClassId: AbilityDefinition["classId"]; + readonly secondaryClassId: AbilityDefinition["classId"] | null; + readonly learnedPassiveSpellIds: readonly number[]; + /** True only when the triggering action is a CoA-style magical spell. */ + readonly isMagicalSpell: boolean; +} + +export interface RomPsychicWarriorWeaponRider { + readonly damageProfile: CombatDamageProfile; + readonly targetMode: "area" | "single-target"; + readonly weaponHand: "main-hand"; + /** Coefficient passed to the combat engine's main-hand weapon-DPS scaling. */ + readonly weaponDpsCoefficient: number; +} + +/** + * Resolve CoA Psychic Warrior's quantified weapon choice for a damaging + * Warlock spell. The combat model has no integrated Physical Dark composite + * damage type yet, so this descriptor preserves both tags and must not be + * collapsed to one DamageSchool by a caller. + */ +export function describeRomPsychicWarriorWeaponRider( + ability: AbilityDefinition, + caster: RomPsychicWarriorCasterContext, +): RomPsychicWarriorWeaponRider | null { + if (caster.primaryClassId !== ROM_PSYCHIC_WARRIOR_PRIMARY_CLASS_ID + || caster.secondaryClassId !== ROM_PSYCHIC_WARRIOR_SECONDARY_CLASS_ID + || !caster.learnedPassiveSpellIds.includes(ROM_PSYCHIC_WARRIOR_PASSIVE_ID) + || !caster.isMagicalSpell + || ability.source !== "runewaker" + || ability.classId !== "rom-warlock" + || ability.passive + || !ability.effects.some((effect) => effect.kind === "damage")) { + return null; + } + + const targeting = targetingRulesForAbility(ability); + const isAreaDamage = targeting.shape !== "unit" + || (targeting.maximumTargets ?? 0) > 1 + || (targeting.radius ?? 0) > 0; + return { + damageProfile: ROM_PHYSICAL_DARK_DAMAGE_PROFILE, + targetMode: isAreaDamage ? "area" : "single-target", + weaponHand: "main-hand", + weaponDpsCoefficient: isAreaDamage ? 1.875 : 10.5, + }; +} diff --git a/src/game/romWarlockRogueShadowSlice.test.ts b/src/game/romWarlockRogueShadowSlice.test.ts new file mode 100644 index 00000000..63f600b3 --- /dev/null +++ b/src/game/romWarlockRogueShadowSlice.test.ts @@ -0,0 +1,125 @@ +import { describe, expect, it } from "vitest"; +import type { AbilityDefinition } from "./abilityCatalog"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { romEffectsForCast } from "./romCombatMechanics"; +import { + ROM_WARLOCK_ROGUE_SHADOW_SLICE, + romWarlockRogueShadowSliceEffects, +} from "./romWarlockRogueShadowSlice"; + +function shadowStep(overrides: Partial = {}): AbilityDefinition { + return { + id: "rom-rogue-general-7", + classId: "rom-rogue", + dbcSpellId: ROM_WARLOCK_ROGUE_SHADOW_SLICE.triggerSpellId, + name: "Shadow Step", + unlockLevel: 28, + icon: "", + sigil: "", + description: "Instantly move behind the target.", + target: "hostile", + range: { min: 0, max: 10 }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: 20_000, + gcdMs: 1_000, + cost: { resource: "energy", amount: 20 }, + effects: [], + source: "runewaker", + ...overrides, + }; +} + +const emptyCastContext = { + sealStacks: 0, + bleedCount: 0, + charged: false, + mainHandDagger: false, + casterMaxHealth: 1_000, + targetHealthPercent: 1, +} as const; + +function catalogShadowStep(): AbilityDefinition { + const ability = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId === 490_344); + expect(ability).toBeDefined(); + return ability!; +} + +describe("Warlock/Rogue Shadow Slice source helper", () => { + it("adds the exact CoA strike, stun, buffs, and Psi rider only with the matching passive", () => { + const effects = romWarlockRogueShadowSliceEffects( + shadowStep(), + [ROM_WARLOCK_ROGUE_SHADOW_SLICE.passiveSpellId], + ); + + expect(effects).toEqual([ + { + kind: "damage", + coefficient: 0, + basePoints: 4_400, + school: "shadow", + }, + { kind: "status", status: "stun", durationMs: 1_000 }, + expect.objectContaining({ + kind: "apply-aura", + recipient: "caster", + aura: expect.objectContaining({ + id: "rom-warlock-rogue-shadow-slice-498678", + durationMs: 30_000, + modifiers: expect.arrayContaining([ + expect.objectContaining({ kind: "damage", school: "shadow", value: 0.3 }), + expect.objectContaining({ kind: "stat", stat: "movement-speed", value: 0.1 }), + ]), + }), + }), + { kind: "resource", resource: "psi", amount: 3 }, + ]); + }); + + it("does not map by name, passive ID alone, or another spell/class identity", () => { + const passive = [ROM_WARLOCK_ROGUE_SHADOW_SLICE.passiveSpellId]; + + expect(romWarlockRogueShadowSliceEffects(shadowStep(), [])).toBeNull(); + expect(romWarlockRogueShadowSliceEffects(shadowStep({ dbcSpellId: 490345 }), passive)).toBeNull(); + expect(romWarlockRogueShadowSliceEffects(shadowStep({ classId: "rom-warlock" }), passive)).toBeNull(); + expect(romWarlockRogueShadowSliceEffects(shadowStep({ secondaryClassId: "rom-priest" }), passive)).toBeNull(); + expect(romWarlockRogueShadowSliceEffects(shadowStep({ name: "Renamed ability" }), passive)).toBeNull(); + expect(romWarlockRogueShadowSliceEffects(shadowStep({ source: "coa-tree" }), passive)).toBeNull(); + }); + + it("integrates the Warlock/Rogue passive while preserving ordinary Shadow Step without it", () => { + const ability = catalogShadowStep(); + const passive = ROM_ALL_ABILITIES.find((candidate) => candidate.dbcSpellId === 498_678); + expect(passive).toMatchObject({ + classId: "rom-warlock", + secondaryClassId: "rom-rogue", + name: "Shadow Slice", + }); + expect(passive?.description).toContain("4,400 Dark damage"); + expect(ability.description).toContain("In the Warlock/Rogue build with Shadow Slice (498678)"); + expect(ability.description).toContain("cannot model the behind-target positioning"); + expect(ability.costs).toEqual([{ resource: "energy", amount: 20 }]); + expect(ability.cooldownMs).toBe(20_000); + + const ordinaryEffects = romEffectsForCast(ability, emptyCastContext); + expect(ordinaryEffects).toEqual(ability.effects); + expect(ordinaryEffects).toContainEqual(expect.objectContaining({ kind: "movement", movement: "teleport" })); + + const shadowSliceEffects = romEffectsForCast(ability, { + ...emptyCastContext, + learnedPassiveSpellIds: [ROM_WARLOCK_ROGUE_SHADOW_SLICE.passiveSpellId], + }); + expect(shadowSliceEffects).toEqual(romWarlockRogueShadowSliceEffects( + ability, + [ROM_WARLOCK_ROGUE_SHADOW_SLICE.passiveSpellId], + )); + expect(shadowSliceEffects?.some((effect) => effect.kind === "movement")).toBe(false); + }); + + it("records that Shadow Slice replaces the local teleport instead of adding another movement effect", () => { + expect(ROM_WARLOCK_ROGUE_SHADOW_SLICE.replacesShadowStepTeleport).toBe(true); + expect(romWarlockRogueShadowSliceEffects(shadowStep(), [498678])?.some((effect) => ( + effect.kind === "movement" + ))).toBe(false); + }); +}); diff --git a/src/game/romWarlockRogueShadowSlice.ts b/src/game/romWarlockRogueShadowSlice.ts new file mode 100644 index 00000000..3492dea5 --- /dev/null +++ b/src/game/romWarlockRogueShadowSlice.ts @@ -0,0 +1,80 @@ +import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; + +export const ROM_WARLOCK_ROGUE_SHADOW_SLICE = Object.freeze({ + passiveSpellId: 498678, + triggerSpellId: 490344, + name: "Shadow Slice", + damage: 4_400, + stunMs: 1_000, + darkDamageBonus: 0.3, + movementSpeedBonus: 0.1, + buffDurationMs: 30_000, + psiGain: 3, + replacesShadowStepTeleport: true, +} as const); + +/** + * Current CoA's Shadow Slice is the explicit rework of RuneWaker Soul Raid + * (498678), which modifies Rogue Shadow Step (490344). The CoA skill list and + * patches 10.4.0.4001/10.4.1 source the strike, stun, buffs, and 3 Psi value: + * https://chroniclesofarcadia.com/en/wiki/skills/list/9-3 + * https://chroniclesofarcadia.com/en/patch/10-4-0-4001 + * https://chroniclesofarcadia.com/en/patch/10-4-1 + * Its exact strike and self-buff are returned only for that source spell and + * when the pair-specific passive is learned. Runtime integration replaces + * Shadow Step's old teleport while retaining its sourced cost and cooldown. + * The simulator cannot resolve Shadow Slice's behind-target positioning. + */ +export function romWarlockRogueShadowSliceEffects( + ability: AbilityDefinition, + learnedPassiveSpellIds: readonly number[], +): readonly AbilityEffect[] | null { + if (ability.source !== "runewaker" + || ability.classId !== "rom-rogue" + || ability.dbcSpellId !== ROM_WARLOCK_ROGUE_SHADOW_SLICE.triggerSpellId + || ability.name !== "Shadow Step" + || (ability.secondaryClassId !== undefined && ability.secondaryClassId !== "rom-warlock") + || !learnedPassiveSpellIds.includes(ROM_WARLOCK_ROGUE_SHADOW_SLICE.passiveSpellId)) { + return null; + } + + return [ + { + kind: "damage", + coefficient: 0, + basePoints: ROM_WARLOCK_ROGUE_SHADOW_SLICE.damage, + school: "shadow", + }, + { kind: "status", status: "stun", durationMs: ROM_WARLOCK_ROGUE_SHADOW_SLICE.stunMs }, + { + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-warlock-rogue-shadow-slice-498678", + name: ROM_WARLOCK_ROGUE_SHADOW_SLICE.name, + disposition: "buff", + durationMs: ROM_WARLOCK_ROGUE_SHADOW_SLICE.buffDurationMs, + modifiers: [ + { + kind: "damage", + direction: "dealt", + school: "shadow", + operation: "percent", + value: ROM_WARLOCK_ROGUE_SHADOW_SLICE.darkDamageBonus, + }, + { + kind: "stat", + stat: "movement-speed", + operation: "percent", + value: ROM_WARLOCK_ROGUE_SHADOW_SLICE.movementSpeedBonus, + }, + ], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: ROM_WARLOCK_ROGUE_SHADOW_SLICE.triggerSpellId, + }, + { kind: "resource", resource: "psi", amount: ROM_WARLOCK_ROGUE_SHADOW_SLICE.psiGain }, + ]; +} diff --git a/src/game/romWarlockRuntime.test.ts b/src/game/romWarlockRuntime.test.ts index 0cbe3f5f..917ed7e1 100644 --- a/src/game/romWarlockRuntime.test.ts +++ b/src/game/romWarlockRuntime.test.ts @@ -1,6 +1,6 @@ import { beforeAll, beforeEach, describe, expect, it } from "vitest"; import type { AbilityEffect } from "./abilityCatalog"; -import { abilitiesForCharacter, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { abilitiesForCharacter, learnedAbilityForBuild, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; import { cooldownResetCandidates } from "./cooldownReset"; import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; import { @@ -194,18 +194,179 @@ describe("RuneWaker Warlock runtime", () => { ))).toBe(false); }); - it("converts the RoM Warlock/Warrior Rage pool to psi at 35:1", () => { + it("converts a fixed 75 Rage cost into six Psi for Mind Transference", () => { prepareWarlock("rom-warrior"); useCombatStore.setState((state) => ({ - resourcePools: { ...state.resourcePools, rage: 70, psi: 1 }, + resourcePools: { ...state.resourcePools, rage: 100, psi: 1 }, })); const mindTransference = ability(498642); - expect(mindTransference.costs).toEqual([]); + expect(mindTransference.costs).toEqual([{ resource: "rage", amount: 75, percentage: false }]); + expect(mindTransference.cooldownMs).toBe(1_000); + expect(mindTransference.effects).toEqual([{ kind: "resource", resource: "psi", amount: 6 }]); expect(useCombatStore.getState().castAbility(mindTransference.id, { now: 1_000 }).ok).toBe(true); - expect(useCombatStore.getState().resourcePools.rage).toBe(0); - expect(useCombatStore.getState().resourcePools.psi).toBe(3); + expect(useCombatStore.getState().resourcePools.rage).toBe(25); + expect(useCombatStore.getState().resourcePools.psi).toBe(6); + }); + + it("uses current Warlock/Priest passive effects and pair upgrades", () => { + const context = { + sealStacks: 0, + bleedCount: 0, + charged: false, + mainHandDagger: false, + casterMaxHealth: 10_000, + targetHealthPercent: 1, + learnedPassiveSpellIds: [498633, 498643, 498648, 498668], + } as const; + const divineAssistance = ability(498668); + expect(divineAssistance.description).toContain("magical damage and healing by 16%"); + expect(divineAssistance.effects).toContainEqual(expect.objectContaining({ + kind: "apply-aura", + aura: expect.objectContaining({ + durationMs: null, + modifiers: expect.arrayContaining([ + expect.objectContaining({ kind: "damage", direction: "dealt", school: "shadow", value: 0.16 }), + expect.objectContaining({ kind: "healing", direction: "done", value: 0.16 }), + ]), + }), + })); + + const healingFortune = romEffectsForCast(ability(497957), context) + .find((effect) => effect.kind === "apply-aura"); + expect(healingFortune).toMatchObject({ + kind: "apply-aura", + recipient: "caster", + requiresLandedHit: true, + aura: { + durationMs: 20_000, + modifiers: expect.arrayContaining([ + expect.objectContaining({ kind: "healing", direction: "done", value: 0.12 }), + expect.objectContaining({ kind: "stat", stat: "wisdom", value: 0.12 }), + ]), + }, + }); + + const pairAbilities = abilitiesForCharacter("rom-warlock", "rom-priest"); + const risingTide = pairAbilities.find((candidate) => candidate.dbcSpellId === 490256)!; + expect(learnedAbilityForBuild(risingTide, 29, {})).toMatchObject({ castTimeMs: 2_000, cooldownMs: 0 }); + const upgradedRisingTide = learnedAbilityForBuild(risingTide, 30, {})!; + expect(upgradedRisingTide).toMatchObject({ castMode: "instant", castTimeMs: 0, cooldownMs: 5_000 }); + expect(upgradedRisingTide.description).toContain("cannot redirect an ally-targeted cast"); + expect(romEffectsForCast(upgradedRisingTide, context)).toContainEqual({ + kind: "resource", resource: "psi", amount: 1, + }); + expect(romEffectsForCast(upgradedRisingTide, context).find((effect) => ( + effect.kind === "apply-aura" && effect.requiresCriticalHit + ))).toBeDefined(); + + const warpCharge = pairAbilities.find((candidate) => candidate.dbcSpellId === 497958)!; + expect(learnedAbilityForBuild(warpCharge, 14, {})?.target).toBe("hostile"); + const upgradedWarpCharge = learnedAbilityForBuild(warpCharge, 15, {})!; + expect(upgradedWarpCharge.target).toBe("any"); + const friendlyEffects = romEffectsForCast(upgradedWarpCharge, { + ...context, + selectedTargetRelationship: "friendly", + }); + expect(friendlyEffects.some((effect) => effect.kind === "heal")).toBe(true); + expect(friendlyEffects.some((effect) => effect.kind === "damage")).toBe(false); + expect(romEffectsForCast(upgradedWarpCharge, { + ...context, + selectedTargetRelationship: "hostile", + }).some((effect) => effect.kind === "damage")).toBe(true); + + expect(romEffectsForCast(ability(491147), context)).toContainEqual({ + kind: "resource", resource: "psi", amount: 1, + }); + expect(ability(498633).description).toContain("12% Wisdom for 20 seconds"); + expect(ability(498648).description).toContain("Ring of Comfort's reset chance is not specified"); + }); + + it("applies Healing Fortune and Divine Assistance for the player and generated companion", () => { + prepareWarlock("rom-priest"); + expect(useCombatStore.getState().auras.some((aura) => aura.sourceId === PLAYER_AURA_ENTITY_ID + && aura.targetId === PLAYER_AURA_ENTITY_ID + && aura.definition.id === "rom-warlock-divine-assistance-498668")).toBe(true); + registerTarget(); + + const psychicArrows = ability(497957); + expect(useCombatStore.getState().castAbility(psychicArrows.id, { + targetActorId: TARGET_ID, + now: 1_000, + }).ok).toBe(true); + finishCast(1_000); + expect(useCombatStore.getState().auras.some((aura) => aura.sourceId === PLAYER_AURA_ENTITY_ID + && aura.targetId === PLAYER_AURA_ENTITY_ID + && aura.definition.id === "rom-warlock-healing-fortune-498633")).toBe(true); + + useCombatStore.getState().initializeCharacter({ classId: "rom-priest", raceId: "rom-dwarf", level: 80 }); + usePartyStore.getState().initializeParty("rom-warlock-priest-companion", 80, + useCombatStore.getState().health, "damage", 2, "rom"); + const companion = createConfiguredPartyMember({ + name: "Warlock/Priest Companion", + classId: "rom-warlock", + secondaryClassId: "rom-priest", + raceId: "rom-dwarf", + specialization: "Warlock", + role: "damage", + }, 80, 0, "rom-warlock-priest-companion"); + const pairAbilities = abilitiesForCharacter("rom-warlock", "rom-priest"); + usePartyStore.setState({ + command: "attack", + members: [{ + ...companion, + cooldowns: Object.fromEntries(pairAbilities + .filter((candidate) => candidate.dbcSpellId !== 497957) + .map((candidate) => [candidate.id, 100_000])), + resourcePools: { ...companion.resourcePools, focus: 100 }, + resource: 100, + }], + }); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(companion.id, [0, 0, 0]); + registerTarget(); + useCombatStore.getState().damageMob(TARGET_ID, 1, 900); + updatePartyRuntimeTargetVisibility(companion.id, TARGET_ID, true); + + advanceDungeonPartyCombat(1_000); + advanceDungeonPartyCombat(3_100); + + expect(useCombatStore.getState().auras.some((aura) => aura.sourceId === companion.id + && aura.targetId === companion.id + && aura.definition.id === "rom-warlock-divine-assistance-498668")).toBe(true); + expect(useCombatStore.getState().auras.some((aura) => aura.sourceId === companion.id + && aura.targetId === companion.id + && aura.definition.id === "rom-warlock-healing-fortune-498633")).toBe(true); + }); + + it("turns friendly Warp Charge into a heal for a Warlock/Priest player", () => { + prepareWarlock("rom-priest"); + useCombatStore.setState((state) => ({ + health: Math.max(1, state.maxHealth - 100), + })); + usePartyStore.getState().selectSelf(); + const warpCharge = abilitiesForCharacter("rom-warlock", "rom-priest") + .find((candidate) => candidate.dbcSpellId === 497958)!; + const result = useCombatStore.getState().castAbility(warpCharge.id, { + now: 1_000, + }); + expect(result.ok).toBe(true); + expect(useCombatStore.getState().health).toBeGreaterThan(useCombatStore.getState().maxHealth - 100); + }); + + it("applies the pair upgrade when the player casts Rising Tide", () => { + prepareWarlock("rom-priest"); + registerTarget(); + const risingTide = abilitiesForCharacter("rom-warlock", "rom-priest") + .find((candidate) => candidate.dbcSpellId === 490256)!; + expect(useCombatStore.getState().castAbility(risingTide.id, { + targetActorId: TARGET_ID, + now: 1_000, + }).ok).toBe(true); + expect(useCombatStore.getState().activeCast).toBeNull(); + expect(useCombatStore.getState().resourcePools.psi).toBe(1); + expect(useCombatStore.getState().cooldowns[risingTide.id]).toBe(6_000); }); it("consumes all Rage for Heart Fence and extends its duration by one second per 20 Rage", () => { diff --git a/src/game/romWarlockWarriorEnragedCoa.integration.test.ts b/src/game/romWarlockWarriorEnragedCoa.integration.test.ts new file mode 100644 index 00000000..12b12c1a --- /dev/null +++ b/src/game/romWarlockWarriorEnragedCoa.integration.test.ts @@ -0,0 +1,125 @@ +import { beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { abilitiesForCharacter, learnedAbilityForBuild, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition, updatePartyRuntimeTargetVisibility } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { useCombatStore } from "./combatStore"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { ROM_COA_WARLOCK_WARRIOR_ENRAGED } from "./romWarlockWarriorEnragedCoaMechanics"; + +const ABILITY_ID = "rom-warlock-rom-warrior-general-coa-499871"; +const TARGET_ID = "rom-warlock-warrior-enraged-target"; + +function enragedAbility() { + return abilitiesForCharacter("rom-warlock", "rom-warrior").find((entry) => entry.id === ABILITY_ID)!; +} + +function setPlayerPools(pools: { rage: number; focus: number; psi: number }) { + useCombatStore.setState((state) => ({ + resource: pools.focus, + maxResource: 100, + resourcePools: { ...state.resourcePools, ...pools }, + maxResourcePools: { ...state.maxResourcePools, rage: 100, focus: 100, psi: 6 }, + })); +} + +function prepareTarget() { + useCombatStore.getState().registerMob(TARGET_ID, { name: "Enraged Test Target", maxHealth: 100_000 }); + setMobPosition(TARGET_ID, [5, 0, 0]); +} + +describe("current CoA Warlock/Warrior Enraged runtime", () => { + beforeAll(async () => { + await preloadAbilityCatalogsForClasses(["rom-warlock"]); + }); + + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.setState({ playerPosition: [0, 0, 0] }); + }); + + it("is learnable only at level 60 for Warlock/Warrior and does not replace the other Enraged row", () => { + const ability = enragedAbility(); + expect(learnedAbilityForBuild(ability, 59, {})).toBeNull(); + expect(learnedAbilityForBuild(ability, 60, {})).toMatchObject({ dbcSpellId: 499_871 }); + expect(abilitiesForCharacter("rom-warlock", "rom-priest").some((candidate) => ( + candidate.dbcSpellId === ROM_COA_WARLOCK_WARRIOR_ENRAGED.spellId + ))).toBe(false); + expect(abilitiesForCharacter("rom-warrior", "rom-warlock").some((candidate) => ( + candidate.dbcSpellId === ROM_COA_WARLOCK_WARRIOR_ENRAGED.spellId + ))).toBe(false); + expect(abilitiesForCharacter("rom-warrior", undefined).find((candidate) => ( + candidate.dbcSpellId === ROM_COA_WARLOCK_WARRIOR_ENRAGED.localWarriorGeneralSpellId + ))).toBeDefined(); + }); + + it("restores all three player resources, clamps to their caps, and honors the 40-second cooldown", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-warlock", + secondaryClassId: "rom-warrior", + raceId: "rom-dwarf", + level: 80, + }); + setPlayerPools({ rage: 40, focus: 50, psi: 5 }); + const ability = enragedAbility(); + + expect(useCombatStore.getState().castAbility(ability.id, { now: 1_000 })).toMatchObject({ ok: true }); + expect(useCombatStore.getState().resourcePools).toMatchObject({ rage: 100, focus: 85, psi: 6 }); + expect(useCombatStore.getState().cooldowns[ability.id]).toBe(41_000); + + setPlayerPools({ rage: 50, focus: 80, psi: 5 }); + expect(useCombatStore.getState().castAbility(ability.id, { now: 3_000 })).toMatchObject({ + ok: false, + reason: "cooldown", + }); + expect(useCombatStore.getState().castAbility(ability.id, { now: 41_000 })).toMatchObject({ ok: true }); + expect(useCombatStore.getState().resourcePools).toMatchObject({ rage: 100, focus: 100, psi: 6 }); + }); + + it("restores and caps companion Rage, Focus, and Psi through the shared resource effects", () => { + useCombatStore.getState().initializeCharacter({ classId: "rom-priest", raceId: "rom-dwarf", level: 80 }); + usePartyStore.getState().initializeParty("rom-warlock-warrior-enraged-party", 80, + useCombatStore.getState().health, "damage", 2, "rom"); + const member = createConfiguredPartyMember({ + name: "Enraged Companion", + classId: "rom-warlock", + secondaryClassId: "rom-warrior", + raceId: "rom-dwarf", + specialization: "Warlock", + role: "damage", + }, 80, 0, "rom-warlock-warrior-enraged-party"); + const ability = enragedAbility(); + const pairAbilities = abilitiesForCharacter("rom-warlock", "rom-warrior"); + const maximumCooldowns = Object.fromEntries(pairAbilities + .filter((candidate) => candidate.id !== ability.id) + .map((candidate) => [candidate.id, 100_000])); + usePartyStore.setState({ + command: "attack", + members: [{ + ...member, + cooldowns: maximumCooldowns, + resourcePools: { ...member.resourcePools, focus: 20, rage: 40, psi: 5 }, + resource: 20, + maxResource: 100, + }], + }); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + prepareTarget(); + useCombatStore.getState().damageMob(TARGET_ID, 100, 900); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + + advanceDungeonPartyCombat(1_000); + advanceDungeonPartyCombat(3_100); + + const result = usePartyStore.getState().members.find((candidate) => candidate.id === member.id); + expect(result?.cooldowns[ability.id]).toBe(41_000); + expect(result?.resourcePools.rage).toBe(100); + expect(result?.resourcePools.focus).toBeGreaterThanOrEqual(55); + expect(result?.resourcePools.focus).toBeLessThanOrEqual(100); + expect(result?.resourcePools.psi).toBe(6); + expect(useCombatStore.getState().mobs[TARGET_ID]?.health).toBe(99_900); + }); +}); diff --git a/src/game/romWarlockWarriorEnragedCoaMechanics.test.ts b/src/game/romWarlockWarriorEnragedCoaMechanics.test.ts new file mode 100644 index 00000000..821e648a --- /dev/null +++ b/src/game/romWarlockWarriorEnragedCoaMechanics.test.ts @@ -0,0 +1,63 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_COA_WARLOCK_WARRIOR_ENRAGED, + ROM_COA_WARLOCK_WARRIOR_ENRAGED_DESCRIPTION, + ROM_COA_WARLOCK_WARRIOR_ENRAGED_EFFECTS, + romWarlockWarriorEnragedCoaAdditionalAbilities, +} from "./romWarlockWarriorEnragedCoaMechanics"; + +describe("current CoA Warlock/Warrior Enraged identity and payload", () => { + it("adds the current 499871 pair skill with its sourced resource values and cooldown", () => { + const ability = ROM_ALL_ABILITIES.find((entry) => entry.dbcSpellId === 499_871); + expect(ability).toMatchObject({ + id: "rom-warlock-rom-warrior-general-coa-499871", + classId: "rom-warlock", + secondaryClassId: "rom-warrior", + name: "Enraged", + unlockLevel: 60, + sourceUnlockLevel: 60, + romSkillGroup: "general", + target: "self", + range: { min: 0, max: 1 }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: 40_000, + cost: { resource: "mana", amount: 0 }, + costs: [], + effects: [ + { kind: "resource", resource: "rage", amount: 100 }, + { kind: "resource", resource: "focus", amount: 35 }, + { kind: "resource", resource: "psi", amount: 1 }, + ], + passive: false, + }); + expect(ability?.description).toBe(ROM_COA_WARLOCK_WARRIOR_ENRAGED_DESCRIPTION); + expect(ROM_COA_WARLOCK_WARRIOR_ENRAGED).toMatchObject({ + spellId: 499_871, + localWarriorGeneralSpellId: 490_492, + unresolvedLocalChildSpellId: 499_869, + unlockLevel: 60, + cooldownMs: 40_000, + rage: 100, + focus: 35, + psi: 1, + }); + }); + + it("keeps RuneWaker's Warrior General spell and the unresolved hidden child separate", () => { + const localEnraged = ROM_ALL_ABILITIES.find((entry) => entry.dbcSpellId === 490_492); + expect(localEnraged?.classId).toBe("rom-warrior"); + expect(localEnraged?.secondaryClassId).toBeUndefined(); + expect(localEnraged?.effects).not.toEqual(ROM_COA_WARLOCK_WARRIOR_ENRAGED_EFFECTS); + expect(ROM_ALL_ABILITIES.some((entry) => entry.dbcSpellId === 499_869)).toBe(false); + expect(ROM_ALL_ABILITIES.filter((entry) => entry.dbcSpellId === 499_871)).toHaveLength(1); + }); + + it("gates the addition to the sourced Warlock/Warrior pair and is idempotent", () => { + const current = ROM_ALL_ABILITIES.find((entry) => entry.dbcSpellId === 499_871)!; + expect(romWarlockWarriorEnragedCoaAdditionalAbilities([current])).toEqual([]); + const noLocalSource = ROM_ALL_ABILITIES.filter((entry) => ![490_492, 499_871].includes(entry.dbcSpellId)); + expect(() => romWarlockWarriorEnragedCoaAdditionalAbilities(noLocalSource)).toThrow(/without the separate RuneWaker Warrior General row/); + }); +}); diff --git a/src/game/romWarlockWarriorEnragedCoaMechanics.ts b/src/game/romWarlockWarriorEnragedCoaMechanics.ts new file mode 100644 index 00000000..bfe44624 --- /dev/null +++ b/src/game/romWarlockWarriorEnragedCoaMechanics.ts @@ -0,0 +1,70 @@ +import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; + +/** + * Current CoA Warlock/Warrior Enraged. CoA lists it under Warrior General, + * level 60, on the Warlock/Warrior pair page: + * https://chroniclesofarcadia.com/en/wiki/skills/list/9-1 + */ +export const ROM_COA_WARLOCK_WARRIOR_ENRAGED = Object.freeze({ + spellId: 499_871, + localWarriorGeneralSpellId: 490_492, + unresolvedLocalChildSpellId: 499_869, + unlockLevel: 60, + cooldownMs: 40_000, + rage: 100, + focus: 35, + psi: 1, +} as const); + +export const ROM_COA_WARLOCK_WARRIOR_ENRAGED_DESCRIPTION = + "Instant. Immediately recovers 100 Rage, 35 Focus, and 1 Psi. Cooldown: 40 seconds."; + +export const ROM_COA_WARLOCK_WARRIOR_ENRAGED_EFFECTS: readonly AbilityEffect[] = Object.freeze([ + { kind: "resource", resource: "rage", amount: ROM_COA_WARLOCK_WARRIOR_ENRAGED.rage }, + { kind: "resource", resource: "focus", amount: ROM_COA_WARLOCK_WARRIOR_ENRAGED.focus }, + { kind: "resource", resource: "psi", amount: ROM_COA_WARLOCK_WARRIOR_ENRAGED.psi }, +]); + +/** + * Add the current CoA pair spell without rewriting RuneWaker's separate + * Warrior General Enraged (490492). Hidden local child 499869 also stays + * separate because neither the catalog nor CoA identifies it as this spell. + */ +export function romWarlockWarriorEnragedCoaAdditionalAbilities( + catalog: readonly AbilityDefinition[], +): readonly AbilityDefinition[] { + if (catalog.some((ability) => ability.dbcSpellId === ROM_COA_WARLOCK_WARRIOR_ENRAGED.spellId + && ability.classId === "rom-warlock" && ability.secondaryClassId === "rom-warrior")) return []; + + const localEnraged = catalog.find((ability) => ability.dbcSpellId + === ROM_COA_WARLOCK_WARRIOR_ENRAGED.localWarriorGeneralSpellId + && ability.classId === "rom-warrior" && ability.secondaryClassId === undefined); + if (!localEnraged) { + throw new Error("Cannot add CoA Warlock/Warrior Enraged without the separate RuneWaker Warrior General row"); + } + + return [{ + id: "rom-warlock-rom-warrior-general-coa-499871", + classId: "rom-warlock", + secondaryClassId: "rom-warrior", + dbcSpellId: ROM_COA_WARLOCK_WARRIOR_ENRAGED.spellId, + name: "Enraged", + unlockLevel: ROM_COA_WARLOCK_WARRIOR_ENRAGED.unlockLevel, + icon: localEnraged.icon, + sigil: "EN", + description: ROM_COA_WARLOCK_WARRIOR_ENRAGED_DESCRIPTION, + target: "self", + range: { min: 0, max: 1 }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: ROM_COA_WARLOCK_WARRIOR_ENRAGED.cooldownMs, + gcdMs: 1_500, + cost: { resource: "mana", amount: 0 }, + costs: [], + effects: ROM_COA_WARLOCK_WARRIOR_ENRAGED_EFFECTS, + passive: false, + source: "runewaker", + sourceUnlockLevel: ROM_COA_WARLOCK_WARRIOR_ENRAGED.unlockLevel, + romSkillGroup: "general", + }]; +} diff --git a/src/game/romWarriorCoaCatalog.test.ts b/src/game/romWarriorCoaCatalog.test.ts new file mode 100644 index 00000000..93bb7b23 --- /dev/null +++ b/src/game/romWarriorCoaCatalog.test.ts @@ -0,0 +1,140 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { ROM_COA_BLOCKING_STANCE_PASSIVE_TAG } from "./romWarriorCoaCatalog"; + +describe("current CoA Warrior/Knight Blocking Stance catalog entry", () => { + const passive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 493287); + + it("registers 493287 as a level-50 Warrior/Knight passive", () => { + expect(passive).toBeDefined(); + expect(passive).toMatchObject({ + classId: "rom-warrior", + secondaryClassId: "rom-knight", + dbcSpellId: 493287, + name: "Blocking Stance", + unlockLevel: 50, + sourceUnlockLevel: 50, + passive: true, + romSkillGroup: "passive", + source: "runewaker", + target: "self", + }); + }); + + it("documents the stance-gated values and leaves the unspecified Rage proc chance unresolved", () => { + expect(passive?.description).toContain("separate active Blocking Stance (491480)"); + expect(passive?.description).toContain("Parry Rate by 8%"); + expect(passive?.description).toContain("damage received by 18.9%"); + expect(passive?.description).toContain("Aggro by 75.4%"); + expect(passive?.description).toContain("physical-hit effect that restores 3 Rage"); + expect(passive?.description).toContain("chance is unspecified"); + expect(passive?.effects).toEqual([expect.objectContaining({ + kind: "apply-aura", + recipient: "caster", + triggerSpellId: 493287, + aura: expect.objectContaining({ + id: "rom-coa-blocking-stance-passive-493287", + durationMs: null, + utilityTags: [ROM_COA_BLOCKING_STANCE_PASSIVE_TAG], + }), + })]); + + const aura = passive?.effects[0]; + expect(aura?.kind).toBe("apply-aura"); + if (aura?.kind === "apply-aura") { + expect(aura.aura.modifiers).toBeUndefined(); + expect(aura.aura.procs).toBeUndefined(); + } + }); + + it("keeps the local 491480 active skill separate from the CoA 493287 passive", () => { + const localActive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 491480 + && ability.classId === "rom-warrior" && ability.secondaryClassId === "rom-knight"); + expect(localActive).toMatchObject({ + name: "Blocking Stance", + passive: false, + classId: "rom-warrior", + secondaryClassId: "rom-knight", + }); + expect(localActive?.id).not.toBe(passive?.id); + expect(localActive?.dbcSpellId).not.toBe(passive?.dbcSpellId); + }); + + it("uses current CoA Warrior/Warlock tooltips for the two implemented passives", () => { + const speedSlash = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 499827)!; + expect(speedSlash).toMatchObject({ + classId: "rom-warrior", + secondaryClassId: "rom-warlock", + passive: true, + }); + expect(speedSlash.description).toContain("Increases Slash damage"); + expect(speedSlash.description).toContain("unspecified amount, which is not modeled"); + expect(speedSlash.description).toContain("Reduces Slash's Rage cost by 10"); + expect(speedSlash.description).not.toMatch(/cooldown|499828|498739/i); + expect(speedSlash.ranks?.[0]?.description).toBe(speedSlash.description); + + const excellentTraining = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 499806)!; + expect(excellentTraining).toMatchObject({ + classId: "rom-warrior", + secondaryClassId: "rom-warlock", + passive: true, + }); + expect(excellentTraining.description).toContain("additional 20% Physical Damage"); + expect(excellentTraining.description).not.toMatch(/cooldown|499825|499826|498742/i); + expect(excellentTraining.ranks?.[0]?.description).toBe(excellentTraining.description); + }); +}); + +describe("current CoA passive catalog replacements", () => { + it("converts Knight Holy Power Explosion into a passive marker and removes the obsolete active payload", () => { + const passive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 490172 + && ability.classId === "rom-knight"); + expect(passive).toMatchObject({ + classId: "rom-knight", + passive: true, + target: "self", + castTimeMs: 0, + cooldownMs: 0, + costs: [], + }); + expect(passive?.effects).toEqual([]); + expect(passive?.description).toContain("Aggro generated by Knight abilities by 198%"); + expect(passive?.description).not.toMatch(/heal|healing|restore/i); + expect(passive?.ranks?.[0]).toMatchObject({ + castMode: "instant", + castTimeMs: 0, + cooldownMs: 0, + cost: { resource: "mana", amount: 0 }, + costs: [], + effects: [], + description: expect.stringContaining("Aggro generated by Knight abilities by 198%"), + }); + }); + + it("converts Knight/Rogue Leopard Instinct to a passive marker with no old absorb payload", () => { + const passive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 495402 + && ability.classId === "rom-knight" && ability.secondaryClassId === "rom-rogue"); + expect(passive).toMatchObject({ + classId: "rom-knight", + secondaryClassId: "rom-rogue", + passive: true, + target: "self", + castTimeMs: 0, + cooldownMs: 0, + costs: [], + }); + expect(passive?.effects).toEqual([]); + expect(passive?.description).toContain("up to 10"); + expect(passive?.description).toContain("3% Dodge"); + expect(passive?.description).toContain("Magic Resistance Rate"); + expect(passive?.ranks?.[0]).toMatchObject({ + castMode: "instant", + castTimeMs: 0, + cooldownMs: 0, + cost: { resource: "mana", amount: 0 }, + costs: [], + effects: [], + description: expect.stringContaining("up to 10"), + }); + }); +}); diff --git a/src/game/romWarriorCoaCatalog.ts b/src/game/romWarriorCoaCatalog.ts new file mode 100644 index 00000000..a6ade24d --- /dev/null +++ b/src/game/romWarriorCoaCatalog.ts @@ -0,0 +1,112 @@ +import type { AbilityDefinition } from "./abilityCatalog"; + +export const ROM_COA_BLOCKING_STANCE_PASSIVE_ID = 493287; +export const ROM_COA_BLOCKING_STANCE_PASSIVE_TAG = "rom-coa-blocking-stance-passive"; +export const ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID = 493283; + +/** + * Add CoA's current level-50 Warrior/Knight passive, which is absent from the + * RuneWaker generated catalog. Its numeric bonuses are intentionally carried + * by the stance-gated combat runtime; a generic passive aura would apply them + * even when active Blocking Stance (491480) is off. + * + * CoA lists a physical-hit effect that restores 3 Rage, but does not publish + * its chance. That rider is left out rather than assigned an invented proc. + */ +export function romWarriorCoaAdditionalAbilities( + catalog: readonly AbilityDefinition[], +): readonly AbilityDefinition[] { + const additions: AbilityDefinition[] = []; + if (!catalog.some((ability) => ability.dbcSpellId === ROM_COA_BLOCKING_STANCE_PASSIVE_ID + && ability.classId === "rom-warrior" && ability.secondaryClassId === "rom-knight")) { + // Reuse the icon from the distinct active stance. This source row is used + // only as presentation metadata; the two spell IDs/effects stay separate. + const activeStance = catalog.find((ability) => ability.dbcSpellId === 491480 + && ability.classId === "rom-warrior" && ability.secondaryClassId === "rom-knight"); + if (!activeStance) throw new Error("Cannot add CoA Blocking Stance passive without the local Warrior/Knight stance row"); + + additions.push({ + id: "rom-warrior-rom-knight-elite-50-coa-493287", + classId: "rom-warrior", + secondaryClassId: "rom-knight", + dbcSpellId: ROM_COA_BLOCKING_STANCE_PASSIVE_ID, + name: "Blocking Stance", + unlockLevel: 50, + icon: activeStance.icon, + sigil: "BS", + description: "Passive: While the separate active Blocking Stance (491480) is active, increases Parry Rate by 8%, reduces damage received by 18.9%, and increases Aggro by 75.4%. CoA also lists a physical-hit effect that restores 3 Rage, but its chance is unspecified and that proc is not modeled.", + target: "self", + range: { min: 0, max: 0 }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: 0, + gcdMs: 1_500, + cost: { resource: "mana", amount: 0 }, + costs: [], + effects: [{ + kind: "apply-aura", + recipient: "caster", + aura: { + id: "rom-coa-blocking-stance-passive-493287", + name: "Blocking Stance Passive", + description: "Passive marker for CoA spell 493287. Its numeric effects require the separate active 491480 aura.", + disposition: "buff", + durationMs: null, + utilityTags: [ROM_COA_BLOCKING_STANCE_PASSIVE_TAG], + }, + sourceEffectType: -1, + sourceAuraType: -1, + miscValue: 0, + triggerSpellId: ROM_COA_BLOCKING_STANCE_PASSIVE_ID, + }], + passive: true, + source: "runewaker", + sourceUnlockLevel: 50, + romSkillGroup: "passive", + }); + } + + if (!catalog.some((ability) => ability.dbcSpellId === ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID + && ability.classId === "rom-warrior" && ability.secondaryClassId === "rom-rogue")) { + // Current CoA has a separate level-50 Warrior/Rogue Probing Attack. The + // generated local Warrior primary ability 491133 is intentionally not + // remapped or used as the trigger ID for this pair action. Current values + // and the listed conditional branches come from: + // https://chroniclesofarcadia.com/en/wiki/skills/list/1-3 + const localProbingAttack = catalog.find((ability) => ability.dbcSpellId === 491133 + && ability.classId === "rom-warrior" && !ability.secondaryClassId); + if (!localProbingAttack) throw new Error("Cannot add CoA Warrior/Rogue Probing Attack without the local Warrior Probing Attack icon"); + + additions.push({ + id: "rom-warrior-rom-rogue-elite-50-coa-493283", + classId: "rom-warrior", + secondaryClassId: "rom-rogue", + dbcSpellId: ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID, + name: "Probing Attack", + unlockLevel: 50, + icon: localProbingAttack.icon, + sigil: "PA", + description: "Costs 20 Rage and inflicts 664.3% main-hand weapon DPS, making the target Vulnerable. With a Bleed caused by you, or while wielding a 2-H Hammer, the empowered hit deals 1116.9% weapon DPS. CoA does not specify the Vulnerable effect or duration, so neither is applied. With Exhaustion (493248) learned, a landed hit has a 30% chance to restore 25 Energy and 50 Rage. The 2-H Hammer cooldown reduction is not modeled because CoA gives no value. No STR coefficient is listed or added.", + target: "hostile", + range: { min: 0, max: 50 }, + castMode: "instant", + castTimeMs: 0, + cooldownMs: 3_000, + gcdMs: 1_500, + cost: { resource: "rage", amount: 20 }, + costs: [{ resource: "rage", amount: 20 }], + effects: [{ + kind: "damage", + coefficient: 0, + weaponDpsCoefficient: 6.643, + school: "physical", + }], + passive: false, + source: "runewaker", + sourceUnlockLevel: 50, + romSkillGroup: "elite", + }); + } + + return additions; +} diff --git a/src/game/romWarriorCoaRuntime.integration.test.ts b/src/game/romWarriorCoaRuntime.integration.test.ts new file mode 100644 index 00000000..ef2aec9e --- /dev/null +++ b/src/game/romWarriorCoaRuntime.integration.test.ts @@ -0,0 +1,119 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { usePartyStore } from "./partyStore"; +import { createConfiguredPartyMember } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { abilitiesForCharacter } from "./abilityCatalog"; +import { applyPartyRomCoaExhaustion } from "./partyRuntime"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { stableCombatUnit, useCombatStore } from "./combatStore"; +import { ROM_LOCAL_ACTIVE_BLOCKING_STANCE_AURA_ID } from "./romWarriorCurrentCoaMechanics"; + +function stablePartyRoll(seed: string): number { + let hash = 2166136261; + for (const character of seed) { + hash ^= character.charCodeAt(0); + hash = Math.imul(hash, 16777619); + } + return (hash >>> 0) / 0x1_0000_0000; +} + +function registerTarget(id: string): void { + useCombatStore.getState().registerMob(id, { name: id, level: 1, maxHealth: 50_000, xpReward: 0 }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.getState().selectMob(id); +} + +describe("current CoA Warrior mechanics runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ + classId: "rom-warrior", secondaryClassId: "rom-rogue", level: 50, xp: 0, + }); + usePartyStore.getState().initializeParty("rom-warrior-coa-runtime", 50, useCombatStore.getState().health); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + }); + + it("awards Exhaustion resources on a seeded landed CoA Probing Attack and records capped resource events", () => { + const targetId = "coa-probing-target"; + registerTarget(targetId); + const state = useCombatStore.getState(); + const ability = state.abilities.find((candidate) => candidate.dbcSpellId === 493283); + expect(ability).toBeDefined(); + useCombatStore.setState((current) => ({ + resource: 40, + maxResource: 100, + maxResourcePools: { ...current.maxResourcePools, rage: 100, energy: 100 }, + resourcePools: { ...current.resourcePools, rage: 40, energy: 0 }, + })); + const now = Array.from({ length: 100 }, (_, index) => 1_000 + index * 1_000) + .find((candidate) => stableCombatUnit( + `${PLAYER_AGGRO_ID}:${ability!.id}:${targetId}:${candidate}:rom-coa-exhaustion`, + ) < 0.3)!; + + expect(useCombatStore.getState().castAbility(ability!.id, { targetActorId: targetId, now })) + .toMatchObject({ ok: true, affectedMobIds: [targetId] }); + const finalState = useCombatStore.getState(); + expect(finalState.resourcePools).toMatchObject({ energy: 25, rage: 70 }); + expect(finalState.combatEvents.filter((event) => event.kind === "resource" && event.abilityId === ability!.id)) + .toEqual(expect.arrayContaining([ + expect.objectContaining({ targetActorId: PLAYER_AURA_ENTITY_ID, rawAmount: 25, effectiveAmount: 25 }), + expect.objectContaining({ targetActorId: PLAYER_AURA_ENTITY_ID, rawAmount: 50, effectiveAmount: 50 }), + ])); + }); + + it("applies companion Exhaustion after a landed CoA Probing Attack and caps both resources", () => { + const seed = "coa-probing-companion"; + const companion = createConfiguredPartyMember({ + name: "Warrior/Rogue", + classId: "rom-warrior", + secondaryClassId: "rom-rogue", + raceId: "rom-dwarf", + specialization: "Warrior/Rogue", + role: "damage", + }, 80, 0, seed); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2, "rom"); + usePartyStore.setState({ members: [{ + ...companion, + gearStats: EMPTY_ITEM_STATS, + resourcePools: { ...companion.resourcePools, energy: 90, rage: 90 }, + }] }); + useCombatStore.getState().synchronizeActors(); + const probingAttack = abilitiesForCharacter("rom-warrior", "rom-rogue") + .find((ability) => ability.dbcSpellId === 493283)!; + const targetId = "coa-probing-companion-target"; + const now = Array.from({ length: 100 }, (_, index) => 10_000 + index) + .find((candidate) => stablePartyRoll( + `${companion.id}:${probingAttack.id}:${targetId}:${candidate}:rom-coa-exhaustion`, + ) < 0.3)!; + const priorEventCount = useCombatStore.getState().combatEvents.length; + + const updated = applyPartyRomCoaExhaustion( + companion, + probingAttack, + true, + `${companion.id}:${probingAttack.id}:${targetId}:${now}:rom-coa-exhaustion`, + now, + ); + + expect(updated.resourcePools).toMatchObject({ energy: 100, rage: 100 }); + expect(useCombatStore.getState().combatEvents.slice(priorEventCount).filter((event) => ( + event.kind === "resource" && event.sourceActorId === companion.id && event.abilityId === probingAttack.id + ))).toEqual(expect.arrayContaining([ + expect.objectContaining({ rawAmount: 25, effectiveAmount: 10 }), + expect.objectContaining({ rawAmount: 50, effectiveAmount: 10 }), + ])); + }); + + it("uses the Knight passive marker without carrying the retired active heal payload", () => { + useCombatStore.getState().initializeCharacter({ classId: "rom-knight", level: 50, xp: 0 }); + const passive = useCombatStore.getState().abilities.find((candidate) => candidate.dbcSpellId === 490172); + expect(passive).toMatchObject({ passive: true, target: "self", effects: [] }); + expect(passive?.description).toContain("198%"); + }); + + it("recognizes the local active stance separately from the current CoA passive marker", () => { + expect(ROM_LOCAL_ACTIVE_BLOCKING_STANCE_AURA_ID).toBe("rom-aura-491480-502007-0-parry"); + }); +}); diff --git a/src/game/romWarriorCurrentCoaMechanics.test.ts b/src/game/romWarriorCurrentCoaMechanics.test.ts new file mode 100644 index 00000000..0e1b6c0c --- /dev/null +++ b/src/game/romWarriorCurrentCoaMechanics.test.ts @@ -0,0 +1,175 @@ +import { describe, expect, it } from "vitest"; +import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; +import { + ROM_COA_HOLY_POWER_EXPLOSION_ID, + ROM_COA_HOLY_SEAL_NO_DOT_ABILITY_IDS, + ROM_COA_BLOCKING_STANCE_ID, + ROM_COA_RESIST_ID, + ROM_LOCAL_ACTIVE_BLOCKING_STANCE_AURA_ID, + romCurrentCoaBlockingStanceModifiers, + romCurrentCoaHolyPowerExplosionThreatMultiplier, + romCurrentCoaResistModifiers, + romCurrentCoaThreatFactors, + withoutCurrentCoaHolySealPeriodicDamage, +} from "./romWarriorCurrentCoaMechanics"; + +const damage: AbilityEffect = { kind: "damage", coefficient: 1, school: "physical" }; +const dot: AbilityEffect = { kind: "dot", coefficient: 0.25, ticks: 5, intervalMs: 2_000 }; +const combo: AbilityEffect = { kind: "combo", amount: 1 }; + +const knightAction = { source: "runewaker", classId: "rom-knight" } as Pick< + AbilityDefinition, + "source" | "classId" +>; + +describe("current CoA Warrior/Knight mechanics", () => { + it.each(ROM_COA_HOLY_SEAL_NO_DOT_ABILITY_IDS)( + "removes the obsolete Holy Seal periodic damage from %i while preserving hit and combo effects", + (sourceSkillId) => { + const effects: AbilityEffect[] = [damage, dot, combo]; + + expect(withoutCurrentCoaHolySealPeriodicDamage(sourceSkillId, effects)).toEqual([damage, combo]); + }, + ); + + it("leaves unrelated ability effects and non-Holy-Seal periodic effects unchanged", () => { + const effects: AbilityEffect[] = [damage, dot, combo]; + expect(withoutCurrentCoaHolySealPeriodicDamage(490152, effects)).toBe(effects); + }); + + it("applies Holy Power Explosion's 2.98 threat multiplier to Knight actions only when learned", () => { + expect(romCurrentCoaHolyPowerExplosionThreatMultiplier(knightAction, [ROM_COA_HOLY_POWER_EXPLOSION_ID])) + .toBe(2.98); + expect(romCurrentCoaHolyPowerExplosionThreatMultiplier(knightAction, [])).toBe(1); + expect(romCurrentCoaHolyPowerExplosionThreatMultiplier( + { source: "runewaker", classId: "rom-warrior" }, + [ROM_COA_HOLY_POWER_EXPLOSION_ID], + )).toBe(1); + expect(romCurrentCoaHolyPowerExplosionThreatMultiplier( + { source: "core", classId: "rom-knight" }, + [ROM_COA_HOLY_POWER_EXPLOSION_ID], + )).toBe(1); + }); + + it("keeps each CoA aggro factor separate and leaves their overlap unmodeled", () => { + const ability = { source: "runewaker" as const, classId: "rom-knight" as const }; + const holyPower = romCurrentCoaThreatFactors({ + ability, + classId: "rom-knight", + learnedPassiveSpellIds: [490172], + blockingStanceAuraActive: false, + }); + expect(holyPower).toMatchObject({ holyPowerExplosionMultiplier: 2.98, resolvedMultiplier: 2.98, overlapUnresolved: false }); + + const blocking = romCurrentCoaThreatFactors({ + ability: { source: "runewaker", classId: "rom-warrior" }, + classId: "rom-warrior", + secondaryClassId: "rom-knight", + learnedPassiveSpellIds: [493287], + blockingStanceAuraActive: true, + }); + expect(blocking).toMatchObject({ blockingStanceMultiplier: 1.754, resolvedMultiplier: 1.754, overlapUnresolved: false }); + + const resist = romCurrentCoaThreatFactors({ + ability: { source: "runewaker", classId: "rom-warrior" }, + classId: "rom-warrior", + secondaryClassId: "rom-knight", + learnedPassiveSpellIds: [493287, 493251], + blockingStanceAuraActive: true, + }); + expect(resist).toMatchObject({ resistMultiplier: 1.8, resolvedMultiplier: 1, overlapUnresolved: true }); + + const overlapping = romCurrentCoaThreatFactors({ + ability, + classId: "rom-warrior", + secondaryClassId: "rom-knight", + learnedPassiveSpellIds: [490172, 493287, 493251], + blockingStanceAuraActive: true, + }); + expect(overlapping).toMatchObject({ + holyPowerExplosionMultiplier: 2.98, + blockingStanceMultiplier: 1.754, + resistMultiplier: 1.8, + resolvedMultiplier: 1, + overlapUnresolved: true, + }); + }); + + it("enables Resist's +80% aggro and 20% physical reduction only for learned Warrior/Knight under CoA stance", () => { + expect(romCurrentCoaResistModifiers({ + classId: "rom-warrior", + secondaryClassId: "rom-knight", + learnedPassiveSpellIds: [ROM_COA_RESIST_ID, ROM_COA_BLOCKING_STANCE_ID], + blockingStanceAuraActive: true, + })).toEqual({ threatMultiplier: 1.8, physicalDamageTakenMultiplier: 0.8 }); + }); + + it("applies CoA Blocking Stance's sourced static modifiers only while its passive and active aura are both present", () => { + const stance = { + classId: "rom-warrior" as const, + secondaryClassId: "rom-knight" as const, + learnedPassiveSpellIds: [ROM_COA_BLOCKING_STANCE_ID], + blockingStanceAuraActive: true, + }; + expect(romCurrentCoaBlockingStanceModifiers(stance)).toEqual({ + parryRateBonusPercent: 8, + receivedDamageReductionPercent: 18.9, + aggroBonusPercent: 75.4, + }); + expect(romCurrentCoaBlockingStanceModifiers({ + ...stance, + learnedPassiveSpellIds: [], + })).toEqual({ + parryRateBonusPercent: 0, + receivedDamageReductionPercent: 0, + aggroBonusPercent: 0, + }); + expect(romCurrentCoaBlockingStanceModifiers({ + ...stance, + blockingStanceAuraActive: false, + })).toEqual({ + parryRateBonusPercent: 0, + receivedDamageReductionPercent: 0, + aggroBonusPercent: 0, + }); + }); + + it("exposes the stable local 491480 aura ID without treating it as CoA passive 493287", () => { + expect(ROM_LOCAL_ACTIVE_BLOCKING_STANCE_AURA_ID).toBe("rom-aura-491480-502007-0-parry"); + expect(romCurrentCoaBlockingStanceModifiers({ + classId: "rom-warrior", + secondaryClassId: "rom-knight", + learnedPassiveSpellIds: [], + blockingStanceAuraActive: true, + })).toEqual({ + parryRateBonusPercent: 0, + receivedDamageReductionPercent: 0, + aggroBonusPercent: 0, + }); + }); + + it("requires learned Resist, learned CoA Blocking Stance, the active stance aura, and Warrior/Knight", () => { + const baseline = { threatMultiplier: 1, physicalDamageTakenMultiplier: 1 }; + const state = { + classId: "rom-warrior" as const, + secondaryClassId: "rom-knight" as const, + learnedPassiveSpellIds: [ROM_COA_RESIST_ID, ROM_COA_BLOCKING_STANCE_ID], + blockingStanceAuraActive: true, + }; + + expect(romCurrentCoaResistModifiers({ ...state, learnedPassiveSpellIds: [] })).toEqual(baseline); + expect(romCurrentCoaResistModifiers({ + ...state, + learnedPassiveSpellIds: [ROM_COA_RESIST_ID], + })).toEqual(baseline); + expect(romCurrentCoaResistModifiers({ + ...state, + blockingStanceAuraActive: false, + })).toEqual(baseline); + expect(romCurrentCoaResistModifiers({ + ...state, + classId: "rom-knight", + secondaryClassId: "rom-warrior", + })).toEqual(baseline); + }); +}); diff --git a/src/game/romWarriorCurrentCoaMechanics.ts b/src/game/romWarriorCurrentCoaMechanics.ts new file mode 100644 index 00000000..978bb3e1 --- /dev/null +++ b/src/game/romWarriorCurrentCoaMechanics.ts @@ -0,0 +1,193 @@ +import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; + +/** + * Current CoA removed Holy Seal's periodic damage in patch 10.6.1. Keep the + * existing direct hit, control, resource, and combo effects for these skills. + * Source: https://chroniclesofarcadia.com/en/patch/10-6-1-1000 + */ +export const ROM_COA_HOLY_SEAL_NO_DOT_ABILITY_IDS = [490148, 490149, 490150, 490151] as const; + +/** Current CoA's passive Holy Power Explosion skill ID. */ +export const ROM_COA_HOLY_POWER_EXPLOSION_ID = 490172; + +/** Current CoA's Warrior/Knight Resist passive and Blocking Stance passive IDs. */ +export const ROM_COA_RESIST_ID = 493251; +export const ROM_COA_BLOCKING_STANCE_ID = 493287; + +/** + * Stable runtime aura ID generated for local active skill 491480's component + * 502007 (`parry`). This identifies the local active aura only; it does not + * establish that skill 491480 is equivalent to CoA's passive 493287. + */ +export const ROM_LOCAL_ACTIVE_BLOCKING_STANCE_AURA_ID = "rom-aura-491480-502007-0-parry"; + +export const ROM_COA_HOLY_POWER_EXPLOSION_THREAT_MULTIPLIER = 2.98; +export const ROM_COA_RESIST_THREAT_MULTIPLIER = 1.8; +export const ROM_COA_RESIST_PHYSICAL_DAMAGE_TAKEN_MULTIPLIER = 0.8; + +const holySealNoDotAbilityIds = new Set(ROM_COA_HOLY_SEAL_NO_DOT_ABILITY_IDS); + +/** Removes only the obsolete Holy Seal periodic output for the four affected casts. */ +export function withoutCurrentCoaHolySealPeriodicDamage( + sourceSkillId: number, + effects: readonly AbilityEffect[], +): readonly AbilityEffect[] { + if (!holySealNoDotAbilityIds.has(sourceSkillId)) return effects; + return effects.filter((effect) => effect.kind !== "dot"); +} + +/** + * Current CoA lists Holy Power Explosion (490172) as a passive providing +198% + * aggro. The multiplier is 1 + 1.98, and it applies to Knight-class actions + * when that passive is learned. + * Source: https://chroniclesofarcadia.com/patch/12-1-3-1000 + */ +export function romCurrentCoaHolyPowerExplosionThreatMultiplier( + ability: Pick, + learnedPassiveSpellIds: readonly number[], +): number { + return ability.source === "runewaker" + && ability.classId === "rom-knight" + && learnedPassiveSpellIds.includes(ROM_COA_HOLY_POWER_EXPLOSION_ID) + ? ROM_COA_HOLY_POWER_EXPLOSION_THREAT_MULTIPLIER + : 1; +} + +export interface RomCurrentCoaResistModifiers { + /** Scalar for aggro generated by Warrior/Knight actions while stance is active. */ + readonly threatMultiplier: number; + /** Scalar for incoming physical damage while stance is active. */ + readonly physicalDamageTakenMultiplier: number; +} + +export interface RomCurrentCoaResistState { + readonly classId: AbilityDefinition["classId"]; + readonly secondaryClassId?: AbilityDefinition["secondaryClassId"]; + readonly learnedPassiveSpellIds: readonly number[]; + /** The separate, currently active Blocking Stance aura. */ + readonly blockingStanceAuraActive: boolean; +} + +export interface RomCurrentCoaBlockingStanceModifiers { + /** +8% parry rate from the current CoA passive. */ + readonly parryRateBonusPercent: number; + /** 18.9% less received damage from the current CoA passive. */ + readonly receivedDamageReductionPercent: number; + /** +75.4% aggro from the current CoA passive. */ + readonly aggroBonusPercent: number; +} + +export interface RomCurrentCoaBlockingStanceState { + readonly classId: AbilityDefinition["classId"]; + readonly secondaryClassId?: AbilityDefinition["secondaryClassId"]; + readonly learnedPassiveSpellIds: readonly number[]; + /** State of the separate active Blocking Stance aura. */ + readonly blockingStanceAuraActive: boolean; +} + +const NO_RESIST_MODIFIERS: RomCurrentCoaResistModifiers = { + threatMultiplier: 1, + physicalDamageTakenMultiplier: 1, +}; + +const NO_BLOCKING_STANCE_MODIFIERS: RomCurrentCoaBlockingStanceModifiers = { + parryRateBonusPercent: 0, + receivedDamageReductionPercent: 0, + aggroBonusPercent: 0, +}; + +/** + * Current CoA's Blocking Stance passive (493287) supplies these three static + * modifiers only while its separate active stance aura is present. The CoA + * page also mentions a 3-Rage proc with an unquantified chance; that proc is + * deliberately not represented here. + * Source: https://chroniclesofarcadia.com/ja/wiki/skills/list/1-6 + */ +export function romCurrentCoaBlockingStanceModifiers( + state: RomCurrentCoaBlockingStanceState, +): RomCurrentCoaBlockingStanceModifiers { + const isWarriorKnight = state.classId === "rom-warrior" + && state.secondaryClassId === "rom-knight"; + const learnedCoaBlockingStance = state.learnedPassiveSpellIds.includes(ROM_COA_BLOCKING_STANCE_ID); + if (!isWarriorKnight || !learnedCoaBlockingStance || !state.blockingStanceAuraActive) { + return NO_BLOCKING_STANCE_MODIFIERS; + } + return { + parryRateBonusPercent: 8, + receivedDamageReductionPercent: 18.9, + aggroBonusPercent: 75.4, + }; +} + +/** + * Current CoA Resist grants +80% aggro and 20% received physical damage + * reduction only when both the CoA Blocking Stance passive (493287) and its + * separate active stance aura are present. The current passive ID is not itself + * an active aura; callers must derive the aura state explicitly. This helper + * does not infer equivalence with generated/local active skill 491480. + * Resist's separate chance to grant a small amount of Rage is omitted because + * its chance and amount are not specified. + * Source: https://chroniclesofarcadia.com/ja/wiki/skills/list/1-6 + */ +export function romCurrentCoaResistModifiers( + state: RomCurrentCoaResistState, +): RomCurrentCoaResistModifiers { + const isWarriorKnight = state.classId === "rom-warrior" + && state.secondaryClassId === "rom-knight"; + const learnedResist = state.learnedPassiveSpellIds.includes(ROM_COA_RESIST_ID); + const learnedCoaBlockingStance = state.learnedPassiveSpellIds.includes(ROM_COA_BLOCKING_STANCE_ID); + if (!isWarriorKnight || !learnedResist || !learnedCoaBlockingStance || !state.blockingStanceAuraActive) { + return NO_RESIST_MODIFIERS; + } + return { + threatMultiplier: ROM_COA_RESIST_THREAT_MULTIPLIER, + physicalDamageTakenMultiplier: ROM_COA_RESIST_PHYSICAL_DAMAGE_TAKEN_MULTIPLIER, + }; +} + +export interface RomCurrentCoaThreatFactors { + readonly holyPowerExplosionMultiplier: number; + readonly blockingStanceMultiplier: number; + readonly resistMultiplier: number; + /** Multiple active factors have no confirmed combination rule, so the applied result stays neutral. */ + readonly resolvedMultiplier: number; + readonly overlapUnresolved: boolean; +} + +/** Keep the current CoA threat scalars distinct; do not invent their overlap rule. */ +export function romCurrentCoaThreatFactors(input: { + readonly ability: Pick; + readonly classId: AbilityDefinition["classId"]; + readonly secondaryClassId?: AbilityDefinition["secondaryClassId"]; + readonly learnedPassiveSpellIds: readonly number[]; + readonly blockingStanceAuraActive: boolean; +}): RomCurrentCoaThreatFactors { + const holyPowerExplosionMultiplier = romCurrentCoaHolyPowerExplosionThreatMultiplier( + input.ability, input.learnedPassiveSpellIds, + ); + const blocking = romCurrentCoaBlockingStanceModifiers({ + classId: input.classId, + secondaryClassId: input.secondaryClassId, + learnedPassiveSpellIds: input.learnedPassiveSpellIds, + blockingStanceAuraActive: input.blockingStanceAuraActive, + }); + const resist = romCurrentCoaResistModifiers({ + classId: input.classId, + secondaryClassId: input.secondaryClassId, + learnedPassiveSpellIds: input.learnedPassiveSpellIds, + blockingStanceAuraActive: input.blockingStanceAuraActive, + }); + const blockingStanceMultiplier = 1 + blocking.aggroBonusPercent / 100; + const factors = [ + holyPowerExplosionMultiplier, + blockingStanceMultiplier, + resist.threatMultiplier, + ].filter((multiplier) => multiplier !== 1); + return { + holyPowerExplosionMultiplier, + blockingStanceMultiplier, + resistMultiplier: resist.threatMultiplier, + resolvedMultiplier: factors.length === 1 ? factors[0]! : 1, + overlapUnresolved: factors.length > 1, + }; +} diff --git a/src/game/romWarriorDruidRageOfCalmness.integration.test.ts b/src/game/romWarriorDruidRageOfCalmness.integration.test.ts new file mode 100644 index 00000000..cfac1621 --- /dev/null +++ b/src/game/romWarriorDruidRageOfCalmness.integration.test.ts @@ -0,0 +1,106 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { abilitiesForCharacter, type AbilityDefinition } from "./abilityCatalog"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { commitPartyAbilityUse, partyAbilityCosts } from "./partyAbilityAi"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { resetPartyRuntimeClock } from "./partyRuntime"; + +function whirlwindFrom(abilities: readonly AbilityDefinition[]): AbilityDefinition { + const ability = abilities.find((candidate) => candidate.dbcSpellId === 490133); + if (!ability) throw new Error("RuneWaker general Whirlwind is missing from Warrior abilities."); + return ability; +} + +describe("Warrior/Druid Rage of Calmness combat integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + usePartyStore.setState({ members: [] }); + }); + + it("reduces player Warrior/Druid Whirlwind from 50 to 40 Rage and from 30s to 20s cooldown", () => { + useCombatStore.getState().initializeCharacter({ + classId: "rom-warrior", + secondaryClassId: "rom-druid", + raceId: "rom-human", + level: 80, + }); + const initial = useCombatStore.getState(); + const whirlwind = whirlwindFrom(initial.abilities); + expect(initial.abilities.find((ability) => ability.dbcSpellId === 494377)).toMatchObject({ + classId: "rom-warrior", + secondaryClassId: "rom-druid", + name: "Rage of Calmness", + passive: true, + }); + useCombatStore.setState((state) => ({ + resource: 40, + resourcePools: { ...state.resourcePools, rage: 40 }, + maxResourcePools: { ...state.maxResourcePools, rage: 100 }, + })); + useCombatStore.getState().registerMob("rage-of-calmness-player-target", { + name: "Rage of Calmness Target", + maxHealth: 100_000, + xpReward: 0, + }); + setMobPosition("rage-of-calmness-player-target", [3, 0, 0]); + useCombatStore.getState().selectMob("rage-of-calmness-player-target"); + + const result = useCombatStore.getState().castAbility(whirlwind.id, undefined, 1_000); + + expect(result, JSON.stringify(result)).toMatchObject({ ok: true }); + expect(useCombatStore.getState().resourcePools.rage).toBe(0); + expect(useCombatStore.getState().cooldowns[whirlwind.id]).toBe(21_000); + }); + + it("reduces generated Warrior/Druid companion Whirlwind cost and committed cooldown", () => { + useCombatStore.getState().initializeCharacter({ classId: "priest", level: 80 }); + const seed = createConfiguredPartyMember({ + name: "Warrior Druid", + classId: "rom-warrior", + secondaryClassId: "rom-druid", + specialization: "Primary", + role: "damage", + }, 80, 0, "rage-of-calmness-party"); + const abilities = abilitiesForCharacter("rom-warrior", "rom-druid"); + const whirlwind = whirlwindFrom(abilities); + const member = { + ...seed, + resource: 40, + resourcePools: { ...seed.resourcePools, rage: 40 }, + cooldowns: {}, + }; + + expect(partyAbilityCosts(member, whirlwind)).toEqual([{ resource: "rage", amount: 40 }]); + const committed = commitPartyAbilityUse(member, whirlwind, 1_000); + expect(committed?.resourcePools.rage).toBe(0); + expect(committed?.cooldowns[whirlwind.id]).toBe(21_000); + }); + + it("leaves local Whirlwind unchanged for a Warrior without the Druid pairing", () => { + useCombatStore.getState().initializeCharacter({ classId: "rom-warrior", level: 80 }); + const abilities = useCombatStore.getState().abilities; + const whirlwind = whirlwindFrom(abilities); + useCombatStore.setState((state) => ({ + resource: 50, + resourcePools: { ...state.resourcePools, rage: 50 }, + maxResourcePools: { ...state.maxResourcePools, rage: 100 }, + })); + useCombatStore.getState().registerMob("rage-of-calmness-solo-target", { + name: "Solo Warrior Target", + maxHealth: 100_000, + xpReward: 0, + }); + setMobPosition("rage-of-calmness-solo-target", [3, 0, 0]); + useCombatStore.getState().selectMob("rage-of-calmness-solo-target"); + + const result = useCombatStore.getState().castAbility(whirlwind.id, undefined, 1_000); + + expect(result, JSON.stringify(result)).toMatchObject({ ok: true }); + expect(useCombatStore.getState().resourcePools.rage).toBe(0); + expect(useCombatStore.getState().cooldowns[whirlwind.id]).toBe(31_000); + }); +}); diff --git a/src/game/romWarriorDruidRageOfCalmness.test.ts b/src/game/romWarriorDruidRageOfCalmness.test.ts new file mode 100644 index 00000000..fea3f88c --- /dev/null +++ b/src/game/romWarriorDruidRageOfCalmness.test.ts @@ -0,0 +1,76 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; +import { + ROM_WARRIOR_DRUID_POST_HIT_RAGE_REDUCTION_DURATION_MS, + ROM_WARRIOR_DRUID_RAGE_OF_CALMNESS_ID, + ROM_WARRIOR_GENERAL_WHIRLWIND_ID, + romWarriorDruidWhirlwindAdjustment, +} from "./romWarriorDruidRageOfCalmness"; + +describe("current CoA Warrior/Druid Rage of Calmness", () => { + const whirlwind = { source: "runewaker" as const, dbcSpellId: ROM_WARRIOR_GENERAL_WHIRLWIND_ID }; + const learned = [ROM_WARRIOR_DRUID_RAGE_OF_CALMNESS_ID]; + + it("retains the local -10 Rage and -10-second values for the learned Warrior/Druid pair", () => { + expect(romWarriorDruidWhirlwindAdjustment({ + classId: "rom-warrior", + secondaryClassId: "rom-druid", + learnedPassiveSpellIds: learned, + ability: whirlwind, + })).toEqual({ rageCostReduction: 10, cooldownReductionMs: 10_000 }); + }); + + it("requires the exact pair and the learned 494377 passive", () => { + const base = { + classId: "rom-warrior" as const, + secondaryClassId: "rom-druid" as const, + learnedPassiveSpellIds: learned, + ability: whirlwind, + }; + const none = { rageCostReduction: 0, cooldownReductionMs: 0 }; + + expect(romWarriorDruidWhirlwindAdjustment({ ...base, learnedPassiveSpellIds: [] })).toEqual(none); + expect(romWarriorDruidWhirlwindAdjustment({ ...base, classId: "rom-druid" })).toEqual(none); + expect(romWarriorDruidWhirlwindAdjustment({ ...base, secondaryClassId: "rom-knight" })).toEqual(none); + expect(romWarriorDruidWhirlwindAdjustment({ ...base, secondaryClassId: undefined })).toEqual(none); + }); + + it("does not apply the passive to another action or synthesize CoA's different Whirlwind ID", () => { + const base = { + classId: "rom-warrior" as const, + secondaryClassId: "rom-druid" as const, + learnedPassiveSpellIds: learned, + }; + const none = { rageCostReduction: 0, cooldownReductionMs: 0 }; + + expect(romWarriorDruidWhirlwindAdjustment({ + ...base, + ability: { source: "runewaker", dbcSpellId: 490133 + 1 }, + })).toEqual(none); + expect(romWarriorDruidWhirlwindAdjustment({ + ...base, + ability: { source: "core", dbcSpellId: ROM_WARRIOR_GENERAL_WHIRLWIND_ID }, + })).toEqual(none); + expect(romWarriorDruidWhirlwindAdjustment({ + ...base, + ability: { source: "runewaker", dbcSpellId: 494939 }, + })).toEqual(none); + }); + + it("records the local 20-second post-hit window without inventing its Rage reduction amount", () => { + expect(ROM_WARRIOR_DRUID_POST_HIT_RAGE_REDUCTION_DURATION_MS).toBe(20_000); + }); + + it("labels the generated passive with current CoA wording and states the amount limitation", () => { + const passive = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === ROM_WARRIOR_DRUID_RAGE_OF_CALMNESS_ID + && ability.classId === "rom-warrior" && ability.secondaryClassId === "rom-druid"); + expect(passive).toMatchObject({ + name: "Rage of Calmness", + passive: true, + description: expect.stringContaining("10 Rage and 10 seconds"), + }); + expect(passive?.description).toContain("CoA now references Whirlwind 494939"); + expect(passive?.description).toContain("neither source specifies the amount"); + expect(passive?.ranks?.[0]?.description).toBe(passive?.description); + }); +}); diff --git a/src/game/romWarriorDruidRageOfCalmness.ts b/src/game/romWarriorDruidRageOfCalmness.ts new file mode 100644 index 00000000..7926570e --- /dev/null +++ b/src/game/romWarriorDruidRageOfCalmness.ts @@ -0,0 +1,77 @@ +import type { AbilityDefinition } from "./abilityCatalog"; + +/** Current CoA Warrior/Druid passive, known locally as Recovery of Life. */ +export const ROM_WARRIOR_DRUID_RAGE_OF_CALMNESS_ID = 494377; + +/** RuneWaker's only modeled general Whirlwind row. */ +export const ROM_WARRIOR_GENERAL_WHIRLWIND_ID = 490133; +/** Whirlwind ID currently referenced by the CoA Warrior/Druid page. */ +export const ROM_COA_WARRIOR_GENERAL_WHIRLWIND_ID = 494939; + +const RAGE_OF_CALMNESS_DESCRIPTION = "Passive: Current CoA calls this Warrior/Druid skill Rage of Calmness and confirms reduced Whirlwind Rage cost and cooldown. RuneWaker supplies the local values of 10 Rage and 10 seconds for Whirlwind 490133; CoA now references Whirlwind 494939. A successful Whirlwind hit also reduces general Rage consumption for 20 seconds, but neither source specifies the amount, so that rider is not modeled."; + +/** Keep the catalog label and tooltip aligned to CoA without hiding source limits. */ +export function romWarriorDruidRageOfCalmnessCatalogOverride( + ability: AbilityDefinition, +): AbilityDefinition { + if (ability.classId !== "rom-warrior" + || ability.secondaryClassId !== "rom-druid" + || ability.dbcSpellId !== ROM_WARRIOR_DRUID_RAGE_OF_CALMNESS_ID) { + return ability; + } + return { + ...ability, + name: "Rage of Calmness", + description: RAGE_OF_CALMNESS_DESCRIPTION, + ranks: ability.ranks?.map((rank) => ({ ...rank, description: RAGE_OF_CALMNESS_DESCRIPTION })), + }; +} + +export interface RomWarriorDruidWhirlwindAdjustment { + /** RuneWaker tooltip amount retained because current CoA omits the number. */ + readonly rageCostReduction: number; + /** RuneWaker tooltip amount retained because current CoA omits the number. */ + readonly cooldownReductionMs: number; +} + +const NO_WHIRLWIND_ADJUSTMENT: RomWarriorDruidWhirlwindAdjustment = { + rageCostReduction: 0, + cooldownReductionMs: 0, +}; + +/** + * Resolve the quantified Whirlwind portion of current CoA's Warrior/Druid + * Rage of Calmness (494377). CoA confirms the same passive identity and says + * Whirlwind costs less Rage and has a shorter cooldown, but does not quantify + * either reduction. The RuneWaker passive row supplies -10 Rage and -10s for + * the locally modeled Whirlwind (490133), so those local amounts are retained. + * + * CoA's current page references Whirlwind 494939, while this simulator's + * RuneWaker catalog exposes 490133. The function deliberately accepts only + * the local source ID; it does not claim that the two active spell IDs are + * identical or synthesize CoA's absent active row. + */ +export function romWarriorDruidWhirlwindAdjustment(input: { + readonly classId: AbilityDefinition["classId"]; + readonly secondaryClassId?: AbilityDefinition["secondaryClassId"] | null; + readonly learnedPassiveSpellIds: readonly number[]; + readonly ability: Pick; +}): RomWarriorDruidWhirlwindAdjustment { + if (input.classId !== "rom-warrior" + || input.secondaryClassId !== "rom-druid" + || !input.learnedPassiveSpellIds.includes(ROM_WARRIOR_DRUID_RAGE_OF_CALMNESS_ID) + || input.ability.source !== "runewaker" + || input.ability.dbcSpellId !== ROM_WARRIOR_GENERAL_WHIRLWIND_ID) { + return NO_WHIRLWIND_ADJUSTMENT; + } + + return { rageCostReduction: 10, cooldownReductionMs: 10_000 }; +} + +/** + * RuneWaker component 506368 gives the post-hit Rage-cost rider a 20s + * duration. Neither its component payload nor current CoA's skill text gives + * a reduction amount, so callers must not turn this duration into an active + * Rage-cost modifier until a matching numeric source is found. + */ +export const ROM_WARRIOR_DRUID_POST_HIT_RAGE_REDUCTION_DURATION_MS = 20_000; diff --git a/src/game/romWarriorOverrides.ts b/src/game/romWarriorOverrides.ts index 6f495dcc..ddf6910b 100644 --- a/src/game/romWarriorOverrides.ts +++ b/src/game/romWarriorOverrides.ts @@ -4,7 +4,7 @@ import type { RomGeneratedAbilityLike } from "./romAbilitySemantics"; export const ROM_WARRIOR_BRIAR_TECHNIQUE_TAG = "rom-druid-warrior-briar-technique"; export const ROM_WARRIOR_BRIAR_TECHNIQUE_PASSIVE_TAG = "rom-druid-warrior-briar-technique-learned"; -export const ROM_WARRIOR_BRIAR_TECHNIQUE_TRIGGER_SPELL_IDS = new Set([494016, 494216]); +export const ROM_WARRIOR_BRIAR_TECHNIQUE_TRIGGER_SPELL_IDS = new Set([494016, 499956, 494216]); export const ROM_WARRIOR_BRIAR_TECHNIQUE_AURA: AuraDefinition = { id: "rom-druid-warrior-briar-technique", name: "Briar Technique", diff --git a/src/game/romWarriorRogueCoaCatalog.test.ts b/src/game/romWarriorRogueCoaCatalog.test.ts new file mode 100644 index 00000000..a4cf5bad --- /dev/null +++ b/src/game/romWarriorRogueCoaCatalog.test.ts @@ -0,0 +1,61 @@ +import { describe, expect, it } from "vitest"; +import { ROM_ALL_ABILITIES } from "./romAbilityCatalog"; + +describe("current CoA Warrior/Rogue Probing Attack catalog entry", () => { + const coaProbing = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 493283); + + it("registers 493283 as a level-50 Warrior/Rogue elite ability", () => { + expect(coaProbing).toMatchObject({ + classId: "rom-warrior", + secondaryClassId: "rom-rogue", + dbcSpellId: 493283, + name: "Probing Attack", + unlockLevel: 50, + sourceUnlockLevel: 50, + romSkillGroup: "elite", + target: "hostile", + castMode: "instant", + castTimeMs: 0, + cooldownMs: 3_000, + range: { min: 0, max: 50 }, + cost: { resource: "rage", amount: 20 }, + costs: [{ resource: "rage", amount: 20 }], + passive: false, + }); + }); + + it("models the known baseline hit and documents unsupported conditional riders", () => { + expect(coaProbing?.effects).toEqual([{ + kind: "damage", + coefficient: 0, + weaponDpsCoefficient: 6.643, + school: "physical", + }]); + expect(coaProbing?.description).toContain("664.3% main-hand weapon DPS"); + expect(coaProbing?.description).toContain("1116.9%"); + expect(coaProbing?.description).toContain("conditional damage is not currently simulated"); + expect(coaProbing?.description).toContain("does not specify the Vulnerable effect or duration"); + expect(coaProbing?.description).toContain("Exhaustion (493248) learned"); + expect(coaProbing?.description).toContain("30% chance to restore 25 Energy and 50 Rage"); + expect(coaProbing?.description).toContain("runtime integration is pending"); + expect(coaProbing?.description).toContain("2-H Hammer cooldown reduction"); + expect(coaProbing?.description).toContain("No STR coefficient is listed or added"); + expect(coaProbing?.effects.some((effect) => effect.kind === "resource")).toBe(false); + expect(coaProbing?.effects.some((effect) => effect.kind === "apply-aura")).toBe(false); + }); + + it("keeps local primary Warrior Probing Attack 491133 intact and distinct", () => { + const localPrimary = ROM_ALL_ABILITIES.find((ability) => ability.dbcSpellId === 491133 + && ability.classId === "rom-warrior" && !ability.secondaryClassId); + expect(localPrimary).toMatchObject({ + dbcSpellId: 491133, + classId: "rom-warrior", + name: "Probing Attack", + passive: false, + romSkillGroup: "primary", + }); + expect(localPrimary?.id).not.toBe(coaProbing?.id); + expect(localPrimary?.dbcSpellId).not.toBe(coaProbing?.dbcSpellId); + expect(localPrimary?.effects).not.toEqual(coaProbing?.effects); + }); +}); diff --git a/src/game/romWarriorRogueExhaustion.test.ts b/src/game/romWarriorRogueExhaustion.test.ts new file mode 100644 index 00000000..9518cb24 --- /dev/null +++ b/src/game/romWarriorRogueExhaustion.test.ts @@ -0,0 +1,69 @@ +import { describe, expect, it } from "vitest"; +import { + ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ENERGY_RETURN, + ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID, + ROM_COA_WARRIOR_ROGUE_EXHAUSTION_PROC_CHANCE, + ROM_COA_WARRIOR_ROGUE_EXHAUSTION_RAGE_RETURN, + ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID, + romCoaWarriorRogueExhaustionProc, + romCoaWarriorRogueProbingAttackDpsCoefficient, + type RomCoaWarriorRogueExhaustionProcInput, +} from "./romWarriorRogueExhaustion"; + +const validInput: RomCoaWarriorRogueExhaustionProcInput = { + classId: "rom-warrior", + secondaryClassId: "rom-rogue", + learnedPassiveSpellIds: [ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID], + triggerSpellId: ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID, + attackLanded: true, + roll: 0.29, +}; + +describe("current CoA Warrior/Rogue Exhaustion proc", () => { + it("uses the empowered Probing Attack coefficient for the caster's Bleed or an equipped 2-H Hammer", () => { + expect(romCoaWarriorRogueProbingAttackDpsCoefficient({ + hasCasterOwnedBleed: false, + equippedTwoHandHammer: false, + })).toBe(6.643); + expect(romCoaWarriorRogueProbingAttackDpsCoefficient({ + hasCasterOwnedBleed: true, + equippedTwoHandHammer: false, + })).toBe(11.169); + expect(romCoaWarriorRogueProbingAttackDpsCoefficient({ + hasCasterOwnedBleed: false, + equippedTwoHandHammer: true, + })).toBe(11.169); + }); + + it("returns the sourced resources on a qualifying landed hit below the 30% threshold", () => { + expect(romCoaWarriorRogueExhaustionProc(validInput)).toEqual({ + procced: true, + energy: ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ENERGY_RETURN, + rage: ROM_COA_WARRIOR_ROGUE_EXHAUSTION_RAGE_RETURN, + }); + }); + + it("uses a deterministic 30% threshold with an exclusive upper boundary", () => { + expect(ROM_COA_WARRIOR_ROGUE_EXHAUSTION_PROC_CHANCE).toBe(0.3); + expect(romCoaWarriorRogueExhaustionProc({ ...validInput, roll: 0 })).toMatchObject({ procced: true }); + expect(romCoaWarriorRogueExhaustionProc({ ...validInput, roll: 0.299999 })).toMatchObject({ procced: true }); + expect(romCoaWarriorRogueExhaustionProc({ ...validInput, roll: 0.3 })).toMatchObject({ procced: false }); + }); + + it.each([ + ["passive not learned", { learnedPassiveSpellIds: [] }], + ["non-CoA Probing Attack ID", { triggerSpellId: 491133 }], + ["missed attack", { attackLanded: false }], + ["wrong primary class", { classId: "rom-rogue" }], + ["wrong secondary class", { secondaryClassId: "rom-knight" }], + ["roll below range", { roll: -0.01 }], + ["roll at or above one", { roll: 1 }], + ["non-finite roll", { roll: Number.NaN }], + ] as const)("does not proc when %s", (_case, overrides) => { + expect(romCoaWarriorRogueExhaustionProc({ ...validInput, ...overrides })).toEqual({ + procced: false, + energy: 0, + rage: 0, + }); + }); +}); diff --git a/src/game/romWarriorRogueExhaustion.ts b/src/game/romWarriorRogueExhaustion.ts new file mode 100644 index 00000000..cb9942e3 --- /dev/null +++ b/src/game/romWarriorRogueExhaustion.ts @@ -0,0 +1,77 @@ +/** Current Chronicles of Arcadia Warrior/Rogue Exhaustion passive. */ +export const ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID = 493248; +/** CoA pair-specific Probing Attack; do not alias local Warrior Probing Attack 491133. */ +export const ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID = 493283; + +export const ROM_COA_WARRIOR_ROGUE_EXHAUSTION_PROC_CHANCE = 0.3; +export const ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ENERGY_RETURN = 25; +export const ROM_COA_WARRIOR_ROGUE_EXHAUSTION_RAGE_RETURN = 50; +export const ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_BASE_DPS_COEFFICIENT = 6.643; +export const ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_EMPOWERED_DPS_COEFFICIENT = 11.169; + +/** Current CoA's empowered Probing Attack needs the caster's Bleed, except with a 2-H Hammer. */ +export function romCoaWarriorRogueProbingAttackDpsCoefficient(input: { + readonly hasCasterOwnedBleed: boolean; + readonly equippedTwoHandHammer: boolean; +}): number { + return input.hasCasterOwnedBleed || input.equippedTwoHandHammer + ? ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_EMPOWERED_DPS_COEFFICIENT + : ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_BASE_DPS_COEFFICIENT; +} + +export interface RomCoaWarriorRogueExhaustionProcInput { + readonly classId: string; + readonly secondaryClassId: string | null | undefined; + readonly learnedPassiveSpellIds: readonly number[]; + /** Spell ID of the action that landed; only CoA pair Probing Attack 493283 qualifies. */ + readonly triggerSpellId: number; + readonly attackLanded: boolean; + /** Deterministic random sample in [0, 1); samples below 0.30 proc. */ + readonly roll: number; +} + +export interface RomCoaWarriorRogueExhaustionProcResult { + readonly procced: boolean; + readonly energy: number; + readonly rage: number; +} + +const NO_PROC: RomCoaWarriorRogueExhaustionProcResult = Object.freeze({ + procced: false, + energy: 0, + rage: 0, +}); + +const EXHAUSTION_PROC: RomCoaWarriorRogueExhaustionProcResult = Object.freeze({ + procced: true, + energy: ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ENERGY_RETURN, + rage: ROM_COA_WARRIOR_ROGUE_EXHAUSTION_RAGE_RETURN, +}); + +/** + * CoA's current Warrior/Rogue Exhaustion (493248) gives Probing Attack (493283) + * a 30% chance, on a landed hit, to restore 25 Energy and 50 Rage. The local + * generated catalog has only Warrior Probing Attack 491133; that ID is not + * treated as the pair-specific CoA trigger here. + * + * This pure helper deliberately does not roll randomness itself. Callers supply + * their seeded/deterministic sample so player and companion paths can replay + * the same combat state. Resource caps and event emission belong to integration. + * Source: https://chroniclesofarcadia.com/en/wiki/skills/list/1-3 + */ +export function romCoaWarriorRogueExhaustionProc( + input: RomCoaWarriorRogueExhaustionProcInput, +): RomCoaWarriorRogueExhaustionProcResult { + if (input.classId !== "rom-warrior" + || input.secondaryClassId !== "rom-rogue" + || !input.learnedPassiveSpellIds.includes(ROM_COA_WARRIOR_ROGUE_EXHAUSTION_ID) + || input.triggerSpellId !== ROM_COA_WARRIOR_ROGUE_PROBING_ATTACK_ID + || !input.attackLanded + || !Number.isFinite(input.roll) + || input.roll < 0 + || input.roll >= 1 + || input.roll >= ROM_COA_WARRIOR_ROGUE_EXHAUSTION_PROC_CHANCE) { + return NO_PROC; + } + return EXHAUSTION_PROC; +} diff --git a/src/game/talentModifiers.test.ts b/src/game/talentModifiers.test.ts index 82d365b0..f7803fa2 100644 --- a/src/game/talentModifiers.test.ts +++ b/src/game/talentModifiers.test.ts @@ -3,6 +3,7 @@ import { TALENT_NODES, allocateTalentPoint } from "./talentCatalog"; import { applyTalentModifierValue, parseTalentModifiers, + talentUsesExplicitActivation, talentModifiersForRanks, } from "./talentModifiers"; @@ -229,6 +230,60 @@ describe("talent runtime modifiers", () => { } }); + it("keeps Frost Warding's Ward and armor clauses out of global scalar modifiers", () => { + const frostWarding = TALENT_NODES.find((node) => node.id === "talent-70")!; + const rankTwoDescription = frostWarding.rankDescriptions[1]; + const parsed = parseTalentModifiers(rankTwoDescription); + expect(parsed).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: "armor-percent", amount: 50 }), + expect.objectContaining({ kind: "damage-taken-percent", amount: -50 }), + ])); + + const modifiers = talentModifiersForRanks({ [frostWarding.id]: 2 }, "mage"); + expect(modifiers).toEqual([]); + expect(applyTalentModifierValue(100, modifiers, "armor-percent")).toBe(100); + expect(applyTalentModifierValue(100, modifiers, "damage-taken-percent", { + tags: ["magic", "fire"], + })).toBe(100); + }); + + it("keeps Paladin Vengeance conditional and keyed separately from Druid Vengeance", () => { + const paladinVengeance = TALENT_NODES.find((node) => node.id === "talent-1402")!; + const druidVengeance = TALENT_NODES.find((node) => node.name === "Vengeance" && node.id !== paladinVengeance.id)!; + expect(talentUsesExplicitActivation(paladinVengeance.name, paladinVengeance.id)).toBe(true); + expect(talentUsesExplicitActivation(druidVengeance.name, druidVengeance.id)).toBe(false); + expect(talentModifiersForRanks({ [paladinVengeance.id]: 3 }, "paladin")).toEqual([]); + expect(talentModifiersForRanks({ [druidVengeance.id]: 1 }, "druid")).not.toContainEqual( + expect.objectContaining({ kind: "damage-percent", scope: "bonus to Holy damage" }), + ); + }); + + it("keeps Bestial Discipline pet Focus out of player resource scalars and scopes its Mana rider to Intimidation", () => { + const bestialDiscipline = TALENT_NODES.find((node) => node.id === "talent-1390")!; + expect(parseTalentModifiers(bestialDiscipline.rankDescriptions[0])).toEqual([ + expect.objectContaining({ + kind: "resource-cost-percent", + amount: -25, + scope: "the mana cost of your Intimidation", + }), + ]); + + const modifiers = talentModifiersForRanks({ [bestialDiscipline.id]: 2 }, "hunter"); + expect(modifiers).toHaveLength(1); + expect(modifiers[0]).toMatchObject({ kind: "resource-cost-percent", amount: -50 }); + expect(applyTalentModifierValue(100, modifiers, "resource-cost-percent", { abilityName: "Intimidation" })).toBe(50); + expect(applyTalentModifierValue(100, modifiers, "resource-cost-percent", { abilityName: "Arcane Shot" })).toBe(100); + expect(applyTalentModifierValue(5, modifiers, "resource-regeneration-percent")).toBe(5); + }); + + it("keeps Illumination's Light's Hammer rider with its critical-heal proc helper", () => { + const illumination = TALENT_NODES.find((node) => node.id === "talent-1461")!; + expect(parseTalentModifiers(illumination.rankDescriptions[0])).toContainEqual( + expect.objectContaining({ kind: "cooldown-flat-ms", amount: -5_000 }), + ); + expect(talentModifiersForRanks({ [illumination.id]: 1 }, "paladin")).toEqual([]); + }); + it("scopes Improved Flash Heal critical chance and keeps its Inner Focus proc out of static cooldowns", () => { const improvedFlashHeal = TALENT_NODES.find((node) => node.name === "Improved Flash Heal")!; const modifiers = talentModifiersForRanks({ [improvedFlashHeal.id]: 3 }, "priest"); diff --git a/src/game/talentModifiers.ts b/src/game/talentModifiers.ts index 8db2ea92..4a17bdd4 100644 --- a/src/game/talentModifiers.ts +++ b/src/game/talentModifiers.ts @@ -5,8 +5,18 @@ import { } from "./talentRuntimeCatalog"; import { talentBalanceOverride } from "./balanceTuning"; import { wow335MageFlameThrowingProfile } from "./wow335MageFlameThrowingRuntime"; +import { + WOW335_MAGE_IMPROVED_FIRE_BLAST_TALENT_ID, + wow335MageImprovedFireBlastCooldownReductionMs, + wow335MageImprovedFireBlastDamageBonusPercent, +} from "./wow335MageImprovedFireBlastRuntime"; import { wow335DruidTalentModifierOverrides } from "./wow335DruidTalentRuntime"; +import { WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID } from "./wow335DruidPredatoryInstinctsRuntime"; import { wow335ShamanConvectionModifiersForRank } from "./wow335ShamanTalentRuntime"; +import { + WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID, + wow335ShamanElementalWardingModifierForRank, +} from "./wow335ShamanElementalWardingRuntime"; export type TalentModifierKind = | "damage-percent" @@ -67,6 +77,9 @@ const EXPLICIT_ACTIVATION_TALENTS = new Set([ // Brain Freeze mixes a conditional next Fireball/Frostfire Bolt proc with // separate school and target riders; the proc bonus is applied at cast time. "Brain Freeze", + // Netherwind Presence haste exists only on eligible spell-triggered stacks; + // the helper/runtime applies that temporary state instead of parsing it as passive haste. + "Netherwind Presence", // Aura Mastery and Divine Favor carry scoped next-cast/aura effects. Their // activation tooltips must not be parsed as persistent global modifiers. "Aura Mastery", @@ -81,6 +94,9 @@ const EXPLICIT_ACTIVATION_TALENTS = new Set([ // These Shaman talents activate temporary effects from combat events; // their conditional percentages are applied by the Shaman runtime. "Elemental Focus", + // The melee/ranged critical-strike rider only exists after an elemental + // spell critical; the Shaman runtime applies it as a timed aura. + "Elemental Devastation", "Reverberation", "Maelstrom Weapon", // Tidal Waves only affects casts while its earned charge aura is active. @@ -90,12 +106,24 @@ const EXPLICIT_ACTIVATION_TALENTS = new Set([ "Convection", // Riptide's 25% rider only applies to the next Chain Heal on its HoT target. "Riptide", + // Frost Warding combines an armor/resistance modifier with a Ward-only + // damage proc. Both clauses need rank/aura/event scoping in its runtime. + "Frost Warding", + // Illumination's cooldown clause is paired with a critical-heal Mana proc; + // its exact rank behavior belongs to the dedicated event helper. + "Illumination", // Torment the Weak applies only to named damage spells and only against a // target that is currently slowed; its conditional part is target-aware. "Torment the Weak", // Feral Instinct has one named damage bonus plus two cast-state clauses; // only the named Swipe/Ravage clause is a persistent scalar modifier. "Feral Instinct", + // Master Shapeshifter has four separate form-specific bonuses; the active + // shapeshift decides which single clause the Druid runtime can apply. + "Master Shapeshifter", + // Paladin Vengeance is keyed by talent ID below because Druid has a distinct + // same-named talent with different behavior. + "talent-1402", ]); /** @@ -103,8 +131,9 @@ const EXPLICIT_ACTIVATION_TALENTS = new Set([ * as always-on scalar bonuses merely because their tooltip contains phrases * such as "reduces cast time" or "reducing mana cost". */ -export function talentUsesExplicitActivation(talentName: string): boolean { - return EXPLICIT_ACTIVATION_TALENTS.has(talentName); +export function talentUsesExplicitActivation(talentName: string, talentId?: string): boolean { + return EXPLICIT_ACTIVATION_TALENTS.has(talentName) + || (talentId !== undefined && EXPLICIT_ACTIVATION_TALENTS.has(talentId)); } /** @@ -209,10 +238,25 @@ export function talentModifiersForRanks(ranks: TalentRanks, classId?: ClassId): // by the Druid cast runtime. return wow335DruidTalentModifierOverrides(active.talentId, active.rank, active.description); } + if (classId === "druid" && active.talentId === WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID) { + // Both clauses are gated by Cat Form; the AoE rider also needs authored + // attack delivery metadata, so the generic scalar parser cannot apply them. + return []; + } // Elemental Oath's generated rank text repeats one crit bonus for the // owner and the party. CombatStore applies the rank once to each spell // attack/heal source, so the broad scalar parser must not apply it again. if (classId === "shaman" && active.talentId === "talent-2049") return []; + if (classId === "shaman" && active.talentId === WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID) { + const modifier = wow335ShamanElementalWardingModifierForRank(active.rank); + return modifier ? [{ + ...modifier, + sourceTalentId: active.talentId, + sourceTalentName: active.talentName, + rank: active.rank, + description: active.description, + }] : []; + } if (classId === "shaman" && active.talentId === "talent-564") { return wow335ShamanConvectionModifiersForRank(active.rank).map((modifier) => ({ ...modifier, @@ -235,6 +279,30 @@ export function talentModifiersForRanks(ranks: TalentRanks, classId?: ClassId): description: active.description, }] : []; } + if (classId === "mage" && active.talentId === WOW335_MAGE_IMPROVED_FIRE_BLAST_TALENT_ID) { + const cooldownReductionMs = wow335MageImprovedFireBlastCooldownReductionMs(active.rank, "Fire Blast"); + const damageBonusPercent = wow335MageImprovedFireBlastDamageBonusPercent(active.rank); + return [ + ...(cooldownReductionMs > 0 ? [{ + kind: "cooldown-flat-ms" as const, + amount: -cooldownReductionMs, + unit: "milliseconds" as const, + scope: "cooldown of your Fire Blast spell", + }] : []), + ...(damageBonusPercent > 0 ? [{ + kind: "damage-percent" as const, + amount: damageBonusPercent, + unit: "percent" as const, + scope: "damage of your Fire Blast", + }] : []), + ].map((modifier) => ({ + ...modifier, + sourceTalentId: active.talentId, + sourceTalentName: active.talentName, + rank: active.rank, + description: active.description, + })); + } // Molten Fury is active only while the individual target is below 35% // health. The target-health predicate is applied by the Mage damage path, // so keep its generated rank amount out of always-on scalar modifiers. @@ -265,7 +333,7 @@ export function talentModifiersForRanks(ranks: TalentRanks, classId?: ClassId): description: active.description, }]; } - if (talentUsesExplicitActivation(active.talentName)) return []; + if (talentUsesExplicitActivation(active.talentName, active.talentId)) return []; // Its healing and damage bonuses only apply below a target-health threshold; // the scalar parser cannot encode that condition. CombatStore applies the // rank-aware bonus at the individual target instead. @@ -381,6 +449,8 @@ function modifierApplies(modifier: TalentModifier, context: TalentModifierContex const scope = modifier.scope.toLowerCase(); const tags = new Set((context.tags ?? []).map((tag) => tag.toLowerCase())); if (scope.includes("damaging spell") && !tags.has("damage")) return false; + if (scope.includes("with a channeling or cast time") + && !tags.has("cast-time") && !tags.has("channel")) return false; if (scope.includes("instant") && !tags.has("instant")) return false; const coversDirectAndPeriodic = /\bdirect and periodic\b/.test(scope); if (scope.includes("periodic") && !coversDirectAndPeriodic && !tags.has("periodic")) return false; diff --git a/src/game/wow335AbilityCatalog.test.ts b/src/game/wow335AbilityCatalog.test.ts index c012501f..ff7cb470 100644 --- a/src/game/wow335AbilityCatalog.test.ts +++ b/src/game/wow335AbilityCatalog.test.ts @@ -27,6 +27,17 @@ function effectsOfKind( } describe("WoW 3.3.5 executable effect mapping", () => { + it("resolves tooltip tokens that explicitly reference another DBC spell", () => { + const chains = Object.values(generatedData.classes).flat(); + const dancingRuneWeapon = chains.find((chain) => chain.name === "Dancing Rune Weapon"); + const beaconOfLight = chains.find((chain) => chain.name === "Beacon of Light"); + const livingBomb = chains.find((chain) => chain.name === "Living Bomb"); + + expect(dancingRuneWeapon?.ranks[0]?.description).toContain("50% reduced damage"); + expect(beaconOfLight?.ranks.every((rank) => rank.description.includes("100% of the amount healed"))).toBe(true); + expect(livingBomb?.ranks.find((rank) => rank.spellId === 55_359)?.description).toContain("512 Fire damage"); + }); + it("uses the same legal talent-node set as the full catalog", () => { const talentNodeIds = new Set(Object.values(generatedData.classes) .flatMap((chains) => chains.flatMap((chain) => chain.talentNodeId ? [chain.talentNodeId] : []))); @@ -586,10 +597,15 @@ describe("WoW 3.3.5 executable effect mapping", () => { .toEqual(expect.arrayContaining([expect.objectContaining({ stat: "incoming-ranged-hit", value: -25 })])); }); - it("keeps Blink's root and stun breaks without inventing target-relative teleport movement", () => { + it("maps Blink to a 20-yard forward teleport while keeping its root and stun breaks", () => { const blink = byId("wow335-mage-blink"); expect(blink.dbcSpellId).toBe(1953); - expect(effectsOfKind(blink, "movement")).toEqual([]); + expect(effectsOfKind(blink, "movement")).toEqual([{ + kind: "movement", + movement: "teleport", + toward: "destination", + distance: 20, + }]); expect(effectsOfKind(blink, "apply-aura").map((effect) => effect.aura.controlImmunities)) .toEqual([["stun"], ["root"]]); }); diff --git a/src/game/wow335AbilityCatalog.ts b/src/game/wow335AbilityCatalog.ts index 1ebbadcb..ba01d2a2 100644 --- a/src/game/wow335AbilityCatalog.ts +++ b/src/game/wow335AbilityCatalog.ts @@ -21,6 +21,12 @@ import type { } from "./combatAuras"; import generatedData from "./wow335AbilityData.generated.json"; import { playerCombatPower } from "./progression"; +import { + WOW335_HUNTER_PET_KILL_COMMAND_COOLDOWN_MS, + WOW335_HUNTER_PET_KILL_COMMAND_DURATION_MS, + WOW335_HUNTER_PET_KILL_COMMAND_SPECIAL_CHARGES, + WOW335_HUNTER_PET_KILL_COMMAND_TAG, +} from "./wow335HunterPetRuntime"; import { ROGUE_DEADLY_POISON_DOSE_TAG, ROGUE_ENVENOM_BUFF_TAG, @@ -37,6 +43,7 @@ import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; export const BASE_CLASS_STARTER_SOURCE_LEVEL = 10; interface Wow335Effect { + readonly index: number; readonly effectType: number; readonly auraType: number; readonly basePoints: number; @@ -831,6 +838,12 @@ function classScriptEffects( triggerSpellId: 0, }); switch (`${classId}:${abilityName}`) { + case "mage:Blink": return [{ + kind: "movement", + movement: "teleport", + toward: "destination", + distance: rank.effects.find((effect) => effect.effectType === 29)?.radius ?? 0, + }]; case "paladin:Redemption": return [{ kind: "resurrection", percentMaxHealth: 0, @@ -1008,14 +1021,13 @@ function classScriptEffects( aura: { id: `wow335:${rank.spellId}:kill-command`, name: abilityName, - description: rank.description, + description: "Increases your pet's damage from special attacks by 60% for 30 seconds. Each special attack reduces the bonus by 20%.", disposition: "buff", - durationMs: rank.durationMs, + durationMs: WOW335_HUNTER_PET_KILL_COMMAND_DURATION_MS, + maxStacks: WOW335_HUNTER_PET_KILL_COMMAND_SPECIAL_CHARGES, + initialStacks: WOW335_HUNTER_PET_KILL_COMMAND_SPECIAL_CHARGES, stackBehavior: "replace", - utilityTags: ["wow335-hunter-kill-command"], - // The generated row omits the starting damage bonus; leave the pet - // special-attack rider inert until that value and a special-hit event - // are both represented by the runtime. + utilityTags: [WOW335_HUNTER_PET_KILL_COMMAND_TAG], }, sourceEffectType: 6, sourceAuraType: 4, @@ -1712,6 +1724,9 @@ function effectsForRank(classId: BaseClassId, rank: Wow335Rank, abilityName: str ...(classId === "hunter" && abilityName === "Bestial Wrath" && effect.implicitTargetA === 5 ? { recipient: "pet" as const } : {}), + ...(classId === "hunter" && abilityName === "Mend Pet" + ? { recipient: "pet" as const } + : {}), ...(effect.implicitTargetA === 1 ? { recipient: "caster" as const } : {}), ...([35, 65].includes(effect.effectType) || (classId === "warrior" @@ -1735,7 +1750,14 @@ function effectsForRank(classId: BaseClassId, rank: Wow335Rank, abilityName: str effects.push({ kind: "dot", coefficient, ...scaling, ticks, intervalMs: effect.periodMs, tag: `spell-${rank.spellId}` }); } else if (effect.auraType === 8 && effect.periodMs > 0) { const ticks = Math.max(1, Math.round(Math.max(effect.periodMs, rank.durationMs) / effect.periodMs)); - effects.push({ kind: "hot", coefficient, ...scaling, ticks, intervalMs: effect.periodMs }); + effects.push({ + kind: "hot", + coefficient, + ...scaling, + ticks, + intervalMs: effect.periodMs, + ...(classId === "hunter" && abilityName === "Mend Pet" ? { recipient: "pet" as const } : {}), + }); } else if (effect.auraType === 11) { effects.push({ kind: "taunt", durationMs: Math.max(3_000, rank.durationMs) }); } else if (effect.auraType === 20 && effect.periodMs > 0) { @@ -2056,8 +2078,8 @@ function effectsForRank(classId: BaseClassId, rank: Wow335Rank, abilityName: str || (classId === "death-knight" && abilityName === "Anti-Magic Zone" && effect.kind === "summon") || (classId === "death-knight" && ["Anti-Magic Shell", "Bone Shield", "Deathchill"].includes(abilityName) && effect.kind === "apply-aura") - // Blink's DBC teleport is forward, but the combat state has no player - // facing vector. Do not approximate it with a target-relative movement. + // Its DBC effect is converted into an explicit class fallback below so + // the source row's forward movement distance stays attached to the spell. || (classId === "mage" && abilityName === "Blink" && effect.kind === "movement") )) .map((effect) => effect.kind === "utility" ? effect : effect); @@ -2181,6 +2203,8 @@ function rankDefinition( level: gameplaySourceLevel(classId, rank.level), description: classId === "death-knight" && abilityName === "Anti-Magic Zone" ? "Creates a stationary 10-yard zone for 10 seconds. Party members inside it absorb 75% of incoming magic damage, up to 10000 plus twice your attack power." + : classId === "hunter" && abilityName === "Kill Command" + ? "Give the command to kill, increasing your pet's damage from special attacks by 60% for 30 seconds. Each special attack done by the pet reduces the damage bonus by 20%." : rank.description, castMode: channeling ? "channel" : rank.castTimeMs > 0 ? "cast" : "instant", castTimeMs, @@ -2189,7 +2213,9 @@ function rankDefinition( ? { channelPulses: Math.max(1, Math.round(castTimeMs / channelTickMs) + (penance ? 1 : 0)) } : {}), ...(penance ? { channelStartsWithPulse: true } : {}), - cooldownMs: classId === "shaman" && abilityName === "Nature's Swiftness" + cooldownMs: classId === "hunter" && abilityName === "Kill Command" + ? WOW335_HUNTER_PET_KILL_COMMAND_COOLDOWN_MS + : classId === "shaman" && abilityName === "Nature's Swiftness" ? Math.max(180_000, rank.cooldownMs) : rank.cooldownMs, gcdMs: rank.gcdMs, @@ -2281,8 +2307,59 @@ function abilityDefinition(classId: BaseClassId, chain: Wow335Chain): AbilityDef const soulLinkTalentTooltip = classId === "warlock" && chain.name === "Soul Link" ? WOW335_TALENT_NODES.find((node) => node.id === chain.talentNodeId)?.rankDescriptions[0] : undefined; - const ranks = castRanks.map((rank, index) => rankDefinition(classId, resource, rank, index, chain.name)) - .map((rank) => soulLinkTalentTooltip ? { ...rank, description: soulLinkTalentTooltip } : rank); + const focusMagicTalent = classId === "mage" && chain.name === "Focus Magic" + ? WOW335_TALENT_NODES.find((node) => node.id === chain.talentNodeId) + : undefined; + const hysteriaTalent = classId === "death-knight" && chain.name === "Hysteria" + ? WOW335_TALENT_NODES.find((node) => node.id === chain.talentNodeId) + : undefined; + const auraMasteryTalent = classId === "paladin" && chain.name === "Aura Mastery" + ? WOW335_TALENT_NODES.find((node) => (node.rankSpellIds as readonly number[]).includes(31821)) + : undefined; + const focusMagicRankSpellIds = (focusMagicTalent?.rankSpellIds ?? []) as readonly number[]; + const focusMagicTalentEffect = focusMagicTalent?.rankEffects[0]?.effects.find((effect) => ( + effect.index === 0 && effect.auraType === 57 + )); + const focusMagicTalentTooltip = focusMagicTalent?.rankDescriptions[0]; + const hysteriaTalentTooltip = hysteriaTalent?.rankDescriptions[0]; + const auraMasteryTalentTooltip = auraMasteryTalent?.rankDescriptions[0]; + const ranks = castRanks.map((rank, index) => { + // Focus Magic's current Area-52 talent row is generated from patch-D and + // gives the recipient +1% spell crit. The separate enUS Spell.dbc import + // conflicts at +3%, so use the current talent DBC effect and tooltip for + // the runtime ability. + const auraMasteryRank = auraMasteryTalentTooltip && rank.spellId === 31821 + ? { ...rank, durationMs: 6_000, description: auraMasteryTalentTooltip } + : rank; + const hysteriaTalentRank = hysteriaTalent?.rankEffects.find((talentRank) => talentRank.spellId === rank.spellId); + const resolvedRank = focusMagicTalentEffect + && focusMagicRankSpellIds.includes(rank.spellId) + ? { + ...auraMasteryRank, + effects: auraMasteryRank.effects.map((effect) => effect.effectType === focusMagicTalentEffect.effectType + && effect.auraType === focusMagicTalentEffect.auraType + ? { ...effect, basePoints: focusMagicTalentEffect.basePoints } + : effect), + } + // Hysteria's active ability row is also a talent. Keep it on the current + // Area-52 talent DBC's 15% value instead of the separate stock enUS row. + : hysteriaTalentRank + ? { + ...auraMasteryRank, + effects: auraMasteryRank.effects.map((effect) => { + const talentEffect = hysteriaTalentRank.effects.find((candidate) => candidate.index === effect.index); + return talentEffect ? { ...effect, basePoints: talentEffect.basePoints } : effect; + }), + } + : auraMasteryRank; + return rankDefinition(classId, resource, resolvedRank, index, chain.name); + }).map((rank) => { + const talentTooltip = soulLinkTalentTooltip + ?? focusMagicTalentTooltip + ?? hysteriaTalentTooltip + ?? auraMasteryTalentTooltip; + return talentTooltip ? { ...rank, description: talentTooltip } : rank; + }); const first = ranks[0]; const firstRaw = castRanks[0]; if (!first || !firstRaw) return null; diff --git a/src/game/wow335AbilityData.generated.json b/src/game/wow335AbilityData.generated.json index 595a26df..34e2c2a8 100644 --- a/src/game/wow335AbilityData.generated.json +++ b/src/game/wow335AbilityData.generated.json @@ -1 +1 @@ -{"source":{"product":"World of Warcraft","build":"3.3.5a.12340","archive":"../wow335a/Data/enUS/patch-enUS.MPQ","spellTableRecords":46583,"generatedAt":"2026-09-27T00:12:04.167Z"},"classes":{"warrior":[{"id":"wow335-warrior-battle-shout","name":"Battle Shout","iconBasename":"ability_warrior_battleshout","iconPath":"/assets/ui/spells/ability_warrior_battleshout.png","sourceUnlockLevel":1,"ranks":[{"spellId":6673,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":11,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 15. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":15,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":15,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5242,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":21,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 35. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":35,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":35,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6192,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":31,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 55. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":55,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":55,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11549,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":41,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 85. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":85,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":85,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11550,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":51,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 130. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":130,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":130,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11551,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":61,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 185. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":185,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":185,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25289,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":68,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 232. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":232,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":232,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2048,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":76,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 305. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":305,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":305,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47436,"rank":9,"level":78,"sourceLevel":78,"maxScalingLevel":85,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 548. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":548,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":548,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-battle-stance","name":"Battle Stance","iconBasename":"ability_warrior_offensivestance","iconPath":"/assets/ui/spells/ability_warrior_offensivestance.png","sourceUnlockLevel":1,"ranks":[{"spellId":2457,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"A balanced combat stance that increases the armor penetration of all of your attacks by 10%.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":280,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-execute","name":"Execute","iconBasename":"inv_sword_48","iconPath":"/assets/ui/spells/inv_sword_48.png","sourceUnlockLevel":1,"ranks":[{"spellId":5308,"rank":1,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":93,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20658,"rank":2,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":159,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20660,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":282,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20661,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":404,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20662,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":554,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25234,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":687,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25236,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":865,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47470,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1142,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47471,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1456,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20647,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing damage and converting each extra point of rage into additional damage. Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":1,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-heroic-strike","name":"Heroic Strike","iconBasename":"ability_rogue_ambush","iconPath":"/assets/ui/spells/ability_rogue_ambush.png","sourceUnlockLevel":1,"ranks":[{"spellId":78,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 11 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":11,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":284,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 21 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":285,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 32 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":1608,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 44 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":44,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11564,"rank":5,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 60 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11565,"rank":6,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 93 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":93,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11566,"rank":7,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 136 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":136,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11567,"rank":8,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 178 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":178,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25286,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 201 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":201,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":29707,"rank":10,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 234 and causes a high amount of threat. Causes the listed amount additional damage against Dazed targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":234,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":30324,"rank":11,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 317 and causes a high amount of threat. Causes the listed amount additional damage against Dazed targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":317,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47449,"rank":12,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 432 and causes a high amount of threat. Causes the listed amount additional damage against Dazed targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":432,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47450,"rank":13,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 495 and causes a high amount of threat. Causes the listed amount additional damage against Dazed targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":495,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-sweeping-strikes","name":"Sweeping Strikes","iconBasename":"ability_rogue_slicedice","iconPath":"/assets/ui/spells/ability_rogue_slicedice.png","sourceUnlockLevel":1,"talentNodeId":"talent-133","ranks":[{"spellId":12723,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Your next melee weapon swing strikes an additional nearby opponent.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26654,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Your next melee weapon swing strikes an additional nearby opponent.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":12328,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Your next the listed amount melee attacks strike an additional nearby opponent.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-charge","name":"Charge","iconBasename":"ability_warrior_charge","iconPath":"/assets/ui/spells/ability_warrior_charge.png","sourceUnlockLevel":4,"ranks":[{"spellId":100,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Charge an enemy, generate the listed amount rage, and stun it for the listed duration. Cannot be used in combat.","castTimeMs":0,"cooldownMs":15000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7922,"coefficient":1}]},{"spellId":6178,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Charge an enemy, generate the listed amount rage, and stun it for the listed duration. Cannot be used in combat.","castTimeMs":0,"cooldownMs":15000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7922,"coefficient":1}]},{"spellId":11578,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Charge an enemy, generate the listed amount rage, and stun it for the listed duration. Cannot be used in combat.","castTimeMs":0,"cooldownMs":15000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7922,"coefficient":1}]}]},{"id":"wow335-warrior-rend","name":"Rend","iconBasename":"ability_gouge","iconPath":"/assets/ui/spells/ability_gouge.png","sourceUnlockLevel":4,"ranks":[{"spellId":772,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((5WB+5wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6546,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((8WB+8wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6547,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((10WB+10wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6548,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((14WB+14wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11572,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((23WB+23wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":23,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11573,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((30WB+30wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11574,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((37WB+37wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25208,"rank":8,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((43WB+43wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":46845,"rank":9,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((63WB+63wb)/2+the listed amount)} (based on weapon damage) over 15 sec. If used while your target is above 75% health, Rend does 35% more damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":63,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47465,"rank":10,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((76WB+76wb)/2+the listed amount)} (based on weapon damage) over 15 sec. If used while your target is above 75% health, Rend does 35% more damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":76,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-thunder-clap","name":"Thunder Clap","iconBasename":"spell_nature_thunderclap","iconPath":"/assets/ui/spells/spell_nature_thunderclap.png","sourceUnlockLevel":6,"ranks":[{"spellId":6343,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 10 sec and doing 15 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8198,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 14 sec and doing 34 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":14000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":34,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8204,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 18 sec and doing 55 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8205,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 22 sec and doing 82 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":22000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":82,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11580,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 26 sec and doing 123 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":26000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11581,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 30 sec and doing 154 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":154,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25264,"rank":7,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 30 sec and doing 184 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":184,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47501,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 30 sec and doing 247 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":247,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47502,"rank":9,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 30 sec and doing 300 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-hamstring","name":"Hamstring","iconBasename":"ability_shockwave","iconPath":"/assets/ui/spells/ability_shockwave.png","sourceUnlockLevel":8,"ranks":[{"spellId":1715,"rank":0,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Maims the enemy, reducing movement speed by 50% for 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-bloodrage","name":"Bloodrage","iconBasename":"ability_racial_bloodrage","iconPath":"/assets/ui/spells/ability_racial_bloodrage.png","sourceUnlockLevel":10,"ranks":[{"spellId":2687,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Generates the listed amount rage at the cost of health, and then generates an additional the listed amount rage over the listed duration.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":30,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29131,"coefficient":0}]}]},{"id":"wow335-warrior-defensive-stance","name":"Defensive Stance","iconBasename":"ability_warrior_defensivestance","iconPath":"/assets/ui/spells/ability_warrior_defensivestance.png","sourceUnlockLevel":10,"ranks":[{"spellId":71,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"A defensive combat stance. Decreases damage taken by 0% and damage caused by the listed amount%. Increases threat generated.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-sunder-armor","name":"Sunder Armor","iconBasename":"ability_warrior_sunder","iconPath":"/assets/ui/spells/ability_warrior_sunder.png","sourceUnlockLevel":10,"ranks":[{"spellId":7386,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Sunders the target's armor, reducing it by 4% per Sunder Armor and causes a high amount of threat. Threat increased by attack power. Can be applied up to 5 times. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":-4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":58567,"coefficient":0}]}]},{"id":"wow335-warrior-taunt","name":"Taunt","iconBasename":"spell_nature_reincarnation","iconPath":"/assets/ui/spells/spell_nature_reincarnation.png","sourceUnlockLevel":10,"ranks":[{"spellId":355,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Taunts the target to attack you, but has no effect if the target is already attacking you.","castTimeMs":0,"cooldownMs":8000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":114,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":11,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-overpower","name":"Overpower","iconBasename":"ability_meleedamage","iconPath":"/assets/ui/spells/ability_meleedamage.png","sourceUnlockLevel":12,"ranks":[{"spellId":7384,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Instantly overpower the enemy, causing weapon damage. Only useable after the target dodges. The Overpower cannot be blocked, dodged or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":1,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-shield-bash","name":"Shield Bash","iconBasename":"ability_warrior_shieldbash","iconPath":"/assets/ui/spells/ability_warrior_shieldbash.png","sourceUnlockLevel":12,"ranks":[{"spellId":72,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Bash the target with your shield dazing them and interrupting spellcasting, which prevents any spell in that school from being cast for 6 sec.","castTimeMs":0,"cooldownMs":12000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29703,"coefficient":0}]}]},{"id":"wow335-warrior-demoralizing-shout","name":"Demoralizing Shout","iconBasename":"ability_warrior_warcry","iconPath":"/assets/ui/spells/ability_warrior_warcry.png","sourceUnlockLevel":14,"ranks":[{"spellId":1160,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":24,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 35 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-35,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6190,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":34,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 55 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-55,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11554,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":44,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 70 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-70,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11555,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":54,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 105 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-105,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11556,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":64,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 140 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-140,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25202,"rank":6,"level":62,"sourceLevel":62,"maxScalingLevel":70,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 220 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-220,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25203,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":78,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 300 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-300,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47437,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":87,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 410 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-410,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-revenge","name":"Revenge","iconBasename":"ability_warrior_revenge","iconPath":"/assets/ui/spells/ability_warrior_revenge.png","sourceUnlockLevel":14,"ranks":[{"spellId":6572,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":89,"dieSides":19,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6574,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":129,"dieSides":29,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":7379,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":175,"dieSides":39,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11600,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":320,"dieSides":71,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11601,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":498,"dieSides":111,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25288,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":643,"dieSides":143,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25269,"rank":7,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":699,"dieSides":155,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":30357,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":855,"dieSides":191,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":57823,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1454,"dieSides":323,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-mocking-blow","name":"Mocking Blow","iconBasename":"ability_warrior_punishingblow","iconPath":"/assets/ui/spells/ability_warrior_punishingblow.png","sourceUnlockLevel":16,"ranks":[{"spellId":694,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"A mocking attack that causes weapon damage, a moderate amount of threat and forces the target to focus attacks on you for 6 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":11,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":114,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-shield-block","name":"Shield Block","iconBasename":"ability_defend","iconPath":"/assets/ui/spells/ability_defend.png","sourceUnlockLevel":16,"ranks":[{"spellId":2565,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Increases your chance to block and block value by 100% for 10 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":150,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-disarm","name":"Disarm","iconBasename":"ability_warrior_disarm","iconPath":"/assets/ui/spells/ability_warrior_disarm.png","sourceUnlockLevel":18,"ranks":[{"spellId":676,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Disarm the enemy's main hand and ranged weapons for 10 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":67,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":278,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-cleave","name":"Cleave","iconBasename":"ability_warrior_cleave","iconPath":"/assets/ui/spells/ability_warrior_cleave.png","sourceUnlockLevel":20,"ranks":[{"spellId":845,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 15 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":7369,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 30 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11608,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 50 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11609,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 70 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20569,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 95 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":95,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25231,"rank":6,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 135 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":135,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47519,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 189 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":189,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47520,"rank":8,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 222 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":222,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-last-stand","name":"Last Stand","iconBasename":"spell_holy_ashestoashes","iconPath":"/assets/ui/spells/spell_holy_ashestoashes.png","sourceUnlockLevel":20,"talentNodeId":"talent-153","ranks":[{"spellId":12975,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"When activated, this ability temporarily grants you 30% of your maximum health for the listed duration. After the effect expires, the health is lost.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-piercing-howl","name":"Piercing Howl","iconBasename":"spell_shadow_deathscream","iconPath":"/assets/ui/spells/spell_shadow_deathscream.png","sourceUnlockLevel":20,"talentNodeId":"talent-160","ranks":[{"spellId":12323,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Causes all enemies within the listed amount yards to be Dazed, reducing movement speed by 50% for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-retaliation","name":"Retaliation","iconBasename":"ability_warrior_challange","iconPath":"/assets/ui/spells/ability_warrior_challange.png","sourceUnlockLevel":20,"ranks":[{"spellId":20230,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Instantly counterattack any enemy that strikes you in melee for 12 sec. Melee attacks made from behind cannot be counterattacked. A maximum of the listed amount attacks will cause retaliation.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-intimidating-shout","name":"Intimidating Shout","iconBasename":"ability_golemthunderclap","iconPath":"/assets/ui/spells/ability_golemthunderclap.png","sourceUnlockLevel":22,"ranks":[{"spellId":5246,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"The warrior shouts, causing up to the listed amount enemies within the listed amount yards to cower in fear. The targeted enemy will be unable to move while cowering. Lasts 8 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":1,"powerCost":250,"powerCostPercentage":0,"rangeIndex":137,"rangeMin":0,"rangeMax":8,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20511,"coefficient":1},{"index":1,"effectType":6,"auraType":7,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-challenging-shout","name":"Challenging Shout","iconBasename":"ability_bullrush","iconPath":"/assets/ui/spells/ability_bullrush.png","sourceUnlockLevel":26,"ranks":[{"spellId":1161,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Forces all enemies within the listed amount yards to focus attacks on you for 6 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":11,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-shield-wall","name":"Shield Wall","iconBasename":"ability_warrior_shieldwall","iconPath":"/assets/ui/spells/ability_warrior_shieldwall.png","sourceUnlockLevel":28,"ranks":[{"spellId":871,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Reduces all damage taken by 60% for 12 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":0,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":87,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-berserker-stance","name":"Berserker Stance","iconBasename":"ability_racial_avatar","iconPath":"/assets/ui/spells/ability_racial_avatar.png","sourceUnlockLevel":30,"ranks":[{"spellId":2458,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"An aggressive stance. Critical hit chance is increased by 0% and all damage taken is increased by the listed amount%.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":19,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-concussion-blow","name":"Concussion Blow","iconBasename":"ability_thunderbolt","iconPath":"/assets/ui/spells/ability_thunderbolt.png","sourceUnlockLevel":30,"talentNodeId":"talent-152","ranks":[{"spellId":12809,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Stuns the opponent for 5 sec and deals the listed amountthe listed amount damage (based on attack power).","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-death-wish","name":"Death Wish","iconBasename":"spell_shadow_deathpact","iconPath":"/assets/ui/spells/spell_shadow_deathpact.png","sourceUnlockLevel":30,"talentNodeId":"talent-165","ranks":[{"spellId":12292,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"When activated you become enraged, increasing your physical damage by 20% but increasing all damage taken by 5%. Lasts 30 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-intercept","name":"Intercept","iconBasename":"ability_rogue_sprint","iconPath":"/assets/ui/spells/ability_rogue_sprint.png","sourceUnlockLevel":30,"ranks":[{"spellId":20252,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Charge an enemy, causing the listed amountthe listed amount damage (based on attack power) and stunning it for the listed duration.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20253,"coefficient":1}]}]},{"id":"wow335-warrior-slam","name":"Slam","iconBasename":"ability_warrior_decisivestrike","iconPath":"/assets/ui/spells/ability_warrior_decisivestrike.png","sourceUnlockLevel":30,"ranks":[{"spellId":1464,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 32.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8820,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 43.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11604,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 68.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":68,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11605,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 87.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25241,"rank":5,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 105.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25242,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 140.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47474,"rank":7,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 220.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":220,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47475,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 250.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-berserker-rage","name":"Berserker Rage","iconBasename":"spell_nature_ancestralguardian","iconPath":"/assets/ui/spells/spell_nature_ancestralguardian.png","sourceUnlockLevel":32,"ranks":[{"spellId":18499,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"The warrior enters a berserker rage, removing and granting immunity to Fear, Sap and Incapacitate effects and generating extra rage when taking damage. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-whirlwind","name":"Whirlwind","iconBasename":"ability_whirlwind","iconPath":"/assets/ui/spells/ability_whirlwind.png","sourceUnlockLevel":36,"ranks":[{"spellId":1680,"rank":0,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"In a whirlwind of steel you attack up to the listed amount enemies within the listed amount yards, causing weapon damage from both melee weapons to each enemy.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":250,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":44949,"coefficient":0}]}]},{"id":"wow335-warrior-pummel","name":"Pummel","iconBasename":"inv_gauntlets_04","iconPath":"/assets/ui/spells/inv_gauntlets_04.png","sourceUnlockLevel":38,"ranks":[{"spellId":6552,"rank":0,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Pummel the target, interrupting spellcasting and preventing any spell in that school from being cast for 4 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":4000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-bloodthirst","name":"Bloodthirst","iconBasename":"spell_nature_bloodlust","iconPath":"/assets/ui/spells/spell_nature_bloodlust.png","sourceUnlockLevel":40,"talentNodeId":"talent-167","ranks":[{"spellId":23880,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":23881,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack the target causing the listed amountthe listed amount damage. In addition, the next the listed amount successful melee attacks will restore 1% of max health. This effect lasts the listed duration. Damage is based on your attack power.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":23885,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack the target causing the listed amountthe listed amount damage. In addition, the next the listed amount successful melee attacks will restore the listed amount% of max health. This effect lasts 8 sec. Damage is based on your attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":23880,"coefficient":1}]}]},{"id":"wow335-warrior-mortal-strike","name":"Mortal Strike","iconBasename":"ability_warrior_savageblow","iconPath":"/assets/ui/spells/ability_warrior_savageblow.png","sourceUnlockLevel":40,"talentNodeId":"talent-135","ranks":[{"spellId":12294,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 85 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":21551,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 110 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":21552,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 135 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":135,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":21553,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 160 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":160,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25248,"rank":5,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 185 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":30330,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 210 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":210,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47485,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 320 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":320,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47486,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 380 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":380,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-shield-slam","name":"Shield Slam","iconBasename":"inv_shield_05","iconPath":"/assets/ui/spells/inv_shield_05.png","sourceUnlockLevel":40,"ranks":[{"spellId":23922,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 308 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":294,"dieSides":15,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":23923,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 362 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":346,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":23924,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 416 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":396,"dieSides":21,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":23925,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 469 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":447,"dieSides":23,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25258,"rank":5,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 523 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":499,"dieSides":25,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":30356,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 577 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":549,"dieSides":29,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47487,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 879 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":837,"dieSides":43,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47488,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 1040 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":990,"dieSides":51,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-vigilance","name":"Vigilance","iconBasename":"ability_warrior_vigilance","iconPath":"/assets/ui/spells/ability_warrior_vigilance.png","sourceUnlockLevel":40,"talentNodeId":"talent-148","ranks":[{"spellId":50720,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Focus your protective gaze on a group or raid target, reducing their damage taken by 3% and transfers 10% of the threat they cause to you. In addition, each time they are hit by an attack your Taunt cooldown is refreshed. Lasts 1800 sec. This effect can only be on one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50725,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-devastate","name":"Devastate","iconBasename":"inv_sword_11","iconPath":"/assets/ui/spells/inv_sword_11.png","sourceUnlockLevel":50,"talentNodeId":"talent-1666","ranks":[{"spellId":20243,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 48 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":48,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30016,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 80 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30022,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 112 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":112,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47497,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 170 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47498,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 202 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":202,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-heroic-fury","name":"Heroic Fury","iconBasename":"ability_heroicleap","iconPath":"/assets/ui/spells/ability_heroicleap.png","sourceUnlockLevel":50,"talentNodeId":"talent-1868","ranks":[{"spellId":60970,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Removes any Immobilization effects and refreshes the cooldown of your Intercept ability.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":100,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-recklessness","name":"Recklessness","iconBasename":"ability_criticalstrike","iconPath":"/assets/ui/spells/ability_criticalstrike.png","sourceUnlockLevel":50,"ranks":[{"spellId":1719,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Your next the listed amount special ability attacks have an additional 100% to critically hit but all damage taken is increased by 20%. Lasts 12 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-bladestorm","name":"Bladestorm","iconBasename":"ability_warrior_bladestorm","iconPath":"/assets/ui/spells/ability_warrior_bladestorm.png","sourceUnlockLevel":60,"talentNodeId":"talent-1863","ranks":[{"spellId":46924,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Instantly Whirlwind up to the listed amount nearby targets and for the next 6 sec you will perform a whirlwind attack every 1 sec. While under the effects of Bladestorm, you can move but cannot perform any other abilities but you do not feel pity or remorse or fear and you cannot be stopped unless killed.","castTimeMs":0,"cooldownMs":90000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":250,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":50622,"coefficient":0},{"index":1,"effectType":6,"auraType":147,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1733,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":263,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-shockwave","name":"Shockwave","iconBasename":"ability_warrior_shockwave","iconPath":"/assets/ui/spells/ability_warrior_shockwave.png","sourceUnlockLevel":60,"talentNodeId":"talent-1872","ranks":[{"spellId":46968,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Sends a wave of force in front of the warrior, causing the listed amountthe listed amount damage (based on attack power) and stunning all enemy targets within the listed amount yards in a frontal cone for 4 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-victory-rush","name":"Victory Rush","iconBasename":"ability_warrior_devastate","iconPath":"/assets/ui/spells/ability_warrior_devastate.png","sourceUnlockLevel":62,"ranks":[{"spellId":34428,"rank":0,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Instantly attack the target causing the listed amountthe listed amount damage. Can only be used within the listed duration after you kill an enemy that yields experience or honor. Damage is based on your attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-spell-reflection","name":"Spell Reflection","iconBasename":"ability_warrior_shieldreflection","iconPath":"/assets/ui/spells/ability_warrior_shieldreflection.png","sourceUnlockLevel":64,"ranks":[{"spellId":23920,"rank":0,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Raise your shield, reflecting the next spell cast on you. Lasts 5 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":5000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":28,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-commanding-shout","name":"Commanding Shout","iconBasename":"ability_warrior_rallyingcry","iconPath":"/assets/ui/spells/ability_warrior_rallyingcry.png","sourceUnlockLevel":68,"ranks":[{"spellId":469,"rank":1,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Increases maximum health of all party and raid members within the listed amount yards by 1080. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":230,"basePoints":1080,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47439,"rank":2,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Increases maximum health of all party and raid members within the listed amount yards by 1855. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":230,"basePoints":1855,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47440,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Increases maximum health of all party and raid members within the listed amount yards by 2255. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":230,"basePoints":2255,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-intervene","name":"Intervene","iconBasename":"ability_warrior_victoryrush","iconPath":"/assets/ui/spells/ability_warrior_victoryrush.png","sourceUnlockLevel":70,"ranks":[{"spellId":3411,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Run at high speed towards a party member, intercepting the next melee or ranged attack made against them as well as reducing their total threat by 0%.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":111,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-shattering-throw","name":"Shattering Throw","iconBasename":"ability_warrior_shatteringthrow","iconPath":"/assets/ui/spells/ability_warrior_shatteringthrow.png","sourceUnlockLevel":71,"ranks":[{"spellId":64380,"rank":0,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Throws your weapon at the enemy causing the listed amountthe listed amount damage (based on attack power), reducing the armor on the target by the listed amount% for the listed duration or removing any invulnerabilities.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":64382,"rank":0,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Throws your weapon at the enemy causing the listed amountthe listed amount damage (based on attack power), reducing the armor on the target by 20% for 10 sec or removing any invulnerabilities.","castTimeMs":1500,"cooldownMs":300000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":250,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-enraged-regeneration","name":"Enraged Regeneration","iconBasename":"ability_warrior_focusedrage","iconPath":"/assets/ui/spells/ability_warrior_focusedrage.png","sourceUnlockLevel":75,"ranks":[{"spellId":55694,"rank":0,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"You regenerate the listed amount% of your total health over 10 sec. This ability requires an Enrage effect, consumes all Enrage effects and prevents any from affecting you for the full duration.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":20,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-heroic-throw","name":"Heroic Throw","iconBasename":"inv_axe_66","iconPath":"/assets/ui/spells/inv_axe_66.png","sourceUnlockLevel":80,"ranks":[{"spellId":57755,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Throws your weapon at the enemy causing the listed amountthe listed amount damage (based on attack power). This ability causes high threat.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}],"paladin":[{"id":"wow335-paladin-aura-mastery","name":"Aura Mastery","iconBasename":"spell_holy_auramastery","iconPath":"/assets/ui/spells/spell_holy_auramastery.png","sourceUnlockLevel":1,"talentNodeId":"talent-1435","ranks":[{"spellId":31821,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Causes your Concentration Aura to make all affected targets immune to Silence and Interrupt effects and improve the effect of all other auras by 100%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":108,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-beacon-of-light","name":"Beacon of Light","iconBasename":"ability_paladin_beaconoflight","iconPath":"/assets/ui/spells/ability_paladin_beaconoflight.png","sourceUnlockLevel":1,"talentNodeId":"talent-2192","ranks":[{"spellId":53652,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 40 yard radius. Any heals you cast on those targets will also heal the Beacon for 1% of the amount healed. Only one target can be the Beacon of Light at a time. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53653,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 40 yard radius. Any heals you cast on those targets will also heal the Beacon for 1% of the amount healed. Only one target can be the Beacon of Light at a time. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53654,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 40 yard radius. Any heals you cast on those targets will also heal the Beacon for 1% of the amount healed. Only one target can be the Beacon of Light at a time. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53563,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 60 yard radius. Any heals you cast on those targets will also heal the Beacon for 100% of the amount healed. Only one target can be the Beacon of Light at a time. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":1500,"miscValue":0,"triggerSpellId":53651,"coefficient":0}]}]},{"id":"wow335-paladin-devotion-aura","name":"Devotion Aura","iconBasename":"spell_holy_devotionaura","iconPath":"/assets/ui/spells/spell_holy_devotionaura.png","sourceUnlockLevel":1,"ranks":[{"spellId":465,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":9,"description":"Gives 55 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10290,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":19,"description":"Gives 160 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":160,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":643,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"Gives 275 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10291,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"Gives 390 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":390,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":1032,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Gives 505 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":505,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10292,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Gives 620 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":620,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10293,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Gives 735 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":735,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":27149,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Gives 861 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":861,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":48941,"rank":9,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Gives 1015 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":1015,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":48942,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Gives 1205 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":1205,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-favor","name":"Divine Favor","iconBasename":"spell_holy_heal","iconPath":"/assets/ui/spells/spell_holy_heal.png","sourceUnlockLevel":1,"talentNodeId":"talent-1433","ranks":[{"spellId":20216,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, gives your next Flash of Light, Holy Light, or Holy Shock spell a 100% critical effect chance.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-illumination","name":"Divine Illumination","iconBasename":"spell_holy_divineillumination","iconPath":"/assets/ui/spells/spell_holy_divineillumination.png","sourceUnlockLevel":1,"talentNodeId":"talent-1747","ranks":[{"spellId":31842,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Reduces the mana cost of all spells by 50% for 15 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":72,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-sacrifice","name":"Divine Sacrifice","iconBasename":"spell_holy_powerwordbarrier","iconPath":"/assets/ui/spells/spell_holy_powerwordbarrier.png","sourceUnlockLevel":1,"talentNodeId":"talent-2280","ranks":[{"spellId":64205,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"30% of all damage taken by party or raid members within the listed amount yards is redirected to the Paladin (up to a maximum of 150% of the Paladin's health). Lasts 10 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":81,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-paladin-eye-for-an-eye","name":"Eye for an Eye","iconBasename":"spell_holy_eyeforaneye","iconPath":"/assets/ui/spells/spell_holy_eyeforaneye.png","sourceUnlockLevel":1,"passive":true,"ranks":[{"spellId":25997,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"All criticals against you cause a percentage of the damage taken to the attacker as well. The damage caused by Eye for an Eye will not exceed 50% of the Paladin's total health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-holy-light","name":"Holy Light","iconBasename":"spell_holy_holybolt","iconPath":"/assets/ui/spells/spell_holy_holybolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":635,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Heals a friendly target for 60.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":50,"dieSides":11,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.48100000619888306}]},{"spellId":639,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Heals a friendly target for 116.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":96,"dieSides":21,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7960000038146973}]},{"spellId":647,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Heals a friendly target for 239.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":203,"dieSides":37,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.2999999523162842}]},{"spellId":1026,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Heals a friendly target for 455.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":397,"dieSides":59,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":3472,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Heals a friendly target for 998.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":894,"dieSides":105,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":10328,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Heals a friendly target for 1349.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1209,"dieSides":141,"pointsPerLevel":4.599999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":10329,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Heals a friendly target for 1777.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1595,"dieSides":183,"pointsPerLevel":5.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":25292,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 2266.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2034,"dieSides":233,"pointsPerLevel":5.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":27135,"rank":10,"level":62,"sourceLevel":62,"maxScalingLevel":67,"description":"Heals a friendly target for 2486.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2232,"dieSides":255,"pointsPerLevel":6.400000095367432,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":27136,"rank":11,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals a friendly target for 3138.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2818,"dieSides":321,"pointsPerLevel":7,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":48781,"rank":12,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals a friendly target for 4677.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":4199,"dieSides":479,"pointsPerLevel":10.399999618530273,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":48782,"rank":13,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals a friendly target for 5444.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":4888,"dieSides":557,"pointsPerLevel":12.100000381469727,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]}]},{"id":"wow335-paladin-judgement-of-righteousness","name":"Judgement of Righteousness","iconBasename":"ability_thunderbolt","iconPath":"/assets/ui/spells/ability_thunderbolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":20187,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Fills the Paladin with holy spirit for the listed duration, granting each melee attack an additional the listed amountthe listed amount(the listed amount(the listed amount,1),0.85*(1*1.2*1.03*1WS/100)+0.03*(1W+1w)/2-1,1.2*(1*1.2*1.03*1WS/100)+0.03*(1W+1w)/2+1)} Holy damage. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will cause 1 Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3199999928474426},{"index":2,"effectType":3,"auraType":0,"basePoints":108,"dieSides":1,"pointsPerLevel":18,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.057999998331069946}]}]},{"id":"wow335-paladin-righteous-fury","name":"Righteous Fury","iconBasename":"spell_holy_sealoffury","iconPath":"/assets/ui/spells/spell_holy_sealoffury.png","sourceUnlockLevel":1,"ranks":[{"spellId":25781,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25780,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Increases the threat generated by your Holy spells by 90%. Lasts 0.001 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":10,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-righteousness","name":"Seal of Righteousness","iconBasename":"ability_thunderbolt","iconPath":"/assets/ui/spells/ability_thunderbolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":20154,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":7,"description":"Fills the Paladin with holy spirit for 1800 sec, granting each melee attack the listed amount(0.022*the listed amount)} additional Holy damage. Only one Seal can be active on the Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0}]},{"spellId":21084,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":7,"description":"Fills the Paladin with holy spirit for 1800 sec, granting each melee attack the listed amount(0.022*the listed amount)} additional Holy damage. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will cause the listed amountthe listed amount Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":20187,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-blessing-of-might","name":"Blessing of Might","iconBasename":"spell_holy_fistofjustice","iconPath":"/assets/ui/spells/spell_holy_fistofjustice.png","sourceUnlockLevel":4,"ranks":[{"spellId":19740,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 20 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19834,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 35 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19835,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 55 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19836,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 85 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19837,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 130 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19838,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 185 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25291,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":60,"description":"Places a Blessing on the friendly target, increasing attack power by 232 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27140,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Places a Blessing on the friendly target, increasing attack power by 306 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48931,"rank":9,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Places a Blessing on the friendly target, increasing attack power by 410 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48932,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Places a Blessing on the friendly target, increasing attack power by 550 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-light","name":"Judgement of Light","iconBasename":"spell_holy_righteousfury","iconPath":"/assets/ui/spells/spell_holy_righteousfury.png","sourceUnlockLevel":4,"ranks":[{"spellId":20185,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Fills the Paladin with divine light for 20 sec, giving each melee attack a chance to heal the Paladin for 2. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will judge an enemy for 20 sec, granting attacks made against the judged enemy a chance of healing the attacker for 2% of their maximum health. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20271,"rank":0,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Unleashes the energy of a Seal spell to judge an enemy for the listed duration, granting attacks made against the judged enemy a chance of healing the attacker for 2% of their maximum health. Refer to individual Seals for additional Judgement effect. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-protection","name":"Divine Protection","iconBasename":"spell_holy_restoration","iconPath":"/assets/ui/spells/spell_holy_restoration.png","sourceUnlockLevel":6,"ranks":[{"spellId":498,"rank":0,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Reduces all damage taken by 50% for 12 sec. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 12 sec. Cannot be used within 12 sec of using Avenging Wrath.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hammer-of-justice","name":"Hammer of Justice","iconBasename":"spell_holy_sealofmight","iconPath":"/assets/ui/spells/spell_holy_sealofmight.png","sourceUnlockLevel":8,"ranks":[{"spellId":853,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Stuns the target for 3 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5588,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Stuns the target for 4 sec and interrupts non-player spellcasting for 4 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5589,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Stuns the target for 5 sec and interrupts non-player spellcasting for 5 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10308,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Stuns the target for 6 sec and interrupts non-player spellcasting for 6 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-purify","name":"Purify","iconBasename":"spell_holy_purify","iconPath":"/assets/ui/spells/spell_holy_purify.png","sourceUnlockLevel":8,"ranks":[{"spellId":1152,"rank":0,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Purifies the friendly target, removing 1 disease effect and 1 poison effect.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hand-of-protection","name":"Hand of Protection","iconBasename":"spell_holy_sealofprotection","iconPath":"/assets/ui/spells/spell_holy_sealofprotection.png","sourceUnlockLevel":10,"ranks":[{"spellId":1022,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"A targeted party or raid member is protected from all physical attacks for 6 sec, but during that time they cannot attack or use physical abilities. Players may only have one Hand on them per Paladin at any one time. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 6 sec. Cannot be targeted on players who have used Avenging Wrath within the last 6 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":25,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5599,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"A targeted party or raid member is protected from all physical attacks for 8 sec, but during that time they cannot attack or use physical abilities. Players may only have one Hand on them per Paladin at any one time. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 8 sec. Cannot be targeted on players who have used Avenging Wrath within the last 8 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":25,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10278,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"A targeted party or raid member is protected from all physical attacks for 10 sec, but during that time they cannot attack or use physical abilities. Players may only have one Hand on them per Paladin at any one time. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 10 sec. Cannot be targeted on players who have used Avenging Wrath within the last 10 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":25,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-lay-on-hands","name":"Lay on Hands","iconBasename":"spell_holy_layonhands","iconPath":"/assets/ui/spells/spell_holy_layonhands.png","sourceUnlockLevel":10,"ranks":[{"spellId":633,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2800,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health and restores 250 of their mana.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10310,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health and restores 550 of their mana.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27154,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health and restores 900 of their mana.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":900,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48788,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health and restores 1950 of their mana.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":1950,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-wisdom","name":"Judgement of Wisdom","iconBasename":"ability_paladin_judgementblue","iconPath":"/assets/ui/spells/ability_paladin_judgementblue.png","sourceUnlockLevel":12,"ranks":[{"spellId":20186,"rank":1,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Unleashes the energy of a Seal spell to judge an enemy, giving each attack a chance to restore 1% of the attacker's base mana. Refer to individual Seals for additional Judgement effect. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53408,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Unleashes the energy of a Seal spell to judge an enemy, giving each attack a chance to restore 0% of the attacker's base mana. Refer to individual Seals for additional Judgement effect. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-redemption","name":"Redemption","iconBasename":"spell_holy_resurrection","iconPath":"/assets/ui/spells/spell_holy_resurrection.png","sourceUnlockLevel":12,"ranks":[{"spellId":7328,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Brings a dead player back to life with 65 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":120,"triggerSpellId":0,"coefficient":1}]},{"spellId":10322,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Brings a dead player back to life with 150 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":260,"triggerSpellId":0,"coefficient":1}]},{"spellId":10324,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Brings a dead player back to life with 250 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":420,"triggerSpellId":0,"coefficient":1}]},{"spellId":20772,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Brings a dead player back to life with 400 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":600,"triggerSpellId":0,"coefficient":1}]},{"spellId":20773,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Brings a dead player back to life with 600 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":600,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":800,"triggerSpellId":0,"coefficient":1}]},{"spellId":48949,"rank":6,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Brings a dead player back to life with 1400 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1060,"triggerSpellId":0,"coefficient":1}]},{"spellId":48950,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Brings a dead player back to life with 1760 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1760,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1320,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-paladin-blessing-of-wisdom","name":"Blessing of Wisdom","iconBasename":"spell_holy_sealofwisdom","iconPath":"/assets/ui/spells/spell_holy_sealofwisdom.png","sourceUnlockLevel":14,"ranks":[{"spellId":19742,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 10 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19850,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 15 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19852,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 20 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19853,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 25 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19854,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 30 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25290,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 33 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27142,"rank":7,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 41 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48935,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 73 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":73,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48936,"rank":9,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 92 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":92,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-righteous-defense","name":"Righteous Defense","iconBasename":"inv_shoulder_37","iconPath":"/assets/ui/spells/inv_shoulder_37.png","sourceUnlockLevel":14,"ranks":[{"spellId":31789,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Come to the defense of a friendly target, commanding up to 3 enemies attacking the target to attack the Paladin instead.","castTimeMs":0,"cooldownMs":8000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":31980,"coefficient":0}]}]},{"id":"wow335-paladin-hand-of-reckoning","name":"Hand of Reckoning","iconBasename":"spell_holy_unyieldingfaith","iconPath":"/assets/ui/spells/spell_holy_unyieldingfaith.png","sourceUnlockLevel":16,"ranks":[{"spellId":62124,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Taunts the target to attack you. If the target is not currently targeting you, causes the listed amountthe listed amount Holy damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":114,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":11,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-retribution-aura","name":"Retribution Aura","iconBasename":"spell_holy_auraoflight","iconPath":"/assets/ui/spells/spell_holy_auraoflight.png","sourceUnlockLevel":16,"ranks":[{"spellId":7294,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Causes 10 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10298,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Causes 18 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10299,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Causes 27 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10300,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Causes 37 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10301,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Causes 48 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":48,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27150,"rank":6,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Causes 62 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":62,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":54043,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Causes 112 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":112,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hand-of-freedom","name":"Hand of Freedom","iconBasename":"spell_holy_sealofvalor","iconPath":"/assets/ui/spells/spell_holy_sealofvalor.png","sourceUnlockLevel":18,"ranks":[{"spellId":1044,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Places a Hand on the friendly target, granting immunity to movement impairing effects for 6 sec. Players may only have one Hand on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-blessing-of-kings","name":"Blessing of Kings","iconBasename":"spell_magic_magearmor","iconPath":"/assets/ui/spells/spell_magic_magearmor.png","sourceUnlockLevel":20,"ranks":[{"spellId":20217,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing total stats by 10% for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":137,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":166,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-consecration","name":"Consecration","iconBasename":"spell_holy_innerfire","iconPath":"/assets/ui/spells/spell_holy_innerfire.png","sourceUnlockLevel":20,"ranks":[{"spellId":26573,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"Consecrates the land beneath the Paladin, doing the listed amount(9+0.04*9PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":20116,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"Consecrates the land beneath the Paladin, doing the listed amount(17+0.04*17PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":20922,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Consecrates the land beneath the Paladin, doing the listed amount(28+0.04*28PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":28,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":20923,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Consecrates the land beneath the Paladin, doing the listed amount(42+0.04*42PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":20924,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Consecrates the land beneath the Paladin, doing the listed amount(56+0.04*56PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":56,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":27173,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Consecrates the land beneath the Paladin, doing the listed amount(72+0.04*72PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":72,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":48818,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Consecrates the land beneath the Paladin, doing the listed amount(87+0.04*87PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":48819,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Consecrates the land beneath the Paladin, doing the listed amount(113+0.04*113PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":113,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]}]},{"id":"wow335-paladin-exorcism","name":"Exorcism","iconBasename":"spell_holy_excorcism_02","iconPath":"/assets/ui/spells/spell_holy_excorcism_02.png","sourceUnlockLevel":20,"ranks":[{"spellId":879,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":96,"dieSides":15,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":5614,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":173,"dieSides":23,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":5615,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":250,"dieSides":33,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":10312,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":350,"dieSides":45,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":10313,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":452,"dieSides":55,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":10314,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":564,"dieSides":65,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":27138,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":687,"dieSides":79,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48800,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":787,"dieSides":91,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48801,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1028,"dieSides":119,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]}]},{"id":"wow335-paladin-flash-of-light","name":"Flash of Light","iconBasename":"spell_holy_flashheal","iconPath":"/assets/ui/spells/spell_holy_flashheal.png","sourceUnlockLevel":20,"ranks":[{"spellId":19750,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals a friendly target for 93. If the target has the Sacred Shield effect, they heal an additional 93% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":81,"dieSides":13,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19939,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Heals a friendly target for 144. If the target has the Sacred Shield effect, they heal an additional 144% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":124,"dieSides":21,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19940,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Heals a friendly target for 211. If the target has the Sacred Shield effect, they heal an additional 211% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":189,"dieSides":23,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19941,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":47,"description":"Heals a friendly target for 288. If the target has the Sacred Shield effect, they heal an additional 288% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":256,"dieSides":33,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19942,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Heals a friendly target for 390. If the target has the Sacred Shield effect, they heal an additional 390% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":346,"dieSides":45,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19943,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Heals a friendly target for 499. If the target has the Sacred Shield effect, they heal an additional 499% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":445,"dieSides":55,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":27137,"rank":7,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Heals a friendly target for 658. If the target has the Sacred Shield effect, they heal an additional 658% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":588,"dieSides":71,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":48784,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Heals a friendly target for 764. If the target has the Sacred Shield effect, they heal an additional 764% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":682,"dieSides":83,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":48785,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Heals a friendly target for 879. If the target has the Sacred Shield effect, they heal an additional 879% over the listed duration.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":785,"dieSides":95,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]}]},{"id":"wow335-paladin-repentance","name":"Repentance","iconBasename":"spell_holy_prayerofhealing","iconPath":"/assets/ui/spells/spell_holy_prayerofhealing.png","sourceUnlockLevel":20,"talentNodeId":"talent-1441","ranks":[{"spellId":20066,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Puts the enemy target in a state of meditation, incapacitating them for up to 60 sec. Any damage caused will awaken the target. Usable against Demons, Dragonkin, Giants, Humanoids and Undead.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-command","name":"Seal of Command","iconBasename":"ability_warrior_innerrage","iconPath":"/assets/ui/spells/ability_warrior_innerrage.png","sourceUnlockLevel":20,"talentNodeId":"talent-1481","ranks":[{"spellId":20375,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":28,"description":"All melee attacks deal the listed amount to the listed amount additional Holy damage. Lasts 1800 sec. Unleashing this Seal's energy will judge an enemy, instantly causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20424,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":20425,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-sense-undead","name":"Sense Undead","iconBasename":"spell_holy_senseundead","iconPath":"/assets/ui/spells/spell_holy_senseundead.png","sourceUnlockLevel":20,"ranks":[{"spellId":5502,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Shows the location of all nearby undead on the minimap until cancelled. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-summon-warhorse","name":"Summon Warhorse","iconBasename":"spell_nature_swiftness","iconPath":"/assets/ui/spells/spell_nature_swiftness.png","sourceUnlockLevel":20,"ranks":[{"spellId":34769,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a warhorse, which serves as a mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":20029,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-warhorse","name":"Warhorse","iconBasename":"spell_nature_swiftness","iconPath":"/assets/ui/spells/spell_nature_swiftness.png","sourceUnlockLevel":20,"ranks":[{"spellId":13819,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Warhorse, which serves as a mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":9158,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-concentration-aura","name":"Concentration Aura","iconBasename":"spell_holy_mindsooth","iconPath":"/assets/ui/spells/spell_holy_mindsooth.png","sourceUnlockLevel":22,"ranks":[{"spellId":19746,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"All party or raid members within the listed amount yards lose 35% less casting or channeling time when damaged. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":149,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-justice","name":"Judgement of Justice","iconBasename":"ability_paladin_judgementred","iconPath":"/assets/ui/spells/ability_paladin_judgementred.png","sourceUnlockLevel":22,"ranks":[{"spellId":20184,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Unleashing this Seal's energy will judge an enemy for 20 sec, preventing them from fleeing. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":92,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":191,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53407,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Unleashes the energy of a Seal spell to judge an enemy for the listed duration, preventing them from fleeing and limiting their movement speed. Refer to individual Seals for additional Judgement effect. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-justice","name":"Seal of Justice","iconBasename":"spell_holy_sealofwrath","iconPath":"/assets/ui/spells/spell_holy_sealofwrath.png","sourceUnlockLevel":22,"ranks":[{"spellId":20164,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Fills the Paladin with the spirit of justice for 1800 sec, giving each melee attack a chance to stun for 1800 sec. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20170,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-turn-evil","name":"Turn Evil","iconBasename":"spell_holy_turnundead","iconPath":"/assets/ui/spells/spell_holy_turnundead.png","sourceUnlockLevel":24,"ranks":[{"spellId":10326,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"The targeted undead or demon enemy will be compelled to flee for up to 20 sec. Damage caused may interrupt the effect. Only one target can be turned at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hand-of-salvation","name":"Hand of Salvation","iconBasename":"spell_holy_sealofsalvation","iconPath":"/assets/ui/spells/spell_holy_sealofsalvation.png","sourceUnlockLevel":26,"ranks":[{"spellId":1038,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Places a Hand on the party or raid member, reducing their total threat by 2% every 1 sec. for 10 sec. Players may only have one Hand on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":-2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":127,"triggerSpellId":53055,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-shadow-resistance-aura","name":"Shadow Resistance Aura","iconBasename":"spell_shadow_sealofkings","iconPath":"/assets/ui/spells/spell_shadow_sealofkings.png","sourceUnlockLevel":28,"ranks":[{"spellId":19876,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Gives 30 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":19895,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Gives 45 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":19896,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Gives 60 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":27151,"rank":4,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Gives 70 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":48943,"rank":5,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Gives 130 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-blessing-of-sanctuary","name":"Blessing of Sanctuary","iconBasename":"spell_nature_lightningshield","iconPath":"/assets/ui/spells/spell_nature_lightningshield.png","sourceUnlockLevel":30,"talentNodeId":"talent-1431","ranks":[{"spellId":20911,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, reducing damage taken from all sources by 3% for 600 sec and increasing stamina by 10%. In addition, when the target blocks, parries, or dodges a melee attack the target will gain 3% of maximum displayed mana. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-intervention","name":"Divine Intervention","iconBasename":"spell_nature_timestop","iconPath":"/assets/ui/spells/spell_nature_timestop.png","sourceUnlockLevel":30,"ranks":[{"spellId":19752,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"The paladin sacrifices the listed amount to remove the targeted party member from harm's way. Enemies will stop attacking the protected party member, who will be immune to all harmful attacks but will not be able to take any action for the listed duration.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":79,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19753,"coefficient":1},{"index":2,"effectType":1,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-light","name":"Seal of Light","iconBasename":"spell_holy_healingaura","iconPath":"/assets/ui/spells/spell_holy_healingaura.png","sourceUnlockLevel":30,"ranks":[{"spellId":20165,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Fills the Paladin with divine light for 1800 sec, giving each melee attack a chance to heal the Paladin for the listed amountthe listed amount Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20167,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-frost-resistance-aura","name":"Frost Resistance Aura","iconBasename":"spell_frost_wizardmark","iconPath":"/assets/ui/spells/spell_frost_wizardmark.png","sourceUnlockLevel":32,"ranks":[{"spellId":19888,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Gives 30 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":19897,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Gives 45 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":19898,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Gives 60 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":27152,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Gives 70 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":48945,"rank":5,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Gives 130 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-shield","name":"Divine Shield","iconBasename":"spell_holy_divineintervention","iconPath":"/assets/ui/spells/spell_holy_divineintervention.png","sourceUnlockLevel":34,"ranks":[{"spellId":642,"rank":0,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Protects the paladin from all damage and spells for 12 sec, but reduces all damage you deal by 50%. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 12 sec. Cannot be used within 12 sec. of using Avenging Wrath.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":39,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-fire-resistance-aura","name":"Fire Resistance Aura","iconBasename":"spell_fire_sealoffire","iconPath":"/assets/ui/spells/spell_fire_sealoffire.png","sourceUnlockLevel":36,"ranks":[{"spellId":19891,"rank":1,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Gives 30 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":19899,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Gives 45 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":19900,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives 60 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":27153,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Gives 70 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":48947,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Gives 130 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-wisdom","name":"Seal of Wisdom","iconBasename":"spell_holy_righteousnessaura","iconPath":"/assets/ui/spells/spell_holy_righteousnessaura.png","sourceUnlockLevel":38,"ranks":[{"spellId":20166,"rank":0,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Fills the Paladin with divine wisdom for 1800 sec, giving each melee attack a chance to restore 0% of the paladin's maximum mana. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20168,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-charger","name":"Charger","iconBasename":"ability_mount_charger","iconPath":"/assets/ui/spells/ability_mount_charger.png","sourceUnlockLevel":40,"ranks":[{"spellId":23214,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Charger, which serves as a mount. This is a very fast mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14565,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-holy-shield","name":"Holy Shield","iconBasename":"spell_holy_blessingofprotection","iconPath":"/assets/ui/spells/spell_holy_blessingofprotection.png","sourceUnlockLevel":40,"talentNodeId":"talent-1430","ranks":[{"spellId":20925,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Increases chance to block by 30% for 10 sec and deals 79 Holy damage for each attack blocked while active. Each block expends a charge. the listed amount charges.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":43,"basePoints":79,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11699999868869781},{"index":2,"effectType":6,"auraType":189,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":27179,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Increases chance to block by 30% for 10 sec and deals 208 Holy damage for each attack blocked while active. Each block expends a charge. the listed amount charges.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":43,"basePoints":208,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11699999868869781},{"index":2,"effectType":6,"auraType":189,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":48951,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Increases chance to block by 30% for 10 sec and deals 235 Holy damage for each attack blocked while active. Each block expends a charge. the listed amount charges.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":43,"basePoints":235,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11699999868869781},{"index":2,"effectType":6,"auraType":189,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":48952,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Increases chance to block by 30% for 10 sec and deals 274 Holy damage for each attack blocked while active. Each block expends a charge. the listed amount charges.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":43,"basePoints":274,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11699999868869781},{"index":2,"effectType":6,"auraType":189,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-holy-shock","name":"Holy Shock","iconBasename":"spell_holy_searinglight","iconPath":"/assets/ui/spells/spell_holy_searinglight.png","sourceUnlockLevel":40,"talentNodeId":"talent-1502","ranks":[{"spellId":20473,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1 Holy damage to an enemy, or 1 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25912,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":47,"description":"Blasts the target with Holy energy, causing 340 Holy damage to an enemy, or 340 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":314,"dieSides":27,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25914,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":47,"description":"Blasts the target with Holy energy, causing 519 Holy damage to an enemy, or 519 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":481,"dieSides":39,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":20929,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1 Holy damage to an enemy, or 1 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25911,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":55,"description":"Blasts the target with Holy energy, causing 465 Holy damage to an enemy, or 465 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":431,"dieSides":35,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25913,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":55,"description":"Blasts the target with Holy energy, causing 696 Holy damage to an enemy, or 696 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":644,"dieSides":53,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":20930,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1 Holy damage to an enemy, or 1 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25902,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":63,"description":"Blasts the target with Holy energy, causing 608 Holy damage to an enemy, or 608 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":562,"dieSides":47,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25903,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":63,"description":"Blasts the target with Holy energy, causing 915 Holy damage to an enemy, or 915 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":845,"dieSides":71,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":27174,"rank":4,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1 Holy damage to an enemy, or 1 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27175,"rank":4,"level":64,"sourceLevel":64,"maxScalingLevel":69,"description":"Blasts the target with Holy energy, causing 1149 Holy damage to an enemy, or 1149 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1061,"dieSides":89,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":27176,"rank":4,"level":64,"sourceLevel":64,"maxScalingLevel":69,"description":"Blasts the target with Holy energy, causing 749 Holy damage to an enemy, or 749 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":693,"dieSides":57,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":33072,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1 Holy damage to an enemy, or 1 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":33073,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Blasts the target with Holy energy, causing 978 Holy damage to an enemy, or 978 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":904,"dieSides":75,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":33074,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Blasts the target with Holy energy, causing 1362 Holy damage to an enemy, or 1362 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1258,"dieSides":105,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48820,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Blasts the target with Holy energy, causing 2235 Holy damage to an enemy, or 2235 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2065,"dieSides":171,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48822,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Blasts the target with Holy energy, causing 1129 Holy damage to an enemy, or 1129 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1043,"dieSides":87,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48824,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1 Holy damage to an enemy, or 1 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48821,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Blasts the target with Holy energy, causing 2599 Holy damage to an enemy, or 2599 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2401,"dieSides":199,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48823,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Blasts the target with Holy energy, causing 1402 Holy damage to an enemy, or 1402 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1296,"dieSides":107,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48825,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1 Holy damage to an enemy, or 1 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-paladin-summon-charger","name":"Summon Charger","iconBasename":"ability_mount_charger","iconPath":"/assets/ui/spells/ability_mount_charger.png","sourceUnlockLevel":40,"ranks":[{"spellId":34767,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Charger, which serves as a mount. This is a very fast mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":20030,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-cleanse","name":"Cleanse","iconBasename":"spell_holy_renew","iconPath":"/assets/ui/spells/spell_holy_renew.png","sourceUnlockLevel":42,"ranks":[{"spellId":4987,"rank":0,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Cleanses a friendly target, removing 1 poison effect, 1 disease effect, and 1 magic effect.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hammer-of-wrath","name":"Hammer of Wrath","iconBasename":"ability_thunderclap","iconPath":"/assets/ui/spells/ability_thunderclap.png","sourceUnlockLevel":44,"ranks":[{"spellId":24275,"rank":1,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":351,"dieSides":37,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":24274,"rank":2,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":459,"dieSides":49,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":24239,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":570,"dieSides":59,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":27180,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":733,"dieSides":77,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48805,"rank":5,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":878,"dieSides":93,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48806,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1139,"dieSides":119,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]}]},{"id":"wow335-paladin-hand-of-sacrifice","name":"Hand of Sacrifice","iconBasename":"spell_holy_sealofsacrifice","iconPath":"/assets/ui/spells/spell_holy_sealofsacrifice.png","sourceUnlockLevel":46,"ranks":[{"spellId":6940,"rank":0,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Places a Hand on the party or raid member, transfering 30% damage taken to the caster. Lasts 12 sec or until the caster has transfered 100% of their maximum health. Players may only have one Hand on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":81,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-paladin-avenger-s-shield","name":"Avenger's Shield","iconBasename":"spell_holy_avengersshield","iconPath":"/assets/ui/spells/spell_holy_avengersshield.png","sourceUnlockLevel":50,"talentNodeId":"talent-1754","ranks":[{"spellId":31935,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":440,"dieSides":97,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":32699,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":601,"dieSides":133,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":32700,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":796,"dieSides":177,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48826,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":913,"dieSides":203,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48827,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1100,"dieSides":245,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-crusader-strike","name":"Crusader Strike","iconBasename":"spell_holy_crusaderstrike","iconPath":"/assets/ui/spells/spell_holy_crusaderstrike.png","sourceUnlockLevel":50,"talentNodeId":"talent-1823","ranks":[{"spellId":35395,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"An instant strike that causes 75% weapon damage.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":1,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hammer-of-the-righteous","name":"Hammer of the Righteous","iconBasename":"ability_paladin_hammeroftherighteous","iconPath":"/assets/ui/spells/ability_paladin_hammeroftherighteous.png","sourceUnlockLevel":50,"talentNodeId":"talent-2196","ranks":[{"spellId":53595,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Hammer the current target and up to the listed amountthe listed amount additional nearby targets, causing 4 times your main hand damage per second as Holy damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-holy-wrath","name":"Holy Wrath","iconBasename":"spell_holy_excorcism","iconPath":"/assets/ui/spells/spell_holy_excorcism.png","sourceUnlockLevel":50,"ranks":[{"spellId":2812,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":54,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":399,"dieSides":73,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10318,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":551,"dieSides":99,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27139,"rank":3,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":777,"dieSides":137,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48816,"rank":4,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":857,"dieSides":151,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48817,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1050,"dieSides":185,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-greater-blessing-of-might","name":"Greater Blessing of Might","iconBasename":"spell_holy_greaterblessingofkings","iconPath":"/assets/ui/spells/spell_holy_greaterblessingofkings.png","sourceUnlockLevel":52,"ranks":[{"spellId":25782,"rank":1,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 185 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25916,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":60,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 232 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27141,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 306 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48933,"rank":4,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 410 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48934,"rank":5,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 550 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-greater-blessing-of-wisdom","name":"Greater Blessing of Wisdom","iconBasename":"spell_holy_greaterblessingofwisdom","iconPath":"/assets/ui/spells/spell_holy_greaterblessingofwisdom.png","sourceUnlockLevel":54,"ranks":[{"spellId":25894,"rank":1,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 30 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25918,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 33 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27143,"rank":3,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 41 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48937,"rank":4,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 73 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":73,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48938,"rank":5,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 92 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":92,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-storm","name":"Divine Storm","iconBasename":"ability_paladin_divinestorm","iconPath":"/assets/ui/spells/ability_paladin_divinestorm.png","sourceUnlockLevel":60,"talentNodeId":"talent-2150","ranks":[{"spellId":53385,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"An instant weapon attack that causes 110% of weapon damage to up to the listed amountthe listed amount enemies within the listed amount yards. The Divine Storm heals up to 3 party or raid members totaling 25% of the damage caused.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-greater-blessing-of-kings","name":"Greater Blessing of Kings","iconBasename":"spell_magic_greaterblessingofkings","iconPath":"/assets/ui/spells/spell_magic_greaterblessingofkings.png","sourceUnlockLevel":60,"ranks":[{"spellId":25898,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Kings, increasing total stats by 10% for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":137,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":166,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-greater-blessing-of-sanctuary","name":"Greater Blessing of Sanctuary","iconBasename":"spell_holy_greaterblessingofsanctuary","iconPath":"/assets/ui/spells/spell_holy_greaterblessingofsanctuary.png","sourceUnlockLevel":60,"ranks":[{"spellId":25899,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Sanctuary, reducing damage taken from all sources by 3% for 1800 sec and increasing stamina by 10%. In addition, when the target blocks, parries, or dodges a melee attack the target will gain 3% of maximum displayed mana. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-light-s-beacon","name":"Light's Beacon","iconBasename":"ability_paladin_beaconoflight","iconPath":"/assets/ui/spells/ability_paladin_beaconoflight.png","sourceUnlockLevel":60,"ranks":[{"spellId":53651,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 60 yard radius. Any heals you cast on those targets will also heal the Beacon for 100% of the amount healed.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":2000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":60,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-crusader-aura","name":"Crusader Aura","iconBasename":"spell_holy_crusaderaura","iconPath":"/assets/ui/spells/spell_holy_crusaderaura.png","sourceUnlockLevel":62,"ranks":[{"spellId":32223,"rank":0,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Increases the mounted speed by 20% for all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time. This does not stack with other movement speed increasing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":172,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":65,"auraType":211,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":35,"auraType":210,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-blood","name":"Judgement of Blood","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":64,"ranks":[{"spellId":31898,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Unleashing this Seal's energy will judge an enemy, instantly causing Holy damage at the cost of health equal to 33% of the damage caused.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":26,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-vengeance","name":"Judgement of Vengeance","iconBasename":"spell_holy_sealofvengeance","iconPath":"/assets/ui/spells/spell_holy_sealofvengeance.png","sourceUnlockLevel":64,"ranks":[{"spellId":31804,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Deals the listed amountthe listed amount Holy damage to an enemy, increased by 10% for each application of Blood Corruption on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2199999988079071}]}]},{"id":"wow335-paladin-seal-of-vengeance","name":"Seal of Vengeance","iconBasename":"spell_holy_sealofvengeance","iconPath":"/assets/ui/spells/spell_holy_sealofvengeance.png","sourceUnlockLevel":64,"ranks":[{"spellId":31801,"rank":0,"level":64,"sourceLevel":64,"maxScalingLevel":68,"description":"Fills the Paladin with holy power, causing attacks to apply Holy Vengeance, which deals the listed amount(0.013*0PH+0.025*the listed amount)*5} additional Holy damage over 1800 sec. Holy Vengeance can stack up to the listed amount times. Once stacked to the listed amount times, each of the Paladin's attacks also deals 0% weapon damage as additional Holy damage. Only one Seal can be active on the Paladin at any one time. Lasts 1800 sec. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy, increased by 10% for each application of Holy Vengeance on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":240,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":31804,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-corruption","name":"Judgement of Corruption","iconBasename":"spell_holy_sealofvengeance","iconPath":"/assets/ui/spells/spell_holy_sealofvengeance.png","sourceUnlockLevel":66,"ranks":[{"spellId":53733,"rank":1,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Deals the listed amountthe listed amount Holy damage to an enemy, increased by 10% for each application of Blood Corruption on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2199999988079071}]}]},{"id":"wow335-paladin-judgement-of-the-martyr","name":"Judgement of the Martyr","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":66,"ranks":[{"spellId":53726,"rank":1,"level":66,"sourceLevel":66,"maxScalingLevel":68,"description":"Unleashing this Seal's energy will judge an enemy, instantly causing Holy damage at the cost of health equal to 33% of the damage caused.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":26,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-corruption","name":"Seal of Corruption","iconBasename":"spell_holy_sealofvengeance","iconPath":"/assets/ui/spells/spell_holy_sealofvengeance.png","sourceUnlockLevel":66,"ranks":[{"spellId":53736,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":68,"description":"Fills the Paladin with holy power, causing attacks to apply Blood Corruption, which deals the listed amount(0.013*0PH+0.025*the listed amount)*6} additional Holy damage over 1800 sec. Once stacked to the listed amount times, each of the Paladins attacks also deals 0% weapon damage as additional Holy damage. Blood Corruption can stack up to the listed amount times. Only one Seal can be active on the Paladin at any one time. Lasts 1800 sec. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy, increased by 10% for each application of Blood Corruption on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":240,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":53733,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-avenging-wrath","name":"Avenging Wrath","iconBasename":"spell_holy_avenginewrath","iconPath":"/assets/ui/spells/spell_holy_avenginewrath.png","sourceUnlockLevel":70,"ranks":[{"spellId":31884,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Increases all damage and healing caused by 20% for 20 sec. Cannot be used within 20 sec of being the target of Divine Shield, Divine Protection, or Hand of Protection.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":136,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-plea","name":"Divine Plea","iconBasename":"spell_holy_aspiration","iconPath":"/assets/ui/spells/spell_holy_aspiration.png","sourceUnlockLevel":71,"ranks":[{"spellId":54428,"rank":0,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"You gain the listed amount% of your total mana over 15 sec, but the amount healed by your Flash of Light, Holy Light, and Holy Shock spells is reduced by 50%.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":21,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-shield-of-righteousness","name":"Shield of Righteousness","iconBasename":"ability_paladin_shieldofvengeance","iconPath":"/assets/ui/spells/ability_paladin_shieldofvengeance.png","sourceUnlockLevel":75,"ranks":[{"spellId":53600,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Slam the target with your shield, causing Holy damage based on your block value plus an additional 390.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":390,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61411,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Slam the target with your shield, causing Holy damage based on your block value plus an additional 520.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":520,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-sacred-shield","name":"Sacred Shield","iconBasename":"ability_paladin_blessedmending","iconPath":"/assets/ui/spells/ability_paladin_blessedmending.png","sourceUnlockLevel":80,"ranks":[{"spellId":53601,"rank":1,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Each time the target takes damage they gain a Sacred Shield, absorbing 0 damage and increasing the paladin's chance to critically hit with Flash of Light by the listed amount% for up to 30 sec. They cannot gain this effect more than once every 6 sec. Lasts 30 sec. This spell cannot be on more than one target at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":58597,"coefficient":0}]}]}],"hunter":[{"id":"wow335-hunter-auto-shot","name":"Auto Shot","iconBasename":"ability_whirlwind","iconPath":"/assets/ui/spells/ability_whirlwind.png","sourceUnlockLevel":1,"ranks":[{"spellId":75,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Automatically shoots the target until cancelled. Ranged attacks fired by a Hunter all have the listed amount% increased attack speed.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-raptor-strike","name":"Raptor Strike","iconBasename":"ability_meleedamage","iconPath":"/assets/ui/spells/ability_meleedamage.png","sourceUnlockLevel":1,"ranks":[{"spellId":2973,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 5.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14260,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 11.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":11,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14261,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 21.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14262,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 34.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":34,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14263,"rank":5,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 50.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14264,"rank":6,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 80.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14265,"rank":7,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 110.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14266,"rank":8,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 140.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27014,"rank":9,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 170.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48995,"rank":10,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 275.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48996,"rank":11,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 335.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":335,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-readiness","name":"Readiness","iconBasename":"ability_hunter_readiness","iconPath":"/assets/ui/spells/ability_hunter_readiness.png","sourceUnlockLevel":1,"talentNodeId":"talent-1353","ranks":[{"spellId":23989,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, this ability immediately finishes the cooldown on your other Hunter abilities except Bestial Wrath.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-beasts","name":"Track Beasts","iconBasename":"ability_tracking","iconPath":"/assets/ui/spells/ability_tracking.png","sourceUnlockLevel":1,"ranks":[{"spellId":1494,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Shows the location of all nearby beasts on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-monkey","name":"Aspect of the Monkey","iconBasename":"ability_hunter_aspectofthemonkey","iconPath":"/assets/ui/spells/ability_hunter_aspectofthemonkey.png","sourceUnlockLevel":4,"ranks":[{"spellId":13163,"rank":0,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a monkey, increasing chance to dodge by 18%. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":49,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":60798,"coefficient":0}]}]},{"id":"wow335-hunter-serpent-sting","name":"Serpent Sting","iconBasename":"ability_hunter_quickshot","iconPath":"/assets/ui/spells/ability_hunter_quickshot.png","sourceUnlockLevel":4,"ranks":[{"spellId":1978,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13549,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":17,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13550,"rank":3,"level":18,"sourceLevel":18,"maxScalingLevel":25,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":16,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13551,"rank":4,"level":26,"sourceLevel":26,"maxScalingLevel":33,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":28,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13552,"rank":5,"level":34,"sourceLevel":34,"maxScalingLevel":41,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13553,"rank":6,"level":42,"sourceLevel":42,"maxScalingLevel":49,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":58,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13554,"rank":7,"level":50,"sourceLevel":50,"maxScalingLevel":57,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":77,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13555,"rank":8,"level":58,"sourceLevel":58,"maxScalingLevel":59,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":25295,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":111,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27016,"rank":10,"level":67,"sourceLevel":67,"maxScalingLevel":72,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":132,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":49000,"rank":11,"level":73,"sourceLevel":73,"maxScalingLevel":78,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":198,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":49001,"rank":12,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":242,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-arcane-shot","name":"Arcane Shot","iconBasename":"ability_impalingbolt","iconPath":"/assets/ui/spells/ability_impalingbolt.png","sourceUnlockLevel":6,"ranks":[{"spellId":3044,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14281,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":19,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":23,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14282,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":27,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":36,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14283,"rank":4,"level":28,"sourceLevel":28,"maxScalingLevel":35,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14284,"rank":5,"level":36,"sourceLevel":36,"maxScalingLevel":43,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":91,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14285,"rank":6,"level":44,"sourceLevel":44,"maxScalingLevel":51,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14286,"rank":7,"level":52,"sourceLevel":52,"maxScalingLevel":59,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":158,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14287,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":67,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27019,"rank":9,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":273,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49044,"rank":10,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":402,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49045,"rank":11,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":492,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-hunter-s-mark","name":"Hunter's Mark","iconBasename":"ability_hunter_snipershot","iconPath":"/assets/ui/spells/ability_hunter_snipershot.png","sourceUnlockLevel":6,"ranks":[{"spellId":1130,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 20. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14323,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 45. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14324,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 75. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14325,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 110. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53338,"rank":5,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 500. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":500,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-concussive-shot","name":"Concussive Shot","iconBasename":"spell_frost_stun","iconPath":"/assets/ui/spells/spell_frost_stun.png","sourceUnlockLevel":8,"ranks":[{"spellId":5116,"rank":0,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Dazes the target, slowing movement speed by 50% for 4 sec.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-hawk","name":"Aspect of the Hawk","iconBasename":"spell_nature_ravenform","iconPath":"/assets/ui/spells/spell_nature_ravenform.png","sourceUnlockLevel":10,"ranks":[{"spellId":13165,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 20. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14318,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 35. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14319,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 50. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14320,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 70. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14321,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 90. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14322,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 110. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":25296,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 120. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":27044,"rank":8,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 155. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":155,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]}]},{"id":"wow335-hunter-call-pet","name":"Call Pet","iconBasename":"ability_hunter_beastcall","iconPath":"/assets/ui/spells/ability_hunter_beastcall.png","sourceUnlockLevel":10,"ranks":[{"spellId":883,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Summons your pet to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-dismiss-pet","name":"Dismiss Pet","iconBasename":"spell_nature_spiritwolf","iconPath":"/assets/ui/spells/spell_nature_spiritwolf.png","sourceUnlockLevel":10,"ranks":[{"spellId":2641,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Dismiss your pet. Dismissing your pet will reduce its happiness by the listed amount","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":50000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":102,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":47531,"coefficient":0}]}]},{"id":"wow335-hunter-feed-pet","name":"Feed Pet","iconBasename":"ability_hunter_beasttraining","iconPath":"/assets/ui/spells/ability_hunter_beasttraining.png","sourceUnlockLevel":10,"ranks":[{"spellId":6991,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Feed your pet the selected item. Feeding your pet increases happiness. Using food close to the pet's level will have a better result.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":101,"auraType":0,"basePoints":35000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1539,"coefficient":0}]}]},{"id":"wow335-hunter-revive-pet","name":"Revive Pet","iconBasename":"ability_hunter_beastsoothe","iconPath":"/assets/ui/spells/ability_hunter_beastsoothe.png","sourceUnlockLevel":10,"ranks":[{"spellId":982,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Revive your pet, returning it to life with 15% of its base health.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":109,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-tame-beast","name":"Tame Beast","iconBasename":"ability_hunter_beasttaming","iconPath":"/assets/ui/spells/ability_hunter_beasttaming.png","sourceUnlockLevel":10,"ranks":[{"spellId":1515,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Begins taming a beast to be your companion. Your armor is reduced by 100% while you focus on taming the beast for 20 sec. If you lose the beast's attention for any reason, the taming process will fail. Once tamed, the beast will be very unhappy and disloyal. Try feeding the pet immediately to make it happy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":20000,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":20000,"miscValue":0,"triggerSpellId":13481,"coefficient":0},{"index":2,"effectType":6,"auraType":101,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":13481,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Begins taming a beast to be your companion. Your armor is reduced by the listed amount% while you focus on taming the beast for 20 sec. If you lose the beast's attention for any reason, the taming process will fail. Once tamed, the beast will be very unhappy and disloyal. Try feeding the pet immediately to make it happy.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":55,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":77,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-track-humanoids","name":"Track Humanoids","iconBasename":"spell_holy_prayerofhealing","iconPath":"/assets/ui/spells/spell_holy_prayerofhealing.png","sourceUnlockLevel":10,"ranks":[{"spellId":19883,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Shows the location of all nearby humanoids on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-distracting-shot","name":"Distracting Shot","iconBasename":"spell_arcane_blink","iconPath":"/assets/ui/spells/spell_arcane_blink.png","sourceUnlockLevel":12,"ranks":[{"spellId":20736,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":19,"description":"Distracts the target to attack you, but has no effect if the target is already attacking you. Lasts 6 sec.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":11,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-mend-pet","name":"Mend Pet","iconBasename":"ability_hunter_mendpet","iconPath":"/assets/ui/spells/ability_hunter_mendpet.png","sourceUnlockLevel":12,"ranks":[{"spellId":136,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3111,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3661,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3662,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":13542,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":13543,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":280,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":13544,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":365,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27046,"rank":8,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":475,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48989,"rank":9,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":850,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48990,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":1050,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-wing-clip","name":"Wing Clip","iconBasename":"ability_rogue_trip","iconPath":"/assets/ui/spells/ability_rogue_trip.png","sourceUnlockLevel":12,"ranks":[{"spellId":2974,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Maims the enemy, reducing the target's movement speed by 50% for 10 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-eagle-eye","name":"Eagle Eye","iconBasename":"ability_hunter_eagleeye","iconPath":"/assets/ui/spells/ability_hunter_eagleeye.png","sourceUnlockLevel":14,"ranks":[{"spellId":6197,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Zooms in the hunter's vision. Only usable outdoors. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":1,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":72,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-eyes-of-the-beast","name":"Eyes of the Beast","iconBasename":"ability_eyeoftheowl","iconPath":"/assets/ui/spells/ability_eyeoftheowl.png","sourceUnlockLevel":14,"ranks":[{"spellId":1002,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Take direct control of your pet and see through its eyes for 60 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":1,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":128,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-scare-beast","name":"Scare Beast","iconBasename":"ability_druid_cower","iconPath":"/assets/ui/spells/ability_druid_cower.png","sourceUnlockLevel":14,"ranks":[{"spellId":1513,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Scares a beast, causing it to run in fear for up to 10 sec. Damage caused may interrupt the effect. Only one beast can be feared at a time.","castTimeMs":1500,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14326,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Scares a beast, causing it to run in fear for up to 15 sec. Damage caused may interrupt the effect. Only one beast can be feared at a time.","castTimeMs":1500,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14327,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Scares a beast, causing it to run in fear for up to 20 sec. Damage caused may interrupt the effect. Only one beast can be feared at a time.","castTimeMs":1500,"cooldownMs":30000,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-scatter-shot","name":"Scatter Shot","iconBasename":"ability_golemstormbolt","iconPath":"/assets/ui/spells/ability_golemstormbolt.png","sourceUnlockLevel":15,"talentNodeId":"talent-1814","ranks":[{"spellId":19503,"rank":0,"level":15,"sourceLevel":15,"maxScalingLevel":0,"description":"A short-range shot that deals 50% weapon damage and disorients the target for 4 sec. Any damage caused will remove the effect. Turns off your attack when used.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":11,"rangeMin":0,"rangeMax":15,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":5,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":37506,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-cheetah","name":"Aspect of the Cheetah","iconBasename":"ability_mount_jungletiger","iconPath":"/assets/ui/spells/ability_mount_jungletiger.png","sourceUnlockLevel":16,"ranks":[{"spellId":5118,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a cheetah, increasing movement speed by 30%. If the hunter is struck, the listed amount will be dazed for 0.001 sec. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":15571,"coefficient":1}]}]},{"id":"wow335-hunter-immolation-trap","name":"Immolation Trap","iconBasename":"spell_fire_flameshock","iconPath":"/assets/ui/spells/spell_fire_flameshock.png","sourceUnlockLevel":16,"ranks":[{"spellId":13795,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":22,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164638,"triggerSpellId":0,"coefficient":0}]},{"spellId":13797,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":22,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 15 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14298,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 15 sec. Only one trap can be active at a time..","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14302,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164872,"triggerSpellId":0,"coefficient":0}]},{"spellId":14299,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 15 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":68,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14303,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164873,"triggerSpellId":0,"coefficient":0}]},{"spellId":14300,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":52,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 15 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":102,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14304,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":52,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164874,"triggerSpellId":0,"coefficient":0}]},{"spellId":14301,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 15 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":138,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14305,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164875,"triggerSpellId":0,"coefficient":0}]},{"spellId":27023,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":181030,"triggerSpellId":0,"coefficient":0}]},{"spellId":27024,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 15 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":197,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49053,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 15 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":308,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49055,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":189318,"triggerSpellId":0,"coefficient":0}]},{"spellId":49054,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 15 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":377,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49056,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":189319,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-mongoose-bite","name":"Mongoose Bite","iconBasename":"ability_hunter_swiftstrike","iconPath":"/assets/ui/spells/ability_hunter_swiftstrike.png","sourceUnlockLevel":16,"ranks":[{"spellId":1495,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14269,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14270,"rank":3,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14271,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":36916,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":53339,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":280,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-multi-shot","name":"Multi-Shot","iconBasename":"ability_upgrademoonglaive","iconPath":"/assets/ui/spells/ability_upgrademoonglaive.png","sourceUnlockLevel":18,"ranks":[{"spellId":2643,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14288,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 40 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14289,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 80 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14290,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 120 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25294,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 150 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27021,"rank":6,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 205 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":205,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":49047,"rank":7,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 333 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":333,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":49048,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 408 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":408,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-undead","name":"Track Undead","iconBasename":"spell_shadow_darksummoning","iconPath":"/assets/ui/spells/spell_shadow_darksummoning.png","sourceUnlockLevel":18,"ranks":[{"spellId":19884,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Shows the location of all nearby undead on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aimed-shot","name":"Aimed Shot","iconBasename":"inv_spear_07","iconPath":"/assets/ui/spells/inv_spear_07.png","sourceUnlockLevel":20,"talentNodeId":"talent-1345","ranks":[{"spellId":19434,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"An aimed shot that increases ranged damage by 5 and reduces healing done to that target by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27065,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"An aimed shot that increases ranged damage by 205 and reduces healing done to that target by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":205,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":49049,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"An aimed shot that increases ranged damage by 345 and reduces healing done to that target by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":345,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":49050,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"An aimed shot that increases ranged damage by 408 and reduces healing done to that target by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":408,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-viper","name":"Aspect of the Viper","iconBasename":"ability_hunter_aspectoftheviper","iconPath":"/assets/ui/spells/ability_hunter_aspectoftheviper.png","sourceUnlockLevel":20,"ranks":[{"spellId":34074,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"The hunter takes on the aspect of the viper, causing ranged and melee attacks to regenerate mana but reducing your total damage done by 50%. In addition, you gain 4% of maximum mana every 3 sec. Mana gained is based on the speed of your ranged weapon. Requires a ranged weapon. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":21,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":79,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-disengage","name":"Disengage","iconBasename":"ability_rogue_feint","iconPath":"/assets/ui/spells/ability_rogue_feint.png","sourceUnlockLevel":20,"ranks":[{"spellId":781,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"You attempt to disengage from combat, leaping backwards. Can only be used while in combat.","castTimeMs":0,"cooldownMs":25000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-freezing-trap","name":"Freezing Trap","iconBasename":"spell_frost_chainsofice","iconPath":"/assets/ui/spells/spell_frost_chainsofice.png","sourceUnlockLevel":20,"ranks":[{"spellId":1499,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Place a frost trap that freezes the first enemy that approaches, preventing all action for up to 30 sec. Any damage caused will break the ice. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":2561,"triggerSpellId":0,"coefficient":1}]},{"spellId":14310,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Place a frost trap that freezes the first enemy that approaches, preventing all action for up to 30 sec. Any damage caused will break the ice. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164876,"triggerSpellId":0,"coefficient":1}]},{"spellId":14311,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Place a frost trap that freezes the first enemy that approaches, preventing all action for up to 30 sec. Any damage caused will break the ice. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164877,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-scorpid-sting","name":"Scorpid Sting","iconBasename":"ability_hunter_criticalshot","iconPath":"/assets/ui/spells/ability_hunter_criticalshot.png","sourceUnlockLevel":22,"ranks":[{"spellId":3043,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Stings the target, reducing chance to hit with melee and ranged attacks by 3% for 20 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-beast-lore","name":"Beast Lore","iconBasename":"ability_physical_taunt","iconPath":"/assets/ui/spells/ability_physical_taunt.png","sourceUnlockLevel":24,"ranks":[{"spellId":1462,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Gather information about the target beast. The tooltip will display damage, health, armor, any special resistances, and diet. In addition, Beast Lore will reveal whether or not the creature is tameable and what abilities the tamed creature has.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":121,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-hidden","name":"Track Hidden","iconBasename":"ability_stealth","iconPath":"/assets/ui/spells/ability_stealth.png","sourceUnlockLevel":24,"ranks":[{"spellId":19885,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Greatly increases stealth detection and shows hidden units within detection range on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":151,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":17,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-rapid-fire","name":"Rapid Fire","iconBasename":"ability_hunter_runningshot","iconPath":"/assets/ui/spells/ability_hunter_runningshot.png","sourceUnlockLevel":26,"ranks":[{"spellId":3045,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Increases ranged attack speed by 40% for 15 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":140,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-track-elementals","name":"Track Elementals","iconBasename":"spell_frost_summonwaterelemental","iconPath":"/assets/ui/spells/spell_frost_summonwaterelemental.png","sourceUnlockLevel":26,"ranks":[{"spellId":19880,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Shows the location of all nearby elementals on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-frost-trap","name":"Frost Trap","iconBasename":"spell_frost_freezingbreath","iconPath":"/assets/ui/spells/spell_frost_freezingbreath.png","sourceUnlockLevel":28,"ranks":[{"spellId":13809,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Place a frost trap that creates an ice slick around itself for 30 sec when the first enemy approaches it. All enemies within the listed amount yards will be slowed by 1% while in the area of effect. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164639,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-aspect-of-the-beast","name":"Aspect of the Beast","iconBasename":"ability_mount_pinktiger","iconPath":"/assets/ui/spells/ability_mount_pinktiger.png","sourceUnlockLevel":30,"ranks":[{"spellId":13161,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a beast, becoming untrackable and increasing melee attack power of the hunter and the hunter's pet by 10%. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":120,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":166,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-counterattack","name":"Counterattack","iconBasename":"ability_warrior_challange","iconPath":"/assets/ui/spells/ability_warrior_challange.png","sourceUnlockLevel":30,"talentNodeId":"talent-1312","ranks":[{"spellId":19306,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":48,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20909,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":84,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20910,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":132,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27067,"rank":4,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":196,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48998,"rank":5,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":288,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48999,"rank":6,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":342,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-feign-death","name":"Feign Death","iconBasename":"ability_rogue_feigndeath","iconPath":"/assets/ui/spells/ability_rogue_feigndeath.png","sourceUnlockLevel":30,"ranks":[{"spellId":5384,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Feign death which may trick enemies into ignoring you. Lasts up to 360 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":360000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":66,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-intimidation","name":"Intimidation","iconBasename":"ability_devour","iconPath":"/assets/ui/spells/ability_devour.png","sourceUnlockLevel":30,"talentNodeId":"talent-1387","ranks":[{"spellId":19577,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Command your pet to intimidate the target on the next successful melee attack, causing a high amount of threat and stunning the target for 15 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":24394,"coefficient":0}]}]},{"id":"wow335-hunter-silencing-shot","name":"Silencing Shot","iconBasename":"ability_theblackarrow","iconPath":"/assets/ui/spells/ability_theblackarrow.png","sourceUnlockLevel":30,"talentNodeId":"talent-1808","ranks":[{"spellId":34490,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"A shot that deals 50% weapon damage and Silences the target for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":27,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":9,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-flare","name":"Flare","iconBasename":"spell_fire_flare","iconPath":"/assets/ui/spells/spell_fire_flare.png","sourceUnlockLevel":32,"ranks":[{"spellId":1543,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Exposes all hidden and invisible enemies within the listed amount yards of the targeted area for 20 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":41,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":41,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":6,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-track-demons","name":"Track Demons","iconBasename":"spell_shadow_summonfelhunter","iconPath":"/assets/ui/spells/spell_shadow_summonfelhunter.png","sourceUnlockLevel":32,"ranks":[{"spellId":19878,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Shows the location of all nearby demons on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-explosive-trap","name":"Explosive Trap","iconBasename":"spell_fire_selfdestruct","iconPath":"/assets/ui/spells/spell_fire_selfdestruct.png","sourceUnlockLevel":34,"ranks":[{"spellId":13813,"rank":1,"level":34,"sourceLevel":34,"maxScalingLevel":40,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 30 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164839,"triggerSpellId":0,"coefficient":0}]},{"spellId":14316,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":50,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 30 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164879,"triggerSpellId":0,"coefficient":0}]},{"spellId":14317,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":60,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 30 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164880,"triggerSpellId":0,"coefficient":0}]},{"spellId":27025,"rank":4,"level":61,"sourceLevel":61,"maxScalingLevel":67,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 30 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":181031,"triggerSpellId":0,"coefficient":0}]},{"spellId":49066,"rank":5,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 30 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":189321,"triggerSpellId":0,"coefficient":0}]},{"spellId":49067,"rank":6,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 30 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":189322,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-viper-sting","name":"Viper Sting","iconBasename":"ability_hunter_aimedshot","iconPath":"/assets/ui/spells/ability_hunter_aimedshot.png","sourceUnlockLevel":36,"ranks":[{"spellId":3034,"rank":0,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Stings the target, draining the listed amount% mana over 8 sec (up to a maximum of the listed amount% of the caster's maximum mana), and energizing the Hunter equal to 300% of the amount drained. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":64,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-pack","name":"Aspect of the Pack","iconBasename":"ability_mount_whitetiger","iconPath":"/assets/ui/spells/ability_mount_whitetiger.png","sourceUnlockLevel":40,"ranks":[{"spellId":13159,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"The hunter and raid members within the listed amount yards take on the aspects of a pack of cheetahs, increasing movement speed by 30%. If you are struck under the effect of this aspect, you will be dazed for 0.001 sec. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":31,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":65,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":15571,"coefficient":0}]}]},{"id":"wow335-hunter-bestial-wrath","name":"Bestial Wrath","iconBasename":"ability_druid_ferociousbite","iconPath":"/assets/ui/spells/ability_druid_ferociousbite.png","sourceUnlockLevel":40,"talentNodeId":"talent-1386","ranks":[{"spellId":19574,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Send your pet into a rage causing 50% additional damage for 18 sec. While enraged, the beast does not feel pity or remorse or fear and it cannot be stopped unless killed.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":61,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":79,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-giants","name":"Track Giants","iconBasename":"ability_racial_avatar","iconPath":"/assets/ui/spells/ability_racial_avatar.png","sourceUnlockLevel":40,"ranks":[{"spellId":19882,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Shows the location of all nearby giants on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-trueshot-aura","name":"Trueshot Aura","iconBasename":"ability_trueshot","iconPath":"/assets/ui/spells/ability_trueshot.png","sourceUnlockLevel":40,"talentNodeId":"talent-1361","ranks":[{"spellId":19506,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Increases the attack power of party and raid members within the listed amount yards by 10%. Lasts 0.001 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":167,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":45,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":65,"auraType":166,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":45,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-volley","name":"Volley","iconBasename":"ability_marksmanship","iconPath":"/assets/ui/spells/ability_marksmanship.png","sourceUnlockLevel":40,"ranks":[{"spellId":1510,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 50 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42243,"coefficient":0}]},{"spellId":42243,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 52 Arcane damage to enemy targets within the listed amount yards every second for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":52,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14294,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 65 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42244,"coefficient":0}]},{"spellId":42244,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 79 Arcane damage to enemy targets within the listed amount yards every second for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":79,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14295,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 80 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42245,"coefficient":0}]},{"spellId":42245,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 105 Arcane damage to enemy targets within the listed amount yards every second for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27022,"rank":4,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 105 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42234,"coefficient":0}]},{"spellId":42234,"rank":4,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 168 Arcane damage to enemy targets within the listed amount yards every second for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":168,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-wyvern-sting","name":"Wyvern Sting","iconBasename":"inv_spear_02","iconPath":"/assets/ui/spells/inv_spear_02.png","sourceUnlockLevel":40,"talentNodeId":"talent-1325","ranks":[{"spellId":19386,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 30 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24131,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 6 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24132,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 30 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24134,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 6 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24133,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 30 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24135,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 6 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27068,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 30 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27069,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 6 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":314,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49009,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 6 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":694,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49011,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 30 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49010,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 6 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":820,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49012,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 30 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-wild","name":"Aspect of the Wild","iconBasename":"spell_nature_protectionformnature","iconPath":"/assets/ui/spells/spell_nature_protectionformnature.png","sourceUnlockLevel":46,"ranks":[{"spellId":20043,"rank":1,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"The hunter, group and raid members within the listed amount yards take on the aspect of the wild, increasing Nature resistance by 45. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]},{"spellId":20190,"rank":2,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"The hunter, group and raid members within the listed amount yards take on the aspect of the wild, increasing Nature resistance by 60. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]},{"spellId":27045,"rank":3,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"The hunter, group and raid members within the listed amount yards take on the aspect of the wild, increasing Nature resistance by 70. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]},{"spellId":49071,"rank":4,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"The hunter, group and raid members within the listed amount yards take on the aspect of the wild, increasing Nature resistance by 130. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-black-arrow","name":"Black Arrow","iconBasename":"spell_shadow_painspike","iconPath":"/assets/ui/spells/spell_shadow_painspike.png","sourceUnlockLevel":50,"talentNodeId":"talent-1322","ranks":[{"spellId":3674,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":157,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63668,"rank":2,"level":57,"sourceLevel":57,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":188,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63669,"rank":3,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":241,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63670,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":296,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63671,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":448,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63672,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":553,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-steady-shot","name":"Steady Shot","iconBasename":"ability_hunter_steadyshot","iconPath":"/assets/ui/spells/ability_hunter_steadyshot.png","sourceUnlockLevel":50,"ranks":[{"spellId":56641,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A steady shot that causes unmodified weapon damage, plus ammo, plus the listed amountthe listed amount Causes an additional 175 against Dazed targets.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":175,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49051,"rank":3,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"A steady shot that causes unmodified weapon damage, plus ammo, plus the listed amountthe listed amount Causes an additional 175 against Dazed targets.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":198,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":175,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49052,"rank":4,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"A steady shot that causes unmodified weapon damage, plus ammo, plus the listed amountthe listed amount Causes an additional 175 against Dazed targets.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":252,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":175,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-the-beast-within","name":"The Beast Within","iconBasename":"ability_hunter_beastwithin","iconPath":"/assets/ui/spells/ability_hunter_beastwithin.png","sourceUnlockLevel":50,"passive":true,"ranks":[{"spellId":34471,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"When your pet is under the effects of Bestial Wrath, you also go into a rage causing 10% additional damage and reducing mana costs of all spells by 20% for 18 sec. While enraged, you do not feel pity or remorse or fear and you cannot be stopped unless killed.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":72,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":79,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-dragonkin","name":"Track Dragonkin","iconBasename":"inv_misc_head_dragon_01","iconPath":"/assets/ui/spells/inv_misc_head_dragon_01.png","sourceUnlockLevel":50,"ranks":[{"spellId":19879,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Shows the location of all nearby dragonkin on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-chimera-shot","name":"Chimera Shot","iconBasename":"ability_hunter_chimerashot2","iconPath":"/assets/ui/spells/ability_hunter_chimerashot2.png","sourceUnlockLevel":60,"talentNodeId":"talent-2135","ranks":[{"spellId":53209,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"You deal 125% weapon damage, refreshing the current Sting on your target and triggering an effect: Serpent Sting - Instantly deals 40% of the damage done by your Serpent Sting. Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting. Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-explosive-shot","name":"Explosive Shot","iconBasename":"ability_hunter_explosiveshot","iconPath":"/assets/ui/spells/ability_hunter_explosiveshot.png","sourceUnlockLevel":60,"talentNodeId":"talent-2145","ranks":[{"spellId":53301,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"You fire an explosive charge into the enemy target, dealing the listed amountthe listed amountthe listed amountthe listed amount Fire damage. The charge will blast the target every second for an additional 2 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":2000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":226,"basePoints":144,"dieSides":29,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-tranquilizing-shot","name":"Tranquilizing Shot","iconBasename":"spell_nature_drowsy","iconPath":"/assets/ui/spells/spell_nature_drowsy.png","sourceUnlockLevel":60,"ranks":[{"spellId":19801,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Attempts to remove 1 Enrage and 1 Magic effect from an enemy target.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":9,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-kill-command","name":"Kill Command","iconBasename":"ability_hunter_killcommand","iconPath":"/assets/ui/spells/ability_hunter_killcommand.png","sourceUnlockLevel":66,"ranks":[{"spellId":34026,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Give the command to kill, increasing your pet's damage done from special attacks by the listed amount% for 30 sec. Each special attack done by the pet reduces the damage bonus by 1%.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-snake-trap","name":"Snake Trap","iconBasename":"ability_hunter_snaketrap","iconPath":"/assets/ui/spells/ability_hunter_snaketrap.png","sourceUnlockLevel":68,"ranks":[{"spellId":34600,"rank":0,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Place a trap that will release several venomous snakes to attack the first enemy to approach. The snakes will die after 30 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":106,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":183957,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-misdirection","name":"Misdirection","iconBasename":"ability_hunter_misdirection","iconPath":"/assets/ui/spells/ability_hunter_misdirection.png","sourceUnlockLevel":70,"ranks":[{"spellId":34477,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Threat caused by your next the listed amount attacks is redirected to the target raid member. Caster and target can only be affected by one Misdirection spell at a time. Effect lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":35079,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":130,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-dragonhawk","name":"Aspect of the Dragonhawk","iconBasename":"ability_hunter_pet_dragonhawk","iconPath":"/assets/ui/spells/ability_hunter_pet_dragonhawk.png","sourceUnlockLevel":74,"ranks":[{"spellId":61846,"rank":1,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a dragonhawk, increasing ranged attack power by 230 and chance to dodge by 230%. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":230,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61847,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a dragonhawk, increasing ranged attack power by 300 and chance to dodge by 300%. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-kill-shot","name":"Kill Shot","iconBasename":"ability_hunter_assassinate2","iconPath":"/assets/ui/spells/ability_hunter_assassinate2.png","sourceUnlockLevel":75,"ranks":[{"spellId":61005,"rank":2,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"You attempt to finish the wounded target off, firing a long range attack dealing 200% weapon damage plus the listed amountthe listed amount Kill Shot can only be used on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":155,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":17,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61006,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"You attempt to finish the wounded target off, firing a long range attack dealing 200% weapon damage plus the listed amountthe listed amount Kill Shot can only be used on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":155,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":17,"auraType":0,"basePoints":325,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-call-stabled-pet","name":"Call Stabled Pet","iconBasename":"inv_box_petcarrier_01","iconPath":"/assets/ui/spells/inv_box_petcarrier_01.png","sourceUnlockLevel":80,"ranks":[{"spellId":62757,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Choose one of your stabled pets to replace your current pet. The selected pet busts out of its stable to join you no matter where you are. Cannot be used in combat.","castTimeMs":0,"cooldownMs":1800000,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":292,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-freezing-arrow","name":"Freezing Arrow","iconBasename":"spell_frost_chillingbolt","iconPath":"/assets/ui/spells/spell_frost_chillingbolt.png","sourceUnlockLevel":80,"ranks":[{"spellId":60192,"rank":1,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Fire a freezing arrow that places a Freezing Trap at the target location, freezing the first enemy that approaches, preventing all action for up to the listed duration. Any damage caused will break the ice. Trap will exist for the listed duration. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":32,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":0,"triggerSpellId":60202,"coefficient":0}]}]}],"rogue":[{"id":"wow335-rogue-adrenaline-rush","name":"Adrenaline Rush","iconBasename":"spell_shadow_shadowworddominate","iconPath":"/assets/ui/spells/spell_shadow_shadowworddominate.png","sourceUnlockLevel":1,"talentNodeId":"talent-205","ranks":[{"spellId":13750,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Increases your Energy regeneration rate by 100% for 15 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":110,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-blade-flurry","name":"Blade Flurry","iconBasename":"ability_warrior_punishingblow","iconPath":"/assets/ui/spells/ability_warrior_punishingblow.png","sourceUnlockLevel":1,"talentNodeId":"talent-223","ranks":[{"spellId":13877,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Increases your attack speed by 20%. In addition, attacks strike an additional nearby opponent. Lasts 15 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-cold-blood","name":"Cold Blood","iconBasename":"spell_ice_lament","iconPath":"/assets/ui/spells/spell_ice_lament.png","sourceUnlockLevel":1,"talentNodeId":"talent-280","ranks":[{"spellId":14177,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, increases the critical strike chance of your next offensive ability by 100%.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-eviscerate","name":"Eviscerate","iconBasename":"ability_rogue_eviscerate","iconPath":"/assets/ui/spells/ability_rogue_eviscerate.png","sourceUnlockLevel":1,"ranks":[{"spellId":2098,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":5,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6760,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":3,"dieSides":9,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6761,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":6,"dieSides":15,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6762,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":10,"dieSides":21,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8623,"rank":5,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":15,"dieSides":31,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8624,"rank":6,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":22,"dieSides":45,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11299,"rank":7,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":34,"dieSides":69,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11300,"rank":8,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":48,"dieSides":97,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":31016,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":54,"dieSides":109,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26865,"rank":10,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":60,"dieSides":121,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48667,"rank":11,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":104,"dieSides":209,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48668,"rank":12,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":127,"dieSides":255,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-ghostly-strike","name":"Ghostly Strike","iconBasename":"spell_shadow_curse","iconPath":"/assets/ui/spells/spell_shadow_curse.png","sourceUnlockLevel":1,"talentNodeId":"talent-303","ranks":[{"spellId":14278,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"A strike that deals 125% weapon damage and increases your chance to dodge by 15% for 7 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":20000,"gcdMs":1000,"durationMs":7000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":49,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-hunger-for-blood","name":"Hunger For Blood","iconBasename":"ability_rogue_hungerforblood","iconPath":"/assets/ui/spells/ability_rogue_hungerforblood.png","sourceUnlockLevel":1,"talentNodeId":"talent-2071","ranks":[{"spellId":51662,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Enrages you, increasing all damage caused by 15%. Requires a bleed effect to be active on the target. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":15,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-killing-spree","name":"Killing Spree","iconBasename":"ability_rogue_murderspree","iconPath":"/assets/ui/spells/ability_rogue_murderspree.png","sourceUnlockLevel":1,"talentNodeId":"talent-2076","ranks":[{"spellId":51690,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Step through the shadows from enemy to enemy within 10 yards, attacking an enemy every .5 secs with both weapons until 5 assaults are made, and increasing all damage done by 1% for the duration. Can hit the same target multiple times. Cannot hit invisible or stealthed targets.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1000,"durationMs":2000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":226,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":500,"miscValue":3,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":263,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-preparation","name":"Preparation","iconBasename":"spell_shadow_antishadow","iconPath":"/assets/ui/spells/spell_shadow_antishadow.png","sourceUnlockLevel":1,"talentNodeId":"talent-284","ranks":[{"spellId":14185,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, this ability immediately finishes the cooldown on your Evasion, Sprint, Vanish, Cold Blood and Shadowstep abilities.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-riposte","name":"Riposte","iconBasename":"ability_warrior_challange","iconPath":"/assets/ui/spells/ability_warrior_challange.png","sourceUnlockLevel":1,"talentNodeId":"talent-301","ranks":[{"spellId":14251,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals 150% weapon damage and slows their melee attack speed by 20% for 30 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1000,"durationMs":30000,"channelDurationMs":0,"powerType":3,"powerCost":10,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-shadowstep","name":"Shadowstep","iconBasename":"ability_rogue_shadowstep","iconPath":"/assets/ui/spells/ability_rogue_shadowstep.png","sourceUnlockLevel":1,"talentNodeId":"talent-1714","ranks":[{"spellId":36554,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Attempts to step through the shadows and reappear behind your enemy and increases movement speed by 70% for 3 sec. The damage of your next ability is increased by 1% and the threat caused is reduced by 1%. Lasts 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":10,"powerCostPercentage":0,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36563,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":44373,"coefficient":0},{"index":2,"effectType":6,"auraType":31,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-sinister-strike","name":"Sinister Strike","iconBasename":"spell_shadow_ritualofsacrifice","iconPath":"/assets/ui/spells/spell_shadow_ritualofsacrifice.png","sourceUnlockLevel":1,"ranks":[{"spellId":1752,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"An instant strike that causes 3 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1757,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"An instant strike that causes 6 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1758,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"An instant strike that causes 10 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1759,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"An instant strike that causes 15 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1760,"rank":5,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"An instant strike that causes 22 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":22,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8621,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"An instant strike that causes 33 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11293,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"An instant strike that causes 52 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":52,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11294,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"An instant strike that causes 68 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":68,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26861,"rank":9,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"An instant strike that causes 80 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26862,"rank":10,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"An instant strike that causes 98 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48637,"rank":11,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"An instant strike that causes 150 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48638,"rank":12,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"An instant strike that causes 180 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":180,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-stealth","name":"Stealth","iconBasename":"ability_stealth","iconPath":"/assets/ui/spells/ability_stealth.png","sourceUnlockLevel":1,"ranks":[{"spellId":1784,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":19,"description":"Allows the rogue to sneak around, but reduces your speed by 50%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":16,"basePoints":5,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1785,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":39,"description":"Allows the rogue to sneak around, but reduces your speed by 40%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":16,"basePoints":100,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1786,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":59,"description":"Allows the rogue to sneak around, but reduces your speed by 35%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":16,"basePoints":200,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1787,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Allows the rogue to sneak around, but reduces your speed by 30%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":16,"basePoints":300,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-backstab","name":"Backstab","iconBasename":"ability_backstab","iconPath":"/assets/ui/spells/ability_backstab.png","sourceUnlockLevel":4,"ranks":[{"spellId":53,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2589,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2590,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2591,"rank":4,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":46,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8721,"rank":5,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11279,"rank":6,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11280,"rank":7,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11281,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25300,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26863,"rank":10,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48656,"rank":11,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":255,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48657,"rank":12,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":310,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-pick-pocket","name":"Pick Pocket","iconBasename":"inv_misc_bag_11","iconPath":"/assets/ui/spells/inv_misc_bag_11.png","sourceUnlockLevel":4,"ranks":[{"spellId":921,"rank":0,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Pick the target's pocket.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":71,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-gouge","name":"Gouge","iconBasename":"ability_gouge","iconPath":"/assets/ui/spells/ability_gouge.png","sourceUnlockLevel":6,"ranks":[{"spellId":1776,"rank":0,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Causes the listed amountthe listed amount damage, incapacitating the opponent for 4 sec, and turns off your attack. Target must be facing you. Any damage caused will revive the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":4000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":14,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-evasion","name":"Evasion","iconBasename":"spell_shadow_shadowward","iconPath":"/assets/ui/spells/spell_shadow_shadowward.png","sourceUnlockLevel":8,"ranks":[{"spellId":5277,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"The rogue's dodge chance will increase by 50% for 15 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":49,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26669,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Increases the rogue's dodge chance by 50% and reduces the chance ranged attacks hit the rogue by 25%. Lasts 15 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":49,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":185,"basePoints":-25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-sap","name":"Sap","iconBasename":"ability_sap","iconPath":"/assets/ui/spells/ability_sap.png","sourceUnlockLevel":10,"ranks":[{"spellId":6770,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Incapacitates the target for up to 25 sec. Must be stealthed. Only works on Humanoids that are not in combat. Any damage caused will revive the target. Only 1 target may be sapped at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":25000,"channelDurationMs":0,"powerType":3,"powerCost":65,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2070,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Incapacitates the target for up to 35 sec. Must be stealthed. Only works on Humanoids that are not in combat. Any damage caused will revive the target. Only 1 target may be sapped at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":35000,"channelDurationMs":0,"powerType":3,"powerCost":65,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11297,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Incapacitates the target for up to 45 sec. Must be stealthed. Only works on Humanoids that are not in combat. Any damage caused will revive the target. Only 1 target may be sapped at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":45000,"channelDurationMs":0,"powerType":3,"powerCost":65,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":51724,"rank":4,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Incapacitates the target for up to 60 sec. Must be stealthed. Only works on Humanoids, Beasts, Demons and Dragonkin that are not in combat. Any damage caused will revive the target. Only 1 target may be sapped at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":3,"powerCost":65,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-slice-and-dice","name":"Slice and Dice","iconBasename":"ability_rogue_slicedice","iconPath":"/assets/ui/spells/ability_rogue_slicedice.png","sourceUnlockLevel":10,"ranks":[{"spellId":5171,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Finishing move that increases melee attack speed by 20%. Lasts longer per combo point: 1 point : 9 seconds 2 points: 12 seconds 3 points: 15 seconds 4 points: 18 seconds 5 points: 21 seconds","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":138,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6774,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Finishing move that increases melee attack speed by 40%. Lasts longer per combo point: 1 point : 9 seconds 2 points: 12 seconds 3 points: 15 seconds 4 points: 18 seconds 5 points: 21 seconds","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":138,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-sprint","name":"Sprint","iconBasename":"ability_rogue_sprint","iconPath":"/assets/ui/spells/ability_rogue_sprint.png","sourceUnlockLevel":10,"ranks":[{"spellId":2983,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Increases the rogue's movement speed by 50% for 15 sec. Does not break stealth.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8696,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Increases the rogue's movement speed by 60% for 15 sec. Does not break stealth.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11305,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Increases the rogue's movement speed by 70% for 15 sec. Does not break stealth.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-kick","name":"Kick","iconBasename":"ability_kick","iconPath":"/assets/ui/spells/ability_kick.png","sourceUnlockLevel":12,"ranks":[{"spellId":1766,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"A quick kick that interrupts spellcasting and prevents any spell in that school from being cast for 5 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":5000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-expose-armor","name":"Expose Armor","iconBasename":"ability_warrior_riposte","iconPath":"/assets/ui/spells/ability_warrior_riposte.png","sourceUnlockLevel":14,"ranks":[{"spellId":8647,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Finishing move that exposes the target, reducing armor by 20% and lasting longer per combo point: 1 point : 6 sec. 2 points: 12 sec. 3 points: 18 sec. 4 points: 24 sec. 5 points: 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":30000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":101,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-garrote","name":"Garrote","iconBasename":"ability_rogue_garrote","iconPath":"/assets/ui/spells/ability_rogue_garrote.png","sourceUnlockLevel":14,"ranks":[{"spellId":703,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(20+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8631,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(27+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8632,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(37+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8633,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(45+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11289,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(57+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":57,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11290,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(71+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":71,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26839,"rank":7,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Garrote the enemy, silencing them for 18 sec and causing the listed amount(85+the listed amount)*6} damage over 18 sec, increased by attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1330,"coefficient":0}]},{"spellId":26884,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Garrote the enemy, silencing them for 18 sec causing the listed amount(102+the listed amount)*6} damage over 18 sec, increased by attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":102,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1330,"coefficient":0}]},{"spellId":48675,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Garrote the enemy, silencing them for 18 sec causing the listed amount(110+the listed amount)*6} damage over 18 sec, increased by attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1330,"coefficient":0}]},{"spellId":48676,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Garrote the enemy, silencing them for 18 sec causing the listed amount(119+the listed amount)*6} damage over 18 sec, increased by attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":119,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1330,"coefficient":0}]}]},{"id":"wow335-rogue-feint","name":"Feint","iconBasename":"ability_rogue_feint","iconPath":"/assets/ui/spells/ability_rogue_feint.png","sourceUnlockLevel":16,"ranks":[{"spellId":1966,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":26,"description":"Performs a feint, causing no damage but lowering your threat by a small amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-150,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6768,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":38,"description":"Performs a feint, causing no damage but lowering your threat by a medium amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-240,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8637,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":50,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-390,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11303,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":62,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-600,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25302,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-800,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27448,"rank":6,"level":64,"sourceLevel":64,"maxScalingLevel":70,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-1050,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48658,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-1765,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48659,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you. In addition, reduces the damage you take from area of effect attacks by 50% for 6 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-2162,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":229,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-ambush","name":"Ambush","iconBasename":"ability_rogue_ambush","iconPath":"/assets/ui/spells/ability_rogue_ambush.png","sourceUnlockLevel":18,"ranks":[{"spellId":8676,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":28,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8724,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8725,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11267,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":74,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11268,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":92,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11269,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":116,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27441,"rank":7,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":134,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48689,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48690,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":280,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48691,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":330,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-dismantle","name":"Dismantle","iconBasename":"ability_rogue_dismantle","iconPath":"/assets/ui/spells/ability_rogue_dismantle.png","sourceUnlockLevel":20,"ranks":[{"spellId":51722,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Disarm the enemy, removing all weapons, shield or other equipment carried for 10 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1000,"durationMs":10000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":278,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":254,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":67,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-premeditation","name":"Premeditation","iconBasename":"spell_shadow_possession","iconPath":"/assets/ui/spells/spell_shadow_possession.png","sourceUnlockLevel":20,"talentNodeId":"talent-381","ranks":[{"spellId":14183,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"When used, adds 2 combo points to your target. You must add to or use those combo points within 20 sec or the combo points are lost.","castTimeMs":0,"cooldownMs":20000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":148,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-rupture","name":"Rupture","iconBasename":"ability_rogue_rupture","iconPath":"/assets/ui/spells/ability_rogue_rupture.png","sourceUnlockLevel":20,"ranks":[{"spellId":1943,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(8+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(8+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(8+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(8+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(8+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8639,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(12+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(12+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(12+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(12+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8640,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(18+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(18+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(18+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(18+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(18+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11273,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(27+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(27+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(27+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(27+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(27+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11274,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(37+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(37+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(37+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(37+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(37+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11275,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(60+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(60+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(60+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(60+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(60+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26867,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(70+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(70+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(70+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(70+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(70+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48671,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(107+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(107+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(107+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(107+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(107+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":107,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48672,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(127+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(127+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(127+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(127+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(127+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":127,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-distract","name":"Distract","iconBasename":"ability_rogue_distract","iconPath":"/assets/ui/spells/ability_rogue_distract.png","sourceUnlockLevel":22,"ranks":[{"spellId":1725,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Throws a distraction, attracting the attention of all nearby monsters for 10 seconds. Does not break stealth.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":69,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-vanish","name":"Vanish","iconBasename":"ability_vanish","iconPath":"/assets/ui/spells/ability_vanish.png","sourceUnlockLevel":22,"ranks":[{"spellId":1856,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":41,"description":"Allows the rogue to vanish from sight, entering an improved stealth mode for the listed duration. Also breaks movement impairing effects.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":11327,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":18461,"coefficient":0},{"index":2,"effectType":79,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1857,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":61,"description":"Allows the rogue to vanish from sight, entering an improved stealth mode for the listed duration. Also breaks movement impairing effects. More effective than Vanish (Rank 1).","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":11329,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":18461,"coefficient":0},{"index":2,"effectType":79,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26889,"rank":3,"level":62,"sourceLevel":62,"maxScalingLevel":81,"description":"Allows the rogue to vanish from sight, entering an improved stealth mode for the listed duration. Also breaks movement impairing effects. More effective than Vanish (Rank 2).","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26888,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":18461,"coefficient":0},{"index":2,"effectType":79,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-cheap-shot","name":"Cheap Shot","iconBasename":"ability_cheapshot","iconPath":"/assets/ui/spells/ability_cheapshot.png","sourceUnlockLevel":26,"ranks":[{"spellId":1833,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Stuns the target for 4 sec. Must be stealthed. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":4000,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-disarm-trap","name":"Disarm Trap","iconBasename":"spell_shadow_grimward","iconPath":"/assets/ui/spells/spell_shadow_grimward.png","sourceUnlockLevel":30,"ranks":[{"spellId":1842,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Disarm a hostile trap.","castTimeMs":1000,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":33,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":23,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-hemorrhage","name":"Hemorrhage","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":30,"talentNodeId":"talent-681","ranks":[{"spellId":16511,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 13. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":17347,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 21. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":17348,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 29. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":26864,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 42. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":48660,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 75. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-kidney-shot","name":"Kidney Shot","iconBasename":"ability_rogue_kidneyshot","iconPath":"/assets/ui/spells/ability_rogue_kidneyshot.png","sourceUnlockLevel":30,"ranks":[{"spellId":408,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Finishing move that stuns the target. Lasts longer per combo point: 1 point : 1 second 2 points: 2 seconds 3 points: 3 seconds 4 points: 4 seconds 5 points: 5 seconds","castTimeMs":0,"cooldownMs":20000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8643,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Finishing move that stuns the target. Lasts longer per combo point: 1 point : 2 seconds 2 points: 3 seconds 3 points: 4 seconds 4 points: 5 seconds 5 points: 6 seconds","castTimeMs":0,"cooldownMs":20000,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-blind","name":"Blind","iconBasename":"spell_shadow_mindsteal","iconPath":"/assets/ui/spells/spell_shadow_mindsteal.png","sourceUnlockLevel":34,"ranks":[{"spellId":2094,"rank":0,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Blinds the target, causing it to wander disoriented for up to 10 sec. Any damage caused will remove the effect.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1000,"durationMs":10000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":5,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-mutilate","name":"Mutilate","iconBasename":"ability_rogue_shadowstrikes","iconPath":"/assets/ui/spells/ability_rogue_shadowstrikes.png","sourceUnlockLevel":40,"talentNodeId":"talent-1719","ranks":[{"spellId":1329,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 2 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":5374,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":27576,"coefficient":1}]},{"spellId":34411,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 2 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34414,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34415,"coefficient":1}]},{"spellId":34412,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 2 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34416,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34417,"coefficient":1}]},{"spellId":34413,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 2 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34419,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34418,"coefficient":1}]},{"spellId":48663,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 2 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48662,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48661,"coefficient":1}]},{"spellId":48666,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 2 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48665,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48664,"coefficient":1}]}]},{"id":"wow335-rogue-shadow-dance","name":"Shadow Dance","iconBasename":"ability_rogue_shadowdance","iconPath":"/assets/ui/spells/ability_rogue_shadowdance.png","sourceUnlockLevel":60,"talentNodeId":"talent-2081","ranks":[{"spellId":51713,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Enter the Shadow Dance for 6 sec, allowing the use of Sap, Garrote, Ambush, Cheap Shot, Premeditation, Pickpocket and Disarm Trap regardless of being stealthed.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":275,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":13,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-envenom","name":"Envenom","iconBasename":"ability_rogue_disembowel","iconPath":"/assets/ui/spells/ability_rogue_disembowel.png","sourceUnlockLevel":62,"ranks":[{"spellId":32645,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":68,"description":"Finishing move that consumes your Deadly Poison doses on the target and deals instant poison damage. Following the Envenom attack you have an additional 15% chance to apply Deadly Poison and a 75% increased frequency of applying Instant Poison for 1 sec plus an additional 1 sec per combo point. One dose is consumed for each combo point: 1 dose: the listed amountthe listed amount damage 2 doses: the listed amountthe listed amount damage 3 doses: the listed amountthe listed amount damage 4 doses: the listed amountthe listed amount damage 5 doses: the listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":118,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":26,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":107,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]},{"spellId":32684,"rank":2,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Finishing move that consumes your Deadly Poison doses on the target and deals instant poison damage. Following the Envenom attack you have an additional 15% chance to apply Deadly Poison and a 75% increased frequency of applying Instant Poison for 1 sec plus an additional 1 sec per combo point. One dose is consumed for each combo point: 1 dose: the listed amountthe listed amount damage 2 doses: the listed amountthe listed amount damage 3 doses: the listed amountthe listed amount damage 4 doses: the listed amountthe listed amount damage 5 doses: the listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":148,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":26,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":107,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]},{"spellId":57992,"rank":3,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Finishing move that consumes your Deadly Poison doses on the target and deals instant poison damage. Following the Envenom attack you have an additional 15% chance to apply Deadly Poison and a 75% increased frequency of applying Instant Poison for 1 sec plus an additional 1 sec per combo point. One dose is consumed for each combo point: 1 dose: the listed amountthe listed amount damage 2 doses: the listed amountthe listed amount damage 3 doses: the listed amountthe listed amount damage 4 doses: the listed amountthe listed amount damage 5 doses: the listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":176,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":26,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":107,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]},{"spellId":57993,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Finishing move that consumes your Deadly Poison doses on the target and deals instant poison damage. Following the Envenom attack you have an additional 15% chance to apply Deadly Poison and a 75% increased frequency of applying Instant Poison for 1 sec plus an additional 1 sec per combo point. One dose is consumed for each combo point: 1 dose: the listed amountthe listed amount damage 2 doses: the listed amountthe listed amount damage 3 doses: the listed amountthe listed amount damage 4 doses: the listed amountthe listed amount damage 5 doses: the listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":216,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":26,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":107,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-deadly-throw","name":"Deadly Throw","iconBasename":"inv_throwingknife_06","iconPath":"/assets/ui/spells/inv_throwingknife_06.png","sourceUnlockLevel":64,"ranks":[{"spellId":26679,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Finishing move that reduces the movement of the target by 50% for 6 sec and causes increased thrown weapon damage: 1 point : the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":74,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":59,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48673,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Finishing move that reduces the movement of the target by 50% for 6 sec and causes increased thrown weapon damage: 1 point : the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":74,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":81,"dieSides":23,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48674,"rank":3,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Finishing move that reduces the movement of the target by 50% for 6 sec and causes increased thrown weapon damage: 1 point : the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":74,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":126,"dieSides":37,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-cloak-of-shadows","name":"Cloak of Shadows","iconBasename":"spell_shadow_nethercloak","iconPath":"/assets/ui/spells/spell_shadow_nethercloak.png","sourceUnlockLevel":66,"ranks":[{"spellId":31224,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Instantly removes all existing harmful spell effects and increases your chance to resist all spells by 90% for 5 sec. Does not remove effects that prevent you from using Cloak of Shadows.","castTimeMs":0,"cooldownMs":90000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":186,"basePoints":-90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":35729,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-shiv","name":"Shiv","iconBasename":"inv_throwingknife_04","iconPath":"/assets/ui/spells/inv_throwingknife_04.png","sourceUnlockLevel":70,"ranks":[{"spellId":5938,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Performs an instant off-hand weapon attack that automatically applies the poison from your off-hand weapon to the target. Slower weapons require more Energy. Neither Shiv nor the poison it applies can be a critical strike. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-tricks-of-the-trade","name":"Tricks of the Trade","iconBasename":"ability_rogue_tricksofthetrade","iconPath":"/assets/ui/spells/ability_rogue_tricksofthetrade.png","sourceUnlockLevel":75,"ranks":[{"spellId":57933,"rank":0,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"The current party or raid member becomes the target of your Tricks of the Trade. The threat caused by your next attack and all actions taken for 6 sec afterwards will be transferred to the target. In addition, all damage caused by the target is increased by 15% during this time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":57934,"rank":0,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"The current party or raid member becomes the target of your Tricks of the Trade. The threat caused by your next damaging attack and all actions taken for 30 sec afterwards will be transferred to the target. In addition, all damage caused by the target is increased by 100% during this time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":30000,"channelDurationMs":0,"powerType":3,"powerCost":15,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":130,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-fan-of-knives","name":"Fan of Knives","iconBasename":"ability_rogue_fanofknives","iconPath":"/assets/ui/spells/ability_rogue_fanofknives.png","sourceUnlockLevel":80,"ranks":[{"spellId":51723,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Instantly throw both weapons at all targets within the listed amount yards, causing the listed amount% weapon damage with daggers, and 100% weapon damage with all other weapons.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}],"priest":[{"id":"wow335-priest-inner-focus","name":"Inner Focus","iconBasename":"spell_frost_windwalkon","iconPath":"/assets/ui/spells/spell_frost_windwalkon.png","sourceUnlockLevel":1,"talentNodeId":"talent-348","ranks":[{"spellId":14751,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, reduces the mana cost of your next spell by 100% and increases its critical effect chance by 25% if it is capable of a critical effect.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":107,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-lesser-heal","name":"Lesser Heal","iconBasename":"spell_holy_lesserheal","iconPath":"/assets/ui/spells/spell_holy_lesserheal.png","sourceUnlockLevel":1,"ranks":[{"spellId":2050,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":3,"description":"Heal your target for 56.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":46,"dieSides":11,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.23100000619888306}]},{"spellId":2052,"rank":2,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Heal your target for 85.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":71,"dieSides":15,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4309999942779541}]},{"spellId":2053,"rank":3,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Heal your target for 157.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":135,"dieSides":23,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8389999866485596}]}]},{"id":"wow335-priest-pain-suppression","name":"Pain Suppression","iconBasename":"spell_holy_painsupression","iconPath":"/assets/ui/spells/spell_holy_painsupression.png","sourceUnlockLevel":1,"talentNodeId":"talent-1774","ranks":[{"spellId":33206,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Instantly reduces a friendly target's threat by 40%, reduces all damage taken by 40% and increases resistance to Dispel mechanics by 65% for 8 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":87,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":235,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-power-word-fortitude","name":"Power Word: Fortitude","iconBasename":"spell_holy_wordfortitude","iconPath":"/assets/ui/spells/spell_holy_wordfortitude.png","sourceUnlockLevel":1,"ranks":[{"spellId":1243,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":10,"description":"Power infuses the target, increasing their Stamina by 3 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":1244,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":22,"description":"Power infuses the target, increasing their Stamina by 8 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":1245,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":34,"description":"Power infuses the target, increasing their Stamina by 20 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":2791,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":46,"description":"Power infuses the target, increasing their Stamina by 32 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":10937,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":58,"description":"Power infuses the target, increasing their Stamina by 43 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":10938,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Power infuses the target, increasing their Stamina by 54 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":25389,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Power infuses the target increasing their Stamina by 79 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":79,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":48161,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Power infuses the target increasing their Stamina by 165 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-psychic-horror","name":"Psychic Horror","iconBasename":"spell_shadow_psychichorrors","iconPath":"/assets/ui/spells/spell_shadow_psychichorrors.png","sourceUnlockLevel":1,"talentNodeId":"talent-1908","ranks":[{"spellId":64044,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"You terrify the target, causing them to tremble in horror for 3 sec and drop their main hand and ranged weapons for 3 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":64058,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-shadowform","name":"Shadowform","iconBasename":"spell_shadow_shadowform","iconPath":"/assets/ui/spells/spell_shadow_shadowform.png","sourceUnlockLevel":1,"talentNodeId":"talent-521","ranks":[{"spellId":15473,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Assume a Shadowform, increasing your Shadow damage by 15%, reducing all damage done to you by 15% and threat generated by 1%. However, you may not cast Holy spells while in this form except Cure Disease and Abolish Disease. Grants the periodic damage from your Shadow Word: Pain, Devouring Plague, and Vampiric Touch spells the ability to critically hit for 15% increased damage.","castTimeMs":0,"cooldownMs":1500,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":28,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":79,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":-15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-silence","name":"Silence","iconBasename":"spell_shadow_impphaseshift","iconPath":"/assets/ui/spells/spell_shadow_impphaseshift.png","sourceUnlockLevel":1,"talentNodeId":"talent-541","ranks":[{"spellId":15487,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Silences the target, preventing them from casting spells for 5 sec.","castTimeMs":0,"cooldownMs":45000,"gcdMs":0,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":225,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":27,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-smite","name":"Smite","iconBasename":"spell_holy_holysmite","iconPath":"/assets/ui/spells/spell_holy_holysmite.png","sourceUnlockLevel":1,"ranks":[{"spellId":585,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":6,"description":"Smite an enemy for 17 Holy damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":13,"dieSides":5,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.12300000339746475}]},{"spellId":591,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Smite an enemy for 31 Holy damage.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":25,"dieSides":7,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2709999978542328}]},{"spellId":598,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Smite an enemy for 62 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":54,"dieSides":9,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5540000200271606}]},{"spellId":984,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Smite an enemy for 105 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":91,"dieSides":15,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":1004,"rank":5,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Smite an enemy for 170 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":150,"dieSides":21,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":6060,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Smite an enemy for 240 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":212,"dieSides":29,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":10933,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Smite an enemy for 323 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":287,"dieSides":37,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":10934,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Smite an enemy for 415 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":371,"dieSides":45,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":25363,"rank":9,"level":61,"sourceLevel":61,"maxScalingLevel":66,"description":"Smite an enemy for 453 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":405,"dieSides":49,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":25364,"rank":10,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Smite an enemy for 611 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":545,"dieSides":67,"pointsPerLevel":4.099999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":48122,"rank":11,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Smite an enemy for 676 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":604,"dieSides":73,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":48123,"rank":12,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Smite an enemy for 793 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":707,"dieSides":87,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]}]},{"id":"wow335-priest-vampiric-embrace","name":"Vampiric Embrace","iconBasename":"spell_shadow_unsummonbuilding","iconPath":"/assets/ui/spells/spell_shadow_unsummonbuilding.png","sourceUnlockLevel":1,"talentNodeId":"talent-484","ranks":[{"spellId":15286,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Afflicts your target with Shadow energy that causes you to be healed for 15% and other party members to be healed for the listed amount% of any Shadow spell damage you deal for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-priest-vampiric-touch","name":"Vampiric Touch","iconBasename":"spell_holy_stoicism","iconPath":"/assets/ui/spells/spell_holy_stoicism.png","sourceUnlockLevel":1,"talentNodeId":"talent-1779","ranks":[{"spellId":34914,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":34916,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":34917,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48159,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":147,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48160,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":34919,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Causes Shadow damage to your target and causes all party members to gain mana equal to a percentage of any Shadow spell damage you deal.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":30,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-shadow-word-pain","name":"Shadow Word: Pain","iconBasename":"spell_shadow_shadowwordpain","iconPath":"/assets/ui/spells/spell_shadow_shadowwordpain.png","sourceUnlockLevel":4,"ranks":[{"spellId":589,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":594,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":17,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":970,"rank":3,"level":18,"sourceLevel":18,"maxScalingLevel":25,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":992,"rank":4,"level":26,"sourceLevel":26,"maxScalingLevel":33,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2767,"rank":5,"level":34,"sourceLevel":34,"maxScalingLevel":41,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10892,"rank":6,"level":42,"sourceLevel":42,"maxScalingLevel":49,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":77,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10893,"rank":7,"level":50,"sourceLevel":50,"maxScalingLevel":57,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":101,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10894,"rank":8,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":128,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25367,"rank":9,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":151,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25368,"rank":10,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":186,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48124,"rank":11,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":196,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48125,"rank":12,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":230,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-power-word-shield","name":"Power Word: Shield","iconBasename":"spell_holy_powerwordshield","iconPath":"/assets/ui/spells/spell_holy_powerwordshield.png","sourceUnlockLevel":6,"ranks":[{"spellId":17,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Draws on the soul of the party member to shield them, absorbing 44 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":44,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":592,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":17,"description":"Draws on the soul of the party member to shield them, absorbing 88 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":88,"dieSides":1,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":600,"rank":3,"level":18,"sourceLevel":18,"maxScalingLevel":23,"description":"Draws on the soul of the party member to shield them, absorbing 158 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":158,"dieSides":1,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":3747,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Draws on the soul of the party member to shield them, absorbing 234 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":234,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":6065,"rank":5,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Draws on the soul of the party member to shield them, absorbing 301 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":301,"dieSides":1,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":6066,"rank":6,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Draws on the soul of the party member to shield them, absorbing 381 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":381,"dieSides":1,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10898,"rank":7,"level":42,"sourceLevel":42,"maxScalingLevel":47,"description":"Draws on the soul of the party member to shield them, absorbing 484 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":484,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10899,"rank":8,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Draws on the soul of the party member to shield them, absorbing 605 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":605,"dieSides":1,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10900,"rank":9,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Draws on the soul of the party member to shield them, absorbing 763 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":763,"dieSides":1,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10901,"rank":10,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Draws on the soul of the party member to shield them, absorbing 942 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":942,"dieSides":1,"pointsPerLevel":4.300000190734863,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":25217,"rank":11,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Draws on the soul of the party member to shield them, absorbing 1125 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1125,"dieSides":1,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":25218,"rank":12,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Draws on the soul of the party member to shield them, absorbing 1265 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1265,"dieSides":1,"pointsPerLevel":5.099999904632568,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":48065,"rank":13,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Draws on the soul of the party member to shield them, absorbing 1920 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1920,"dieSides":1,"pointsPerLevel":7.699999809265137,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":48066,"rank":14,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Draws on the soul of the party member to shield them, absorbing 2230 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 30 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":2230,"dieSides":1,"pointsPerLevel":9,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-fade","name":"Fade","iconBasename":"spell_magic_lesserinvisibilty","iconPath":"/assets/ui/spells/spell_magic_lesserinvisibilty.png","sourceUnlockLevel":8,"ranks":[{"spellId":586,"rank":0,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Fade out, temporarily reducing all your threat for 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":103,"basePoints":-90000000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-renew","name":"Renew","iconBasename":"spell_holy_renew","iconPath":"/assets/ui/spells/spell_holy_renew.png","sourceUnlockLevel":8,"ranks":[{"spellId":139,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":13,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.2070000022649765},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6074,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.29100000858306885},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6075,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":22,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":124,"triggerSpellId":0,"coefficient":0}]},{"spellId":6076,"rank":4,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":49,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6077,"rank":5,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":63,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6078,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10927,"rank":7,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":102,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10928,"rank":8,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10929,"rank":9,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":162,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25315,"rank":10,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":194,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25221,"rank":11,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":202,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25222,"rank":12,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":222,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48067,"rank":13,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":247,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48068,"rank":14,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":280,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-holy-concentration","name":"Holy Concentration","iconBasename":"spell_holy_fanaticism","iconPath":"/assets/ui/spells/spell_holy_fanaticism.png","sourceUnlockLevel":10,"passive":true,"ranks":[{"spellId":34754,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Your mana regeneration from spirit is increased by 16% for 8 sec after you critically heal with Flash Heal, Greater Heal, Binding Heal or Empowered Renew.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":110,"basePoints":16,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mind-blast","name":"Mind Blast","iconBasename":"spell_shadow_unholyfrenzy","iconPath":"/assets/ui/spells/spell_shadow_unholyfrenzy.png","sourceUnlockLevel":10,"ranks":[{"spellId":8092,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Blasts the target for 43 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":39,"dieSides":5,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2680000066757202}]},{"spellId":8102,"rank":2,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Blasts the target for 78 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":72,"dieSides":7,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.36399999260902405}]},{"spellId":8103,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Blasts the target for 120 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":112,"dieSides":9,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8104,"rank":4,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Blasts the target for 177 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":167,"dieSides":11,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8105,"rank":5,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Blasts the target for 231 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":217,"dieSides":15,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8106,"rank":6,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Blasts the target for 297 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":279,"dieSides":19,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10945,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Blasts the target for 366 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":346,"dieSides":21,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10946,"rank":8,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Blasts the target for 449 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":425,"dieSides":25,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10947,"rank":9,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Blasts the target for 531 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":503,"dieSides":29,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25372,"rank":10,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Blasts the target for 587 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":557,"dieSides":31,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25375,"rank":11,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Blasts the target for 748 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":708,"dieSides":41,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48126,"rank":12,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Blasts the target for 883 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":837,"dieSides":47,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48127,"rank":13,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Blasts the target for 1048 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":992,"dieSides":57,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-priest-resurrection","name":"Resurrection","iconBasename":"spell_holy_resurrection","iconPath":"/assets/ui/spells/spell_holy_resurrection.png","sourceUnlockLevel":10,"ranks":[{"spellId":2006,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Brings a dead player back to life with 70 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":135,"triggerSpellId":0,"coefficient":1}]},{"spellId":2010,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Brings a dead player back to life with 160 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":160,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":1}]},{"spellId":10880,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Brings a dead player back to life with 300 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":520,"triggerSpellId":0,"coefficient":1}]},{"spellId":10881,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Brings a dead player back to life with 500 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":500,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":750,"triggerSpellId":0,"coefficient":1}]},{"spellId":20770,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Brings a dead player back to life with 750 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1000,"triggerSpellId":0,"coefficient":1}]},{"spellId":25435,"rank":6,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Brings a dead player back to life with 1100 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1150,"triggerSpellId":0,"coefficient":1}]},{"spellId":48171,"rank":7,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Brings a dead player back to life with 2200 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":2200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1650,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-priest-inner-fire","name":"Inner Fire","iconBasename":"spell_holy_innerfire","iconPath":"/assets/ui/spells/spell_holy_innerfire.png","sourceUnlockLevel":12,"ranks":[{"spellId":588,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 315. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":315,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":7128,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 495. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":495,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":602,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 720. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":720,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":1006,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 945. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":945,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10951,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 1170. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10952,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 1395. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1395,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":25431,"rank":7,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 1580. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1580,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":48040,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 1800 and spell power by 95. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":135,"basePoints":95,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":95,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":48168,"rank":9,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 2440 and spell power by 120. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":2440,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":135,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-cure-disease","name":"Cure Disease","iconBasename":"spell_holy_nullifydisease","iconPath":"/assets/ui/spells/spell_holy_nullifydisease.png","sourceUnlockLevel":14,"ranks":[{"spellId":528,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Removes 1 the listed amount from the friendly target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-psychic-scream","name":"Psychic Scream","iconBasename":"spell_shadow_psychicscream","iconPath":"/assets/ui/spells/spell_shadow_psychicscream.png","sourceUnlockLevel":14,"ranks":[{"spellId":8122,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"The caster lets out a psychic scream, causing the listed amount enemies within the listed amount yards to flee for 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8124,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"The caster lets out a psychic scream, causing the listed amount enemies within the listed amount yards to flee for 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":10888,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"The caster lets out a psychic scream, causing the listed amount enemies within the listed amount yards to flee for 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":10890,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"The caster lets out a psychic scream, causing the listed amount enemies within the listed amount yards to flee for 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-priest-heal","name":"Heal","iconBasename":"spell_holy_heal","iconPath":"/assets/ui/spells/spell_holy_heal.png","sourceUnlockLevel":16,"ranks":[{"spellId":2054,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Heal your target for 341.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":295,"dieSides":47,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.371000051498413}]},{"spellId":2055,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Heal your target for 491.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":429,"dieSides":63,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":6063,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Heal your target for 642.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":566,"dieSides":77,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":6064,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Heal your target for 804.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":712,"dieSides":93,"pointsPerLevel":4.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]}]},{"id":"wow335-priest-dispel-magic","name":"Dispel Magic","iconBasename":"spell_holy_dispelmagic","iconPath":"/assets/ui/spells/spell_holy_dispelmagic.png","sourceUnlockLevel":18,"ranks":[{"spellId":527,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Dispels magic on the target, removing 1 harmful the listed amount from a friend or 1 beneficial the listed amount from an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":160,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":988,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Dispels magic on the target, removing 2 harmful the listed amount from a friend or 2 beneficial the listed amount from an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":160,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-desperate-prayer","name":"Desperate Prayer","iconBasename":"spell_holy_restoration","iconPath":"/assets/ui/spells/spell_holy_restoration.png","sourceUnlockLevel":20,"talentNodeId":"talent-442","ranks":[{"spellId":19236,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":26,"description":"Instantly heals the caster for 325.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":263,"dieSides":63,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19238,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Instantly heals the caster for 543.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":447,"dieSides":97,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19240,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":40,"description":"Instantly heals the caster for 708.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":588,"dieSides":121,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19241,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Instantly heals the caster for 994.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":834,"dieSides":161,"pointsPerLevel":6.400000095367432,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19242,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Instantly heals the caster for 1305.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1101,"dieSides":205,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19243,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Instantly heals the caster for 1562.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1324,"dieSides":239,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":25437,"rank":7,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Instantly heals the caster for 1887.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1601,"dieSides":287,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48172,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Instantly heals the caster for 3669.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3111,"dieSides":559,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48173,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Instantly heals the caster for 4384.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3716,"dieSides":669,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]}]},{"id":"wow335-priest-devouring-plague","name":"Devouring Plague","iconBasename":"spell_shadow_devouringplague","iconPath":"/assets/ui/spells/spell_shadow_devouringplague.png","sourceUnlockLevel":20,"ranks":[{"spellId":2944,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":19,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19276,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":34,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19277,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19278,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":68,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19279,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":89,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19280,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":113,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":25467,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":136,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":48299,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":143,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":48300,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":172,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]}]},{"id":"wow335-priest-fear-ward","name":"Fear Ward","iconBasename":"spell_holy_excorcism","iconPath":"/assets/ui/spells/spell_holy_excorcism.png","sourceUnlockLevel":20,"ranks":[{"spellId":6346,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Wards the friendly target against Fear. The next Fear effect used against the target will fail, using up the ward. Lasts 180 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-flash-heal","name":"Flash Heal","iconBasename":"spell_holy_flashheal","iconPath":"/assets/ui/spells/spell_holy_flashheal.png","sourceUnlockLevel":20,"ranks":[{"spellId":2061,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals a friendly target for 237.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":193,"dieSides":45,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":9472,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Heals a friendly target for 314.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":258,"dieSides":57,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":9473,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Heals a friendly target for 393.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":327,"dieSides":67,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":9474,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Heals a friendly target for 478.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":400,"dieSides":79,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10915,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Heals a friendly target for 616.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":518,"dieSides":99,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10916,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Heals a friendly target for 764.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":644,"dieSides":121,"pointsPerLevel":3.700000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10917,"rank":7,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Heals a friendly target for 958.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":812,"dieSides":147,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":25233,"rank":8,"level":61,"sourceLevel":61,"maxScalingLevel":65,"description":"Heals a friendly target for 1059.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":913,"dieSides":147,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":25235,"rank":9,"level":67,"sourceLevel":67,"maxScalingLevel":71,"description":"Heals a friendly target for 1279.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1101,"dieSides":179,"pointsPerLevel":5.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48070,"rank":10,"level":73,"sourceLevel":73,"maxScalingLevel":78,"description":"Heals a friendly target for 1832.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1578,"dieSides":255,"pointsPerLevel":8,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48071,"rank":11,"level":79,"sourceLevel":79,"maxScalingLevel":84,"description":"Heals a friendly target for 2193.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1887,"dieSides":307,"pointsPerLevel":9.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]}]},{"id":"wow335-priest-holy-fire","name":"Holy Fire","iconBasename":"spell_holy_searinglight","iconPath":"/assets/ui/spells/spell_holy_searinglight.png","sourceUnlockLevel":20,"ranks":[{"spellId":14914,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":24,"description":"Consumes the enemy in Holy flames that cause 128 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":102,"dieSides":27,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15262,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":30,"description":"Consumes the enemy in Holy flames that cause 173 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":137,"dieSides":37,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15263,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"Consumes the enemy in Holy flames that cause 252 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":200,"dieSides":53,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15264,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Consumes the enemy in Holy flames that cause 339 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":267,"dieSides":73,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15265,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Consumes the enemy in Holy flames that cause 440 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":348,"dieSides":93,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15266,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":54,"description":"Consumes the enemy in Holy flames that cause 546 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":430,"dieSides":117,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15267,"rank":7,"level":54,"sourceLevel":54,"maxScalingLevel":60,"description":"Consumes the enemy in Holy flames that cause 671 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":529,"dieSides":143,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":16,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15261,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Consumes the enemy in Holy flames that cause 811 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":639,"dieSides":173,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":25384,"rank":9,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Consumes the enemy in Holy flames that cause 895 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":705,"dieSides":191,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":48134,"rank":10,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Consumes the enemy in Holy flames that cause 928 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":732,"dieSides":197,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":48135,"rank":11,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Consumes the enemy in Holy flames that cause 1130 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":890,"dieSides":241,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]}]},{"id":"wow335-priest-holy-nova","name":"Holy Nova","iconBasename":"spell_holy_holynova","iconPath":"/assets/ui/spells/spell_holy_holynova.png","sourceUnlockLevel":20,"ranks":[{"spellId":15237,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":26,"description":"Causes an explosion of holy light around the caster, causing 32 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 32. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":28,"dieSides":5,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":23455,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":26,"description":"Causes an explosion of holy light around the caster, causing 60 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 60. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":52,"dieSides":9,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":15430,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":34,"description":"Causes an explosion of holy light around the caster, causing 58 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 58. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":50,"dieSides":9,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":23458,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":34,"description":"Causes an explosion of holy light around the caster, causing 98 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 98. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":86,"dieSides":13,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":15431,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Causes an explosion of holy light around the caster, causing 88 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 88. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":76,"dieSides":13,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":23459,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Causes an explosion of holy light around the caster, causing 139 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 139. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":121,"dieSides":19,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":27799,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":50,"description":"Causes an explosion of holy light around the caster, causing 122 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 122. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":106,"dieSides":17,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":27803,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":50,"description":"Causes an explosion of holy light around the caster, causing 187 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 187. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":161,"dieSides":27,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":27800,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":58,"description":"Causes an explosion of holy light around the caster, causing 162 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 162. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":140,"dieSides":23,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":27804,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":58,"description":"Causes an explosion of holy light around the caster, causing 271 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 271. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":235,"dieSides":37,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":27801,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Causes an explosion of holy light around the caster, causing 209 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 209. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":181,"dieSides":29,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":27805,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Causes an explosion of holy light around the caster, causing 350 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 350. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":302,"dieSides":49,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":25329,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":74,"description":"Causes an explosion of holy light around the caster, causing 446 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 446. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":384,"dieSides":63,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":25331,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":74,"description":"Causes an explosion of holy light around the caster, causing 280 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 280. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":242,"dieSides":39,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":48075,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Causes an explosion of holy light around the caster, causing 709 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 709. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":611,"dieSides":99,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":48077,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Causes an explosion of holy light around the caster, causing 387 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 387. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":333,"dieSides":55,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":48076,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Causes an explosion of holy light around the caster, causing 827 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 827. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":713,"dieSides":115,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":48078,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Causes an explosion of holy light around the caster, causing 462 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 462. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":398,"dieSides":65,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]}]},{"id":"wow335-priest-mind-flay","name":"Mind Flay","iconBasename":"spell_shadow_siphonmana","iconPath":"/assets/ui/spells/spell_shadow_siphonmana.png","sourceUnlockLevel":20,"talentNodeId":"talent-501","ranks":[{"spellId":15407,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":28,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 15%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":227,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17311,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":36,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":36,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17312,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":44,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":53,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17313,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":52,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":74,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17314,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":60,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":94,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18807,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":68,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":121,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25387,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48155,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":164,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48156,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":196,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mind-soothe","name":"Mind Soothe","iconBasename":"spell_holy_mindsooth","iconPath":"/assets/ui/spells/spell_holy_mindsooth.png","sourceUnlockLevel":20,"ranks":[{"spellId":453,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Soothes the target, reducing the range at which it will attack you by 10 yards. Only affects Humanoid targets. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-shackle-undead","name":"Shackle Undead","iconBasename":"spell_nature_slow","iconPath":"/assets/ui/spells/spell_nature_slow.png","sourceUnlockLevel":20,"ranks":[{"spellId":9484,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Shackles the target undead enemy for up to 30 sec. The shackled unit is unable to move, attack or cast spells. Any damage caused will release the target. Only one target can be shackled at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9485,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Shackles the target undead enemy for up to 40 sec. The shackled unit is unable to move, attack or cast spells. Any damage caused will release the target. Only one target can be shackled at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10955,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Shackles the target undead enemy for up to 50 sec. The shackled unit is unable to move, attack or cast spells. Any damage caused will release the target. Only one target can be shackled at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mind-vision","name":"Mind Vision","iconBasename":"spell_holy_mindvision","iconPath":"/assets/ui/spells/spell_holy_mindvision.png","sourceUnlockLevel":22,"ranks":[{"spellId":2096,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Allows the caster to see through the target's eyes for 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":1,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":68,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10909,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Allows the caster to see through the target's eyes for 60 sec. Will not work if the target is in another instance or on another continent.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":1,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":68,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mana-burn","name":"Mana Burn","iconBasename":"spell_shadow_manaburn","iconPath":"/assets/ui/spells/spell_shadow_manaburn.png","sourceUnlockLevel":24,"ranks":[{"spellId":8129,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Destroy 13% of the target's mana (up to a maximum of the listed amount% of your own maximum mana). For each mana destroyed in this way, the target takes 0.5 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":62,"auraType":0,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-divine-spirit","name":"Divine Spirit","iconBasename":"spell_holy_divinespirit","iconPath":"/assets/ui/spells/spell_holy_divinespirit.png","sourceUnlockLevel":30,"ranks":[{"spellId":14752,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":40,"description":"Holy power infuses the target, increasing their Spirit by 17 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14818,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":50,"description":"Holy power infuses the target, increasing their Spirit by 23 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":23,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14819,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":60,"description":"Holy power infuses the target, increasing their Spirit by 33 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27841,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Holy power infuses the target, increasing their Spirit by 40 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25312,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Holy power infuses the target, increasing their Spirit by 50 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48073,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Holy power infuses the target, increasing their Spirit by 80 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mind-control","name":"Mind Control","iconBasename":"spell_shadow_shadowworddominate","iconPath":"/assets/ui/spells/spell_shadow_shadowworddominate.png","sourceUnlockLevel":30,"ranks":[{"spellId":605,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Controls a humanoid mind up to level 32, but increases the time between its attacks by 25%. Lasts up to 60 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":2,"basePoints":32,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":138,"basePoints":-25,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-prayer-of-healing","name":"Prayer of Healing","iconBasename":"spell_holy_prayerofhealing02","iconPath":"/assets/ui/spells/spell_holy_prayerofhealing02.png","sourceUnlockLevel":30,"ranks":[{"spellId":596,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 321.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":301,"dieSides":21,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":996,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 472.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":444,"dieSides":29,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":10960,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 695.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":657,"dieSides":39,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":10961,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 991.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":939,"dieSides":53,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":25316,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 1053.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":997,"dieSides":57,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":25308,"rank":6,"level":68,"sourceLevel":68,"maxScalingLevel":75,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 1316.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1246,"dieSides":71,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":48072,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":82,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 2209.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2091,"dieSides":119,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]}]},{"id":"wow335-priest-shadow-protection","name":"Shadow Protection","iconBasename":"spell_shadow_antishadow","iconPath":"/assets/ui/spells/spell_shadow_antishadow.png","sourceUnlockLevel":30,"ranks":[{"spellId":976,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 30 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":10957,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 45 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":10958,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 60 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":25433,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 70 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":48169,"rank":5,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 130 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-abolish-disease","name":"Abolish Disease","iconBasename":"spell_nature_nullifydisease","iconPath":"/assets/ui/spells/spell_nature_nullifydisease.png","sourceUnlockLevel":32,"ranks":[{"spellId":552,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Attempts to cure 1 disease effect on the target, and 0 more disease effect every 3 seconds for 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":10872,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-levitate","name":"Levitate","iconBasename":"spell_holy_layonhands","iconPath":"/assets/ui/spells/spell_holy_layonhands.png","sourceUnlockLevel":34,"ranks":[{"spellId":1706,"rank":0,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Allows the friendly party or raid target to levitate, floating a few feet above the ground. While levitating, the target will fall at a reduced speed and travel over water. Any damage will cancel the effect. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":105,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":106,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":104,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-greater-heal","name":"Greater Heal","iconBasename":"spell_holy_greaterheal","iconPath":"/assets/ui/spells/spell_holy_greaterheal.png","sourceUnlockLevel":40,"ranks":[{"spellId":2060,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"A slow casting spell that heals a single target for 1013.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":899,"dieSides":115,"pointsPerLevel":5.099999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10963,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"A slow casting spell that heals a single target for 1289.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1149,"dieSides":141,"pointsPerLevel":5.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10964,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"A slow casting spell that heals a single target for 1609.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1437,"dieSides":173,"pointsPerLevel":6.599999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10965,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"A slow casting spell that heals a single target for 2006.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1798,"dieSides":209,"pointsPerLevel":7.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25314,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"A slow casting spell that heals a single target for 2194.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1966,"dieSides":229,"pointsPerLevel":8.100000381469727,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25210,"rank":6,"level":63,"sourceLevel":63,"maxScalingLevel":67,"description":"A slow casting spell that heals a single target for 2410.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2074,"dieSides":337,"pointsPerLevel":8.399999618530273,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25213,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"A slow casting spell that heals a single target for 2784.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2396,"dieSides":389,"pointsPerLevel":9.300000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":48062,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"A slow casting spell that heals a single target for 3945.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3395,"dieSides":551,"pointsPerLevel":13.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":48063,"rank":9,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"A slow casting spell that heals a single target for 4590.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3950,"dieSides":641,"pointsPerLevel":15.399999618530273,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]}]},{"id":"wow335-priest-lightwell","name":"Lightwell","iconBasename":"spell_holy_summonlightwell","iconPath":"/assets/ui/spells/spell_holy_summonlightwell.png","sourceUnlockLevel":40,"talentNodeId":"talent-1637","ranks":[{"spellId":724,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 180 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31897,"triggerSpellId":0,"coefficient":0}]},{"spellId":27870,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 180 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31896,"triggerSpellId":0,"coefficient":0}]},{"spellId":27871,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 180 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31895,"triggerSpellId":0,"coefficient":0}]},{"spellId":28275,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 180 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31894,"triggerSpellId":0,"coefficient":0}]},{"spellId":48086,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 180 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31893,"triggerSpellId":0,"coefficient":0}]},{"spellId":48087,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 180 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31883,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-power-infusion","name":"Power Infusion","iconBasename":"spell_holy_powerinfusion","iconPath":"/assets/ui/spells/spell_holy_powerinfusion.png","sourceUnlockLevel":40,"talentNodeId":"talent-322","ranks":[{"spellId":10060,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Infuses the target with power, increasing spell casting speed by 20% and reducing the mana cost of all spells by 20%. Lasts 15 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":65,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":72,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-prayer-of-fortitude","name":"Prayer of Fortitude","iconBasename":"spell_holy_prayeroffortitude","iconPath":"/assets/ui/spells/spell_holy_prayeroffortitude.png","sourceUnlockLevel":48,"ranks":[{"spellId":21562,"rank":1,"level":48,"sourceLevel":48,"maxScalingLevel":58,"description":"Power infuses all party and raid members, increasing their Stamina by 43 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":21564,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Power infuses all party and raid members, increasing their Stamina by 54 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":25392,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Power infuses all party and raid members, increasing their Stamina by 79 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":69,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":79,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":48162,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Power infuses all party and raid members, increasing their Stamina by 165 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":69,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-circle-of-healing","name":"Circle of Healing","iconBasename":"spell_holy_circleofrenewal","iconPath":"/assets/ui/spells/spell_holy_circleofrenewal.png","sourceUnlockLevel":50,"talentNodeId":"talent-1815","ranks":[{"spellId":34861,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":54,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 379.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":343,"dieSides":37,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":34863,"rank":2,"level":56,"sourceLevel":56,"maxScalingLevel":60,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 445.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":403,"dieSides":43,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":34864,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 506.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":458,"dieSides":49,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":34865,"rank":4,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 572.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":518,"dieSides":55,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":34866,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 632.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":572,"dieSides":61,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":48088,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 911.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":825,"dieSides":87,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":48089,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 1058.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":958,"dieSides":101,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]}]},{"id":"wow335-priest-prayer-of-shadow-protection","name":"Prayer of Shadow Protection","iconBasename":"spell_holy_prayerofshadowprotection","iconPath":"/assets/ui/spells/spell_holy_prayerofshadowprotection.png","sourceUnlockLevel":56,"ranks":[{"spellId":27683,"rank":1,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Power infuses the target's party and raid members, increasing their Shadow resistance by 60 for 1200 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1200000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":70,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":39374,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Power infuses the target's party and raid members, increasing their Shadow resistance by 70 for 1200 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1200000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":62,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":48170,"rank":3,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Power infuses the target's party and raid members, increasing their Shadow resistance by 130 for 1200 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1200000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":62,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-dispersion","name":"Dispersion","iconBasename":"spell_shadow_dispersion","iconPath":"/assets/ui/spells/spell_shadow_dispersion.png","sourceUnlockLevel":60,"talentNodeId":"talent-1910","ranks":[{"spellId":47585,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"You disperse into pure Shadow energy, reducing all damage taken by 90%. You are unable to attack or cast spells, but you regenerate 90% mana every 1 sec for 6 sec. Dispersion can be cast while stunned, feared or silenced and clears all snare and movement impairing effects when cast, and makes you immune to them while dispersed.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":87,"basePoints":-90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31913,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":60,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-guardian-spirit","name":"Guardian Spirit","iconBasename":"spell_holy_guardianspirit","iconPath":"/assets/ui/spells/spell_holy_guardianspirit.png","sourceUnlockLevel":60,"talentNodeId":"talent-1911","ranks":[{"spellId":47788,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Calls upon a guardian spirit to watch over the friendly target. The spirit increases the healing received by the target by 40%, and also prevents the target from dying by sacrificing itself. This sacrifice terminates the effect but heals the target of 50% of their maximum health. Lasts 10 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":69,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-penance","name":"Penance","iconBasename":"spell_holy_penance","iconPath":"/assets/ui/spells/spell_holy_penance.png","sourceUnlockLevel":60,"talentNodeId":"talent-1897","ranks":[{"spellId":47540,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Launches a volley of holy light at the target, causing 0 Holy damage to an enemy, or 0 healing to an ally instantly and every the listed interval sec for the listed duration.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":160,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-prayer-of-spirit","name":"Prayer of Spirit","iconBasename":"spell_holy_prayerofspirit","iconPath":"/assets/ui/spells/spell_holy_prayerofspirit.png","sourceUnlockLevel":60,"ranks":[{"spellId":27681,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Power infuses the target's party and raid members, increasing their Spirit by 40 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":13,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":135,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":32999,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Power infuses the target's party and raid members, increasing their Spirit by 50 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":69,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":13,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":135,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":48074,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Power infuses the target's party and raid members, increasing their Spirit by 80 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":69,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":13,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":135,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-shadow-word-death","name":"Shadow Word: Death","iconBasename":"spell_shadow_demonicfortitude","iconPath":"/assets/ui/spells/spell_shadow_demonicfortitude.png","sourceUnlockLevel":62,"ranks":[{"spellId":32379,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":69,"description":"A word of dark binding that inflicts 522 Shadow damage to the target. If the target is not killed by Shadow Word: Death, the caster takes damage equal to the damage inflicted upon the target.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":450,"dieSides":73,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":32996,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"A word of dark binding that inflicts 664 Shadow damage to the target. If the target is not killed by Shadow Word: Death, the caster takes damage equal to the damage inflicted upon the target.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":572,"dieSides":93,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48157,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"A word of dark binding that inflicts 741 Shadow damage to the target. If the target is not killed by Shadow Word: Death, the caster takes damage equal to the damage inflicted upon the target.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":639,"dieSides":103,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48158,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"A word of dark binding that inflicts 870 Shadow damage to the target. If the target is not killed by Shadow Word: Death, the caster takes damage equal to the damage inflicted upon the target.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":750,"dieSides":121,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-priest-binding-heal","name":"Binding Heal","iconBasename":"spell_holy_blindingheal","iconPath":"/assets/ui/spells/spell_holy_blindingheal.png","sourceUnlockLevel":64,"ranks":[{"spellId":32546,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":71,"description":"Heals a friendly target and the caster for 1338. Low threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1042,"dieSides":297,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508},{"index":1,"effectType":10,"auraType":0,"basePoints":1042,"dieSides":297,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48119,"rank":2,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Heals a friendly target and the caster for 2081. Low threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1619,"dieSides":463,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508},{"index":1,"effectType":10,"auraType":0,"basePoints":1619,"dieSides":463,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48120,"rank":3,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Heals a friendly target and the caster for 2508. Low threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1952,"dieSides":557,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508},{"index":1,"effectType":10,"auraType":0,"basePoints":1952,"dieSides":557,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]}]},{"id":"wow335-priest-shadowfiend","name":"Shadowfiend","iconBasename":"spell_shadow_shadowfiend","iconPath":"/assets/ui/spells/spell_shadow_shadowfiend.png","sourceUnlockLevel":66,"ranks":[{"spellId":34433,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Creates a shadowy fiend to attack the target. Caster receives 1% mana when the Shadowfiend attacks. Damage taken by area of effect attacks is reduced. Lasts 15 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":19668,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41967,"coefficient":0}]}]},{"id":"wow335-priest-prayer-of-mending","name":"Prayer of Mending","iconBasename":"spell_holy_prayerofmendingtga","iconPath":"/assets/ui/spells/spell_holy_prayerofmendingtga.png","sourceUnlockLevel":68,"ranks":[{"spellId":33076,"rank":1,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Places a spell on the target that heals them for 800 the next time they take damage. When the heal occurs, Prayer of Mending jumps to a party or raid member within the listed amount yards. Jumps up to the listed amount times and lasts the listed duration after each jump. This spell can only be placed on one target at a time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":142,"auraType":0,"basePoints":800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41635,"coefficient":0.8069999814033508},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41637,"coefficient":0}]},{"spellId":48112,"rank":2,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Places a spell on the target that heals them for 905 the next time they take damage. When the heal occurs, Prayer of Mending jumps to a party or raid member within the listed amount yards. Jumps up to the listed amount times and lasts the listed duration after each jump. This spell can only be placed on one target at a time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":142,"auraType":0,"basePoints":905,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48110,"coefficient":0.8069999814033508},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41637,"coefficient":0}]},{"spellId":48113,"rank":3,"level":79,"sourceLevel":79,"maxScalingLevel":84,"description":"Places a spell on the target that heals them for 1043 the next time they take damage. When the heal occurs, Prayer of Mending jumps to a party or raid member within the listed amount yards. Jumps up to the listed amount times and lasts the listed duration after each jump. This spell can only be placed on one target at a time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":142,"auraType":0,"basePoints":1043,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48111,"coefficient":0.8069999814033508},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41637,"coefficient":0}]}]},{"id":"wow335-priest-mass-dispel","name":"Mass Dispel","iconBasename":"spell_arcane_massdispel","iconPath":"/assets/ui/spells/spell_arcane_massdispel.png","sourceUnlockLevel":70,"ranks":[{"spellId":32375,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Dispels magic in a the listed amount yard radius, removing 1 harmful the listed amount from each friendly target and 1 beneficial the listed amount from each enemy target. Affects a maximum of the listed amount friendly targets and the listed amount enemy targets. This dispel is potent enough to remove Magic effects that are normally undispellable.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":31,"implicitTargetB":0,"radius":15,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":32592,"coefficient":0}]}]},{"id":"wow335-priest-mind-sear","name":"Mind Sear","iconBasename":"spell_shadow_mindshear","iconPath":"/assets/ui/spells/spell_shadow_mindshear.png","sourceUnlockLevel":75,"ranks":[{"spellId":48045,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Causes an explosion of shadow magic around the enemy target, causing 1 Shadow damage every the listed amount sec for 5 sec to all enemies within the listed amount yards around the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":49821,"coefficient":0}]}]},{"id":"wow335-priest-divine-hymn","name":"Divine Hymn","iconBasename":"spell_holy_divinehymn","iconPath":"/assets/ui/spells/spell_holy_divinehymn.png","sourceUnlockLevel":80,"ranks":[{"spellId":64843,"rank":1,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You recite a Holy hymn, summoning the power of the Divine to assist you in your time of need. Heals 3 nearby lowest health friendly party or raid targets for 0 every 2 sec for 8 sec, and increases healing done to them by 3% for 8 sec. Maximum of the listed amount heals. The Priest must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":63,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":64844,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":64844,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You recite a Holy hymn, summoning the power of the Divine to assist you in your time of need. Heals 10 nearby lowest health friendly party or raid targets for 3342 every the listed interval sec for 8 sec, and increases healing done to them by 10% for 8 sec. Maximum of the listed amount heals. The Priest must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3024,"dieSides":319,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":30,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5640000104904175},{"index":1,"effectType":6,"auraType":118,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":30,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]}],"death-knight":[{"id":"wow335-death-knight-blood-gorged","name":"Blood Gorged","iconBasename":"spell_nature_reincarnation","iconPath":"/assets/ui/spells/spell_nature_reincarnation.png","sourceUnlockLevel":1,"talentNodeId":"talent-2034","ranks":[{"spellId":61154,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 2% more damage. In addition, your attacks ignore up to 2% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50096,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61274,"coefficient":0}]},{"spellId":61155,"rank":2,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 4% more damage. In addition, your attacks ignore up to 4% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50108,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61275,"coefficient":0}]},{"spellId":61156,"rank":3,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 6% more damage. In addition, your attacks ignore up to 6% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50109,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61276,"coefficient":0}]},{"spellId":61157,"rank":4,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 8% more damage. In addition, your attacks ignore up to 8% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50110,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61277,"coefficient":0}]},{"spellId":61158,"rank":5,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 10% more damage. In addition, your attacks ignore up to 10% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50111,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61278,"coefficient":0}]}]},{"id":"wow335-death-knight-bone-shield","name":"Bone Shield","iconBasename":"inv_chest_leather_13","iconPath":"/assets/ui/spells/inv_chest_leather_13.png","sourceUnlockLevel":1,"talentNodeId":"talent-2007","ranks":[{"spellId":49222,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"The Death Knight is surrounded by 4 whirling bones. While at least 1 bone remains, the listed amount takes 20% less damage from all sources and deals 2% more damage with all attacks, spells and abilities. Each damaging attack that lands consumes 1 bone. Lasts 300 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":87,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":79,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-on-a-pale-horse","name":"On a Pale Horse","iconBasename":"spell_deathknight_summondeathcharger","iconPath":"/assets/ui/spells/spell_deathknight_summondeathcharger.png","sourceUnlockLevel":1,"talentNodeId":"talent-2039","ranks":[{"spellId":49146,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"You become as hard to stop as death itself. The duration of all Stun and Fear effects used against you is reduced by 10%, and your mounted speed is increased by 10%. This does not stack with other movement speed increasing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":51983,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":51969,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":51267,"rank":2,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"You become as hard to stop as death itself. The duration of all Stun and Fear effects used against you is reduced by 20%, and your mounted speed is increased by 20%. This does not stack with other movement speed increasing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":51986,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":51970,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-unbreakable-armor","name":"Unbreakable Armor","iconBasename":"inv_armor_helm_plate_naxxramas_raidwarrior_c_01","iconPath":"/assets/ui/spells/inv_armor_helm_plate_naxxramas_raidwarrior_c_01.png","sourceUnlockLevel":1,"talentNodeId":"talent-1979","ranks":[{"spellId":51271,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Reinforces your armor with a thick coat of ice, reducing damage from all attacks by the listed amountthe listed amount and increasing your Strength by 25% for 20 sec. The amount of damage reduced increases as your armor increases.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":137,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-vampiric-blood","name":"Vampiric Blood","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":1,"talentNodeId":"talent-2019","ranks":[{"spellId":55233,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Temporarily grants the Death Knight 15% of maximum health and increases the amount of health generated through spells and effects by 35% for 20 sec. After the effect expires, the health is lost.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":34,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-will-of-the-necropolis","name":"Will of the Necropolis","iconBasename":"ability_creature_cursed_02","iconPath":"/assets/ui/spells/ability_creature_cursed_02.png","sourceUnlockLevel":1,"talentNodeId":"talent-1959","ranks":[{"spellId":49189,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Damage that would take you below 35% health or taken while you are at 35% health is reduced by 35%. This effect cannot occur more often than once every 15 sec and cannot be triggered by damage which deals less than 5% of your health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":52284,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":50149,"rank":2,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Damage that would take you below 35% health or taken while you are at 35% health is reduced by 35%. This effect cannot occur more often than once every 15 sec and cannot be triggered by damage which deals less than 5% of your health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":52285,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":50150,"rank":3,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Damage that would take you below 35% health or taken while you are at 35% health is reduced by 35%. This effect cannot occur more often than once every 15 sec and cannot be triggered by damage which deals less than 5% of your health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":52286,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-ghoul-frenzy","name":"Ghoul Frenzy","iconBasename":"ability_ghoulfrenzy","iconPath":"/assets/ui/spells/ability_ghoulfrenzy.png","sourceUnlockLevel":26,"talentNodeId":"talent-2085","ranks":[{"spellId":63560,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Grants your pet 25% haste for 30 sec and heals it for the listed amount% of its health over the duration.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":9,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":20,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-acherus-deathcharger","name":"Acherus Deathcharger","iconBasename":"spell_deathknight_summondeathcharger","iconPath":"/assets/ui/spells/spell_deathknight_summondeathcharger.png","sourceUnlockLevel":55,"ranks":[{"spellId":48778,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Summons and dismisses your rideable Acherus Deathcharger. This is a very fast mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":28302,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-anti-magic-zone","name":"Anti-Magic Zone","iconBasename":"spell_deathknight_antimagiczone","iconPath":"/assets/ui/spells/spell_deathknight_antimagiczone.png","sourceUnlockLevel":55,"talentNodeId":"talent-2221","ranks":[{"spellId":51052,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Places a large, stationary Anti-Magic Zone that reduces spell damage done to party or raid members inside it by 10000%. The Anti-Magic Zone lasts for 10 sec or until it absorbs the listed amountthe listed amount spell damage.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":10000,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":18,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":28306,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-blood-presence","name":"Blood Presence","iconBasename":"spell_deathknight_bloodpresence","iconPath":"/assets/ui/spells/spell_deathknight_bloodpresence.png","sourceUnlockLevel":55,"ranks":[{"spellId":48266,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Strengthens the Death Knight with the presence of blood, increasing damage by 15% and healing the Death Knight by 15% of damage dealt. Only one Presence may be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":10,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-blood-strike","name":"Blood Strike","iconBasename":"spell_deathknight_deathstrike","iconPath":"/assets/ui/spells/spell_deathknight_deathstrike.png","sourceUnlockLevel":55,"ranks":[{"spellId":45902,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Instantly strike the enemy, causing 40% weapon damage plus the listed amount, total damage increased by the listed amount% for each of your diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":260,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-corpse-explosion","name":"Corpse Explosion","iconBasename":"ability_creature_disease_02","iconPath":"/assets/ui/spells/ability_creature_disease_02.png","sourceUnlockLevel":55,"talentNodeId":"talent-1985","ranks":[{"spellId":49158,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Cause a corpse to explode for 166 Shadow damage to all enemies within the listed amount yards. Will use a nearby corpse if the target is not a corpse. Does not affect mechanical or elemental corpses.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":166,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":50444,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":8,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-dancing-rune-weapon","name":"Dancing Rune Weapon","iconBasename":"inv_sword_07","iconPath":"/assets/ui/spells/inv_sword_07.png","sourceUnlockLevel":55,"talentNodeId":"talent-1961","ranks":[{"spellId":49028,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":80,"description":"Summons a second rune weapon that fights on its own for 12 sec, doing the same attacks as the Death Knight but for 10% reduced damage.","castTimeMs":0,"cooldownMs":90000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":6,"powerCost":600,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":64,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":27893,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":50707,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1206,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-death-coil","name":"Death Coil","iconBasename":"spell_shadow_deathcoil","iconPath":"/assets/ui/spells/spell_shadow_deathcoil.png","sourceUnlockLevel":55,"ranks":[{"spellId":47541,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 167 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":167,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49892,"rank":2,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 208 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":208,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49893,"rank":3,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 275 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49894,"rank":4,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 381 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":381,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49895,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 443 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":443,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47632,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing Shadow damage to an enemy target or healing damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":600,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47633,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing Shadow damage to an enemy target or healing damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":160,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":900,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-death-grip","name":"Death Grip","iconBasename":"spell_deathknight_strangulate","iconPath":"/assets/ui/spells/spell_deathknight_strangulate.png","sourceUnlockLevel":55,"ranks":[{"spellId":49576,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Harness the unholy energy that surrounds and binds all matter, drawing the target toward the death knight and forcing the enemy to attack the death knight for the listed duration.","castTimeMs":0,"cooldownMs":35000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-deathchill","name":"Deathchill","iconBasename":"spell_shadow_soulleech_2","iconPath":"/assets/ui/spells/spell_shadow_soulleech_2.png","sourceUnlockLevel":55,"talentNodeId":"talent-1980","ranks":[{"spellId":49796,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"When activated, makes your next Icy Touch, Howling Blast, Frost Strike or Obliterate a critical hit if used within 30 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-frost-strike","name":"Frost Strike","iconBasename":"spell_deathknight_empowerruneblade2","iconPath":"/assets/ui/spells/spell_deathknight_empowerruneblade2.png","sourceUnlockLevel":55,"talentNodeId":"talent-1975","ranks":[{"spellId":49143,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Instantly strike the enemy, causing 55% weapon damage plus the listed amount as Frost damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-heart-strike","name":"Heart Strike","iconBasename":"inv_weapon_shortblade_40","iconPath":"/assets/ui/spells/inv_weapon_shortblade_40.png","sourceUnlockLevel":55,"talentNodeId":"talent-1957","ranks":[{"spellId":55050,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Instantly strike the target and his nearest ally, causing 50% weapon damage plus the listed amount, total damage increased by 10% for each of your diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-howling-blast","name":"Howling Blast","iconBasename":"spell_frost_arcticwinds","iconPath":"/assets/ui/spells/spell_frost_arcticwinds.png","sourceUnlockLevel":55,"talentNodeId":"talent-1989","ranks":[{"spellId":49184,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Blast the target with a frigid wind dealing 214 Frost damage to all enemies within 10 yards.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":198,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-hungering-cold","name":"Hungering Cold","iconBasename":"inv_staff_15","iconPath":"/assets/ui/spells/inv_staff_15.png","sourceUnlockLevel":55,"talentNodeId":"talent-1999","ranks":[{"spellId":49203,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Purges the earth around the Death Knight of all heat. Enemies within the listed amount yards are trapped in ice, preventing them from performing any action for the listed duration and infecting them with Frost Fever. Enemies are considered Frozen, but any damage other than diseases will break the ice.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":18,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-hysteria","name":"Hysteria","iconBasename":"spell_deathknight_bladedarmor","iconPath":"/assets/ui/spells/spell_deathknight_bladedarmor.png","sourceUnlockLevel":55,"talentNodeId":"talent-1954","ranks":[{"spellId":49016,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Induces a friendly unit into a killing frenzy for 30 sec. The target is Enraged, which increases their physical damage by 20%, but causes them to lose health equal to 1% of their maximum health every second.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":226,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-icy-touch","name":"Icy Touch","iconBasename":"spell_deathknight_icetouch","iconPath":"/assets/ui/spells/spell_deathknight_icetouch.png","sourceUnlockLevel":55,"ranks":[{"spellId":45477,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Chills the target for 137 to 137 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 1% for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":127,"dieSides":11,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49896,"rank":2,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Chills the target for 156 to 156 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 1% for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":144,"dieSides":13,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49903,"rank":3,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Chills the target for 173 to 173 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 1% for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":161,"dieSides":13,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49904,"rank":4,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Chills the target for 203 to 203 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 1% for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":187,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49909,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Chills the target for 245 to 245 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 110% for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":227,"dieSides":19,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-lichborne","name":"Lichborne","iconBasename":"spell_shadow_raisedead","iconPath":"/assets/ui/spells/spell_shadow_raisedead.png","sourceUnlockLevel":55,"talentNodeId":"talent-2215","ranks":[{"spellId":49039,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Draw upon unholy energy to become undead for 10 sec. While undead, you are immune to Charm, Fear and Sleep effects.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-mark-of-blood","name":"Mark of Blood","iconBasename":"ability_hunter_rapidkilling","iconPath":"/assets/ui/spells/ability_hunter_rapidkilling.png","sourceUnlockLevel":55,"talentNodeId":"talent-1949","ranks":[{"spellId":49005,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Place a Mark of Blood on an enemy. Whenever the marked enemy deals damage to a target, that target is healed for 4% of its maximum health. Lasts for 20 sec or up to the listed amount hits.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-plague-strike","name":"Plague Strike","iconBasename":"spell_deathknight_empowerruneblade","iconPath":"/assets/ui/spells/spell_deathknight_empowerruneblade.png","sourceUnlockLevel":55,"ranks":[{"spellId":45462,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49917,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":151,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49918,"rank":3,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":178,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49919,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":216,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49920,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":314,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49921,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":378,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]}]},{"id":"wow335-death-knight-rune-tap","name":"Rune Tap","iconBasename":"spell_deathknight_runetap","iconPath":"/assets/ui/spells/spell_deathknight_runetap.png","sourceUnlockLevel":55,"talentNodeId":"talent-1941","ranks":[{"spellId":48982,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Converts 1 Blood Rune into 10% of your maximum health.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":136,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-scourge-strike","name":"Scourge Strike","iconBasename":"spell_deathknight_scourgestrike","iconPath":"/assets/ui/spells/spell_deathknight_scourgestrike.png","sourceUnlockLevel":55,"talentNodeId":"talent-2216","ranks":[{"spellId":55090,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"An unholy strike that deals 40% of weapon damage as Shadow damage plus the listed amount, total damage increased 10% per each of your diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":270,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-summon-gargoyle","name":"Summon Gargoyle","iconBasename":"ability_hunter_pet_bat","iconPath":"/assets/ui/spells/ability_hunter_pet_bat.png","sourceUnlockLevel":55,"talentNodeId":"talent-2000","ranks":[{"spellId":49206,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"A Gargoyle flies into the area and bombards the target with Nature damage modified by the Death Knight's attack power. Persists for 40 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":6,"powerCost":600,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":27829,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":226,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61777,"coefficient":0}]}]},{"id":"wow335-death-knight-death-strike","name":"Death Strike","iconBasename":"spell_deathknight_butcher2","iconPath":"/assets/ui/spells/spell_deathknight_butcher2.png","sourceUnlockLevel":56,"ranks":[{"spellId":49998,"rank":1,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":112,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":406,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49999,"rank":2,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":498,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":45463,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":630,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49923,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1118,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49924,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":297,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1310,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-pestilence","name":"Pestilence","iconBasename":"spell_shadow_plaguecloud","iconPath":"/assets/ui/spells/spell_shadow_plaguecloud.png","sourceUnlockLevel":56,"ranks":[{"spellId":50842,"rank":0,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Spreads existing Blood Plague and Frost Fever infections from your target to all other enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-raise-dead","name":"Raise Dead","iconBasename":"spell_shadow_animatedead","iconPath":"/assets/ui/spells/spell_shadow_animatedead.png","sourceUnlockLevel":56,"ranks":[{"spellId":46584,"rank":0,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Raises a Ghoul to fight by your side. If no humanoid corpse that yields experience or honor is available, you must supply Corpse Dust to complete the spell. You can have a maximum of one Ghoul at a time. Lasts the listed duration.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":46585,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":8,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":52150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-frost-presence","name":"Frost Presence","iconBasename":"spell_deathknight_frostpresence","iconPath":"/assets/ui/spells/spell_deathknight_frostpresence.png","sourceUnlockLevel":57,"ranks":[{"spellId":48263,"rank":0,"level":57,"sourceLevel":57,"maxScalingLevel":0,"description":"The death knight takes on the presence of frost, increasing Stamina by 60%, armor contribution from cloth, leather, mail and plate items by 60%, and reducing damage taken by 5%. Increases threat generated. Only one Presence may be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":142,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":10,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-mind-freeze","name":"Mind Freeze","iconBasename":"spell_deathknight_mindfreeze","iconPath":"/assets/ui/spells/spell_deathknight_mindfreeze.png","sourceUnlockLevel":57,"ranks":[{"spellId":47528,"rank":0,"level":57,"sourceLevel":57,"maxScalingLevel":0,"description":"Smash the target's mind with cold, interrupting spellcasting and preventing any spell in that school from being cast for 4 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":4000,"channelDurationMs":0,"powerType":6,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-blood-boil","name":"Blood Boil","iconBasename":"spell_deathknight_bloodboil","iconPath":"/assets/ui/spells/spell_deathknight_bloodboil.png","sourceUnlockLevel":58,"ranks":[{"spellId":48721,"rank":1,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Boils the blood of all enemies within the listed amount yards, dealing 107 Shadow damage. Deals additional damage to targets infected with Blood Plague or Frost Fever.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":89,"dieSides":19,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49939,"rank":2,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Boils the blood of all enemies within the listed amount yards, dealing 140 Shadow damage. Deals additional damage to targets infected with Blood Plague or Frost Fever.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":116,"dieSides":25,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49940,"rank":3,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Boils the blood of all enemies within the listed amount yards, dealing 181 Shadow damage. Deals additional damage to targets infected with Blood Plague or Frost Fever.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":149,"dieSides":33,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49941,"rank":4,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Boils the blood of all enemies within the listed amount yards, dealing 220 Shadow damage. Deals additional damage to targets infected with Blood Plague or Frost Fever.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":180,"dieSides":41,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-chains-of-ice","name":"Chains of Ice","iconBasename":"spell_frost_chainsofice","iconPath":"/assets/ui/spells/spell_frost_chainsofice.png","sourceUnlockLevel":58,"ranks":[{"spellId":45524,"rank":0,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Shackles the target with frozen chains, reducing their movement by 1%. The target regains the listed amount% of their movement each second for the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":47805,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-strangulate","name":"Strangulate","iconBasename":"spell_shadow_soulleech_3","iconPath":"/assets/ui/spells/spell_shadow_soulleech_3.png","sourceUnlockLevel":59,"ranks":[{"spellId":47476,"rank":0,"level":59,"sourceLevel":59,"maxScalingLevel":0,"description":"Strangulates an enemy, silencing them for 5 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":27,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":9,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-death-and-decay","name":"Death and Decay","iconBasename":"spell_shadow_deathanddecay","iconPath":"/assets/ui/spells/spell_shadow_deathanddecay.png","sourceUnlockLevel":60,"ranks":[{"spellId":43265,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Corrupts the ground targeted by the Death Knight, causing 26 Shadow damage every sec that targets remain in the area for 10 sec. This ability produces a high amount of threat.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":226,"basePoints":26,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49936,"rank":2,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Corrupts the ground targeted by the Death Knight, causing 34 Shadow damage every sec that targets remain in the area for 10 sec. This ability produces a high amount of threat.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":226,"basePoints":34,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":10,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49937,"rank":3,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Corrupts the ground targeted by the Death Knight, causing 49 Shadow damage every sec that targets remain in the area for 10 sec. This ability produces a high amount of threat.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":226,"basePoints":49,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49938,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Corrupts the ground targeted by the Death Knight, causing 62 Shadow damage every sec that targets remain in the area for 10 sec. This ability produces a high amount of threat.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":226,"basePoints":62,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-obliterate","name":"Obliterate","iconBasename":"spell_deathknight_classicon","iconPath":"/assets/ui/spells/spell_deathknight_classicon.png","sourceUnlockLevel":61,"ranks":[{"spellId":49020,"rank":1,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"A brutal instant attack that deals 80% weapon damage plus the listed amount, total damage increased the listed amount% per each of your diseases on the target, but consumes the diseases.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":248,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-icebound-fortitude","name":"Icebound Fortitude","iconBasename":"spell_deathknight_iceboundfortitude","iconPath":"/assets/ui/spells/spell_deathknight_iceboundfortitude.png","sourceUnlockLevel":62,"ranks":[{"spellId":48792,"rank":0,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"The Death Knight freezes the listed amount blood to become immune to Stun effects and reduce all damage taken by 20% plus additional damage reduction based on Defense for 12 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":12000,"channelDurationMs":0,"powerType":6,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-blood-tap","name":"Blood Tap","iconBasename":"spell_deathknight_bloodtap","iconPath":"/assets/ui/spells/spell_deathknight_bloodtap.png","sourceUnlockLevel":64,"ranks":[{"spellId":45529,"rank":0,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Immediately activates a Blood Rune and converts it into a Death Rune for the next 20 sec. Death Runes count as a Blood, Frost or Unholy Rune.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":146,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":249,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":30,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-death-pact","name":"Death Pact","iconBasename":"spell_shadow_deathpact","iconPath":"/assets/ui/spells/spell_shadow_deathpact.png","sourceUnlockLevel":66,"ranks":[{"spellId":48743,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Sacrifices an undead minion, healing the Death Knight for 40% of the listed amount maximum health. This heal cannot be a critical.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":1,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":31,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":10,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-anti-magic-shell","name":"Anti-Magic Shell","iconBasename":"spell_shadow_antimagicshell","iconPath":"/assets/ui/spells/spell_shadow_antimagicshell.png","sourceUnlockLevel":68,"ranks":[{"spellId":48707,"rank":0,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Surrounds the Death Knight in an Anti-Magic Shell, absorbing 75% of the damage dealt by harmful spells (up to a maximum of 50% of the Death Knight's health) and preventing application of harmful magical effects. Damage absorbed by Anti-Magic Shell energizes the Death Knight with additional runic power. Lasts 5 sec.","castTimeMs":0,"cooldownMs":45000,"gcdMs":0,"durationMs":5000,"channelDurationMs":0,"powerType":6,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":267,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-unholy-presence","name":"Unholy Presence","iconBasename":"spell_deathknight_unholypresence","iconPath":"/assets/ui/spells/spell_deathknight_unholypresence.png","sourceUnlockLevel":70,"ranks":[{"spellId":48265,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Infuses the death knight with unholy fury, increasing attack speed by 15%, movement speed by 15% and reducing the global cooldown on all abilities by the listed amount sec. Only one Presence may be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":107,"basePoints":-500,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":21,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":10,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-empower-rune-weapon","name":"Empower Rune Weapon","iconBasename":"inv_sword_62","iconPath":"/assets/ui/spells/inv_sword_62.png","sourceUnlockLevel":75,"ranks":[{"spellId":47568,"rank":0,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Empower your rune weapon, immediately activating all your runes and generating 25 runic power.","castTimeMs":0,"cooldownMs":300000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":146,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":146,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":53258,"coefficient":0}]}]},{"id":"wow335-death-knight-army-of-the-dead","name":"Army of the Dead","iconBasename":"spell_deathknight_armyofthedead","iconPath":"/assets/ui/spells/spell_deathknight_armyofthedead.png","sourceUnlockLevel":80,"ranks":[{"spellId":42650,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons an entire legion of Ghouls to fight for the Death Knight. The Ghouls will swarm the area, taunting and fighting anything they can. While channelling Army of the Dead, the Death Knight takes less damage equal to the listed amount Dodge plus Parry chance.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":750,"miscValue":0,"triggerSpellId":42651,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}],"shaman":[{"id":"wow335-shaman-dual-wield","name":"Dual Wield","iconBasename":"ability_dualwield","iconPath":"/assets/ui/spells/ability_dualwield.png","sourceUnlockLevel":1,"talentNodeId":"talent-1690","ranks":[{"spellId":30798,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Allows one-hand and off-hand weapons to be equipped in the off-hand.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":674,"coefficient":1}]}]},{"id":"wow335-shaman-earth-shield","name":"Earth Shield","iconBasename":"spell_nature_skinofearth","iconPath":"/assets/ui/spells/spell_nature_skinofearth.png","sourceUnlockLevel":1,"talentNodeId":"talent-1698","ranks":[{"spellId":974,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 150. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":32593,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 205. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":205,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":32594,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 270. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":270,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":49283,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 300. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":49284,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 337. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":337,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":379,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Protects the target with an earthen shield, giving a chance of ignoring spell interruption when damaged and causing attacks to heal the shielded target. This effect can only occur once every few seconds. Limited charges. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-elemental-mastery","name":"Elemental Mastery","iconBasename":"spell_nature_wispheal","iconPath":"/assets/ui/spells/spell_nature_wispheal.png","sourceUnlockLevel":1,"talentNodeId":"talent-573","ranks":[{"spellId":16166,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your next Lightning Bolt, Chain Lightning or Lava Burst spell becomes an instant cast spell. In addition, your Fire, Frost, and Nature damage spells have a 100% increased critical strike chance for 30 sec. Elemental Mastery shares a cooldown with Nature's Swiftness.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":64701,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-healing-wave","name":"Healing Wave","iconBasename":"spell_nature_magicimmunity","iconPath":"/assets/ui/spells/spell_nature_magicimmunity.png","sourceUnlockLevel":1,"ranks":[{"spellId":331,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Heals a friendly target for 44.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":34,"dieSides":11,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.23100000619888306}]},{"spellId":332,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Heals a friendly target for 78.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":64,"dieSides":15,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5099999904632568}]},{"spellId":547,"rank":3,"level":12,"sourceLevel":12,"maxScalingLevel":17,"description":"Heals a friendly target for 155.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":129,"dieSides":27,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.9399999976158142}]},{"spellId":913,"rank":4,"level":18,"sourceLevel":18,"maxScalingLevel":23,"description":"Heals a friendly target for 316.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":268,"dieSides":49,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.4910000562667847}]},{"spellId":939,"rank":5,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Heals a friendly target for 440.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":376,"dieSides":65,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":959,"rank":6,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Heals a friendly target for 622.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":536,"dieSides":87,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":8005,"rank":7,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Heals a friendly target for 854.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":740,"dieSides":115,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10395,"rank":8,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Heals a friendly target for 1167.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1017,"dieSides":151,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10396,"rank":9,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Heals a friendly target for 1561.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1367,"dieSides":195,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25357,"rank":10,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 1850.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1620,"dieSides":231,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25391,"rank":11,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Heals a friendly target for 1969.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1725,"dieSides":245,"pointsPerLevel":6.300000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25396,"rank":12,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals a friendly target for 2436.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2134,"dieSides":303,"pointsPerLevel":7.099999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":49272,"rank":13,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals a friendly target for 2996.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2624,"dieSides":373,"pointsPerLevel":8,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":49273,"rank":14,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals a friendly target for 3466.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3034,"dieSides":433,"pointsPerLevel":9,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]}]},{"id":"wow335-shaman-lightning-bolt","name":"Lightning Bolt","iconBasename":"spell_nature_lightning","iconPath":"/assets/ui/spells/spell_nature_lightning.png","sourceUnlockLevel":1,"ranks":[{"spellId":403,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":6,"description":"Casts a bolt of lightning at the target for 15 Nature damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":13,"dieSides":3,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.125}]},{"spellId":529,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":13,"description":"Casts a bolt of lightning at the target for 30 Nature damage.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":26,"dieSides":5,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.31700000166893005}]},{"spellId":548,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Casts a bolt of lightning at the target for 53 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":9,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5609999895095825}]},{"spellId":915,"rank":4,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Casts a bolt of lightning at the target for 95 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":83,"dieSides":13,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":943,"rank":5,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Casts a bolt of lightning at the target for 143 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":125,"dieSides":19,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":6041,"rank":6,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Casts a bolt of lightning at the target for 194 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":172,"dieSides":23,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":10391,"rank":7,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Casts a bolt of lightning at the target for 255 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":227,"dieSides":29,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":10392,"rank":8,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Casts a bolt of lightning at the target for 316 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":282,"dieSides":35,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":15207,"rank":9,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Casts a bolt of lightning at the target for 389 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":347,"dieSides":43,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":15208,"rank":10,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Casts a bolt of lightning at the target for 467 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":419,"dieSides":49,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":25448,"rank":11,"level":62,"sourceLevel":62,"maxScalingLevel":66,"description":"Casts a bolt of lightning at the target for 565 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":495,"dieSides":71,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":25449,"rank":12,"level":67,"sourceLevel":67,"maxScalingLevel":71,"description":"Casts a bolt of lightning at the target for 643 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":563,"dieSides":81,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":49237,"rank":13,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Casts a bolt of lightning at the target for 679 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":595,"dieSides":85,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":49239,"rank":13,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Casts a bolt of lightning at the target for 339 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":297,"dieSides":43,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3569999933242798}]},{"spellId":49238,"rank":14,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Casts a bolt of lightning at the target for 815 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":715,"dieSides":101,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":49240,"rank":14,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Casts a bolt of lightning at the target for 407 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":357,"dieSides":51,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3569999933242798}]}]},{"id":"wow335-shaman-nature-s-swiftness","name":"Nature's Swiftness","iconBasename":"spell_nature_ravenform","iconPath":"/assets/ui/spells/spell_nature_ravenform.png","sourceUnlockLevel":1,"talentNodeId":"talent-591","ranks":[{"spellId":16188,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your next Nature spell with a base casting time less than 10 sec. becomes an instant cast spell. Nature's Swiftness shares a cooldown with Elemental Mastery.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-rockbiter-weapon","name":"Rockbiter Weapon","iconBasename":"spell_nature_rockbiter","iconPath":"/assets/ui/spells/spell_nature_rockbiter.png","sourceUnlockLevel":1,"ranks":[{"spellId":8017,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":6,"description":"Imbue the Shaman's weapon, increasing its damage per second by 2. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":3,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":1,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8018,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":14,"description":"Imbue the Shaman's weapon, increasing its damage per second by 4. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":3,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":1,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8019,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":22,"description":"Imbue the Shaman's weapon, increasing its damage per second by 6. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":3,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":1,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10399,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":32,"description":"Imbue the Shaman's weapon, increasing its damage per second by 9. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":3,"auraType":0,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":1,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-spirit-weapons","name":"Spirit Weapons","iconBasename":"ability_parry","iconPath":"/assets/ui/spells/ability_parry.png","sourceUnlockLevel":1,"talentNodeId":"talent-616","ranks":[{"spellId":16268,"rank":0,"level":0,"sourceLevel":1,"maxScalingLevel":0,"description":"Gives a chance to parry enemy melee attacks and reduces all threat generated by 0%.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":6,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":18848,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36591,"coefficient":0}]}]},{"id":"wow335-shaman-earth-shock","name":"Earth Shock","iconBasename":"spell_nature_earthshock","iconPath":"/assets/ui/spells/spell_nature_earthshock.png","sourceUnlockLevel":4,"ranks":[{"spellId":8042,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Instantly shocks the target with concussive force, causing 19 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":17,"dieSides":3,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15399999916553497}]},{"spellId":8044,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":13,"description":"Instantly shocks the target with concussive force, causing 34 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":32,"dieSides":3,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21199999749660492}]},{"spellId":8045,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Instantly shocks the target with concussive force, causing 64 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":60,"dieSides":5,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.29899999499320984}]},{"spellId":8046,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Instantly shocks the target with concussive force, causing 127 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":119,"dieSides":9,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10412,"rank":5,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Instantly shocks the target with concussive force, causing 239 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":225,"dieSides":15,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10413,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Instantly shocks the target with concussive force, causing 381 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":359,"dieSides":23,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10414,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Instantly shocks the target with concussive force, causing 545 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":517,"dieSides":29,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":25454,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Instantly shocks the target with concussive force, causing 692 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":658,"dieSides":35,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":49230,"rank":9,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Instantly shocks the target with concussive force, causing 761 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":723,"dieSides":39,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":49231,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Instantly shocks the target with concussive force, causing 895 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":849,"dieSides":47,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]}]},{"id":"wow335-shaman-stoneskin-totem","name":"Stoneskin Totem","iconBasename":"spell_nature_stoneskintotem","iconPath":"/assets/ui/spells/spell_nature_stoneskintotem.png","sourceUnlockLevel":4,"ranks":[{"spellId":8071,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5873,"triggerSpellId":0,"coefficient":0}]},{"spellId":8154,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5919,"triggerSpellId":0,"coefficient":0}]},{"spellId":8155,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5920,"triggerSpellId":0,"coefficient":0}]},{"spellId":10406,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7366,"triggerSpellId":0,"coefficient":0}]},{"spellId":10407,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7367,"triggerSpellId":0,"coefficient":0}]},{"spellId":10408,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7368,"triggerSpellId":0,"coefficient":0}]},{"spellId":25508,"rank":7,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15470,"triggerSpellId":0,"coefficient":0}]},{"spellId":25509,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15474,"triggerSpellId":0,"coefficient":0}]},{"spellId":58751,"rank":9,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31175,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-earthbind-totem","name":"Earthbind Totem","iconBasename":"spell_nature_strengthofearthtotem02","iconPath":"/assets/ui/spells/spell_nature_strengthofearthtotem02.png","sourceUnlockLevel":6,"ranks":[{"spellId":2484,"rank":0,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Summons an Earthbind Totem with 5 health at the feet of the caster for 45 sec that slows the movement speed of enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2630,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-lightning-shield","name":"Lightning Shield","iconBasename":"spell_nature_lightningshield","iconPath":"/assets/ui/spells/spell_nature_lightningshield.png","sourceUnlockLevel":8,"ranks":[{"spellId":324,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 13 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.1469999998807907}]},{"spellId":325,"rank":2,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 29 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.22699999809265137}]},{"spellId":905,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 51 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":51,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":945,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 80 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":8134,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 114 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":114,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":10431,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 154 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":154,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":10432,"rank":7,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 198 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":198,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":25469,"rank":8,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 232 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":25472,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 287 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":287,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":26372,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Casts a bolt of lightning at the target for 287 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":287,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2669999897480011}]},{"spellId":49278,"rank":10,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Casts a bolt of lightning at the target for 325 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":325,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2669999897480011}]},{"spellId":49280,"rank":10,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 325 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":325,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":49279,"rank":11,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Casts a bolt of lightning at the target for 380 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":380,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2669999897480011}]},{"spellId":49281,"rank":11,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 380 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":380,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]}]},{"id":"wow335-shaman-stoneclaw-totem","name":"Stoneclaw Totem","iconBasename":"spell_nature_stoneclawtotem","iconPath":"/assets/ui/spells/spell_nature_stoneclawtotem.png","sourceUnlockLevel":8,"ranks":[{"spellId":5730,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 50 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 50 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3579,"triggerSpellId":0,"coefficient":0}]},{"spellId":6390,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 150 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 150 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3911,"triggerSpellId":0,"coefficient":0}]},{"spellId":6391,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 220 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 220 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":220,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3912,"triggerSpellId":0,"coefficient":0}]},{"spellId":6392,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 280 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 280 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":280,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3913,"triggerSpellId":0,"coefficient":0}]},{"spellId":10427,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 390 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 390 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":390,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7398,"triggerSpellId":0,"coefficient":0}]},{"spellId":10428,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 480 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 480 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":480,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7399,"triggerSpellId":0,"coefficient":0}]},{"spellId":25525,"rank":7,"level":67,"sourceLevel":67,"maxScalingLevel":70,"description":"Summons a Stoneclaw Totem with 1315 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 1315 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1315,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15478,"triggerSpellId":0,"coefficient":0}]},{"spellId":58580,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":74,"description":"Summons a Stoneclaw Totem with 1400 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 1400 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1400,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31120,"triggerSpellId":0,"coefficient":0}]},{"spellId":58581,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":77,"description":"Summons a Stoneclaw Totem with 1510 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 1510 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1510,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31121,"triggerSpellId":0,"coefficient":0}]},{"spellId":58582,"rank":10,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Summons a Stoneclaw Totem with 1620 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 15 sec. Stoneclaw totem also protects all your totems, causing them to absorb 1620 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1620,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31122,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-flame-shock","name":"Flame Shock","iconBasename":"spell_fire_flameshock","iconPath":"/assets/ui/spells/spell_fire_flameshock.png","sourceUnlockLevel":10,"ranks":[{"spellId":8050,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Instantly sears the target with fire, causing 21 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":21,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1340000033378601},{"index":1,"effectType":6,"auraType":3,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.06300000101327896}]},{"spellId":8052,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":23,"description":"Instantly sears the target with fire, causing 45 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1979999989271164},{"index":1,"effectType":6,"auraType":3,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09300000220537186}]},{"spellId":8053,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Instantly sears the target with fire, causing 86 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":86,"dieSides":1,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":10447,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Instantly sears the target with fire, causing 152 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":152,"dieSides":1,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":10448,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Instantly sears the target with fire, causing 230 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":230,"dieSides":1,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":29228,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":67,"description":"Instantly sears the target with fire, causing 309 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":309,"dieSides":1,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":86,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":25457,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Instantly sears the target with fire, causing 377 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":377,"dieSides":1,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":49232,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Instantly sears the target with fire, causing 425 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":425,"dieSides":1,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":119,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":49233,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Instantly sears the target with fire, causing 500 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":500,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":139,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]}]},{"id":"wow335-shaman-flametongue-weapon","name":"Flametongue Weapon","iconBasename":"spell_fire_flametounge","iconPath":"/assets/ui/spells/spell_fire_flametounge.png","sourceUnlockLevel":10,"ranks":[{"spellId":8024,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":16,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0}]},{"spellId":8027,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":24,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":8030,"rank":3,"level":26,"sourceLevel":26,"maxScalingLevel":34,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":16339,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":44,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":523,"triggerSpellId":0,"coefficient":0}]},{"spellId":16341,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":54,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1665,"triggerSpellId":0,"coefficient":0}]},{"spellId":16342,"rank":6,"level":56,"sourceLevel":56,"maxScalingLevel":64,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1666,"triggerSpellId":0,"coefficient":0}]},{"spellId":25489,"rank":7,"level":64,"sourceLevel":64,"maxScalingLevel":68,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2634,"triggerSpellId":0,"coefficient":0}]},{"spellId":58785,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3779,"triggerSpellId":0,"coefficient":0}]},{"spellId":58790,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by the listed amount. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3781,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-searing-totem","name":"Searing Totem","iconBasename":"spell_fire_searingtotem","iconPath":"/assets/ui/spells/spell_fire_searingtotem.png","sourceUnlockLevel":10,"ranks":[{"spellId":3599,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 30 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2523,"triggerSpellId":0,"coefficient":0}]},{"spellId":6363,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 35 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":35000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3902,"triggerSpellId":0,"coefficient":0}]},{"spellId":6364,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 40 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3903,"triggerSpellId":0,"coefficient":0}]},{"spellId":6365,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 45 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3904,"triggerSpellId":0,"coefficient":0}]},{"spellId":10437,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 50 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7400,"triggerSpellId":0,"coefficient":0}]},{"spellId":10438,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 55 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":55000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7402,"triggerSpellId":0,"coefficient":0}]},{"spellId":25533,"rank":7,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 60 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15480,"triggerSpellId":0,"coefficient":0}]},{"spellId":58699,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 60 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31162,"triggerSpellId":0,"coefficient":0}]},{"spellId":58703,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 60 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31164,"triggerSpellId":0,"coefficient":0}]},{"spellId":58704,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 60 sec that repeatedly attacks an enemy within the listed amount yards for 5 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31165,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-strength-of-earth-totem","name":"Strength of Earth Totem","iconBasename":"spell_nature_earthbindtotem","iconPath":"/assets/ui/spells/spell_nature_earthbindtotem.png","sourceUnlockLevel":10,"ranks":[{"spellId":8075,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by the listed amount. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5874,"triggerSpellId":0,"coefficient":0}]},{"spellId":8160,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by the listed amount. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5921,"triggerSpellId":0,"coefficient":0}]},{"spellId":8161,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by the listed amount. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5922,"triggerSpellId":0,"coefficient":0}]},{"spellId":10442,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by the listed amount. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7403,"triggerSpellId":0,"coefficient":0}]},{"spellId":25361,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by the listed amount. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15464,"triggerSpellId":0,"coefficient":0}]},{"spellId":25528,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by the listed amount. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15479,"triggerSpellId":0,"coefficient":0}]},{"spellId":57622,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by the listed amount. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30647,"triggerSpellId":0,"coefficient":0}]},{"spellId":58643,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by the listed amount. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31129,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-ancestral-spirit","name":"Ancestral Spirit","iconBasename":"spell_nature_regenerate","iconPath":"/assets/ui/spells/spell_nature_regenerate.png","sourceUnlockLevel":12,"ranks":[{"spellId":2008,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 65 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":120,"triggerSpellId":0,"coefficient":1}]},{"spellId":20609,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 150 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":260,"triggerSpellId":0,"coefficient":1}]},{"spellId":20610,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 250 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":420,"triggerSpellId":0,"coefficient":1}]},{"spellId":20776,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 400 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":600,"triggerSpellId":0,"coefficient":1}]},{"spellId":20777,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 600 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":600,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":800,"triggerSpellId":0,"coefficient":1}]},{"spellId":25590,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 840 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":840,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":890,"triggerSpellId":0,"coefficient":1}]},{"spellId":49277,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 1800 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1365,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-fire-nova-totem","name":"Fire Nova Totem","iconBasename":"spell_fire_sealoffire","iconPath":"/assets/ui/spells/spell_fire_sealoffire.png","sourceUnlockLevel":12,"ranks":[{"spellId":1535,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5879,"triggerSpellId":0,"coefficient":0}]},{"spellId":8498,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6110,"triggerSpellId":0,"coefficient":0}]},{"spellId":8499,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6111,"triggerSpellId":0,"coefficient":0}]},{"spellId":11314,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7844,"triggerSpellId":0,"coefficient":0}]},{"spellId":11315,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7845,"triggerSpellId":0,"coefficient":0}]},{"spellId":25546,"rank":6,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15482,"triggerSpellId":0,"coefficient":0}]},{"spellId":25547,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15483,"triggerSpellId":0,"coefficient":0}]},{"spellId":61649,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32776,"triggerSpellId":0,"coefficient":0}]},{"spellId":61657,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within the listed interval sec., the totem inflicts 5 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32775,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-purge","name":"Purge","iconBasename":"spell_nature_purge","iconPath":"/assets/ui/spells/spell_nature_purge.png","sourceUnlockLevel":12,"ranks":[{"spellId":370,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Purges the enemy target, removing 1 beneficial magic the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":8012,"rank":2,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Purges the enemy target, removing 2 beneficial magic the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-ghost-wolf","name":"Ghost Wolf","iconBasename":"spell_nature_spiritwolf","iconPath":"/assets/ui/spells/spell_nature_spiritwolf.png","sourceUnlockLevel":16,"ranks":[{"spellId":2645,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Turns the Shaman into a Ghost Wolf, increasing speed by 40%$?s59289[ and regenerating 0% of your maximum health every 5 sec][]. As a Ghost Wolf, the Shaman is less hindered by effects that would reduce movement speed. Only useable outdoors.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":20,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-wind-shear","name":"Wind Shear","iconBasename":"spell_nature_cyclone","iconPath":"/assets/ui/spells/spell_nature_cyclone.png","sourceUnlockLevel":16,"ranks":[{"spellId":57994,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Instantly blasts the target with a gust of wind, causing no damage but interrupting spellcasting and preventing any spell in that school from being cast for 2 sec. Also lowers your threat, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":2000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":63,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-tremor-totem","name":"Tremor Totem","iconBasename":"spell_nature_tremortotem","iconPath":"/assets/ui/spells/spell_nature_tremortotem.png","sourceUnlockLevel":18,"ranks":[{"spellId":8143,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Summons a Tremor Totem with 5 health at the feet of the caster that shakes the ground around it, removing Fear, Charm and Sleep effects from party members within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5913,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-frost-shock","name":"Frost Shock","iconBasename":"spell_frost_frostshock","iconPath":"/assets/ui/spells/spell_frost_frostshock.png","sourceUnlockLevel":20,"ranks":[{"spellId":8056,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Instantly shocks the target with frost, causing 95 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":89,"dieSides":7,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":8058,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Instantly shocks the target with frost, causing 220 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":206,"dieSides":15,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10472,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Instantly shocks the target with frost, causing 353 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":333,"dieSides":21,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10473,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Instantly shocks the target with frost, causing 514 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":486,"dieSides":29,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":25464,"rank":5,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Instantly shocks the target with frost, causing 676 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":640,"dieSides":37,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":49235,"rank":6,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Instantly shocks the target with frost, causing 719 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":681,"dieSides":39,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":49236,"rank":7,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Instantly shocks the target with frost, causing 848 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":802,"dieSides":47,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]}]},{"id":"wow335-shaman-frostbrand-weapon","name":"Frostbrand Weapon","iconBasename":"spell_frost_frostbrand","iconPath":"/assets/ui/spells/spell_frost_frostbrand.png","sourceUnlockLevel":20,"ranks":[{"spellId":8033,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":26,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing the listed amount additional Frost damage and slowing the target's movement speed by 1800% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":8038,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":36,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing the listed amount additional Frost damage and slowing the target's movement speed by 1800% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":0}]},{"spellId":10456,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":46,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing the listed amount additional Frost damage and slowing the target's movement speed by 1800% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":524,"triggerSpellId":0,"coefficient":0}]},{"spellId":16355,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":56,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing the listed amount additional Frost damage and slowing the target's movement speed by 1800% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1667,"triggerSpellId":0,"coefficient":0}]},{"spellId":16356,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":65,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing the listed amount additional Frost damage and slowing the target's movement speed by 1800% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1668,"triggerSpellId":0,"coefficient":0}]},{"spellId":25500,"rank":6,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing the listed amount additional Frost damage and slowing the target's movement speed by 1800% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2635,"triggerSpellId":0,"coefficient":0}]},{"spellId":58794,"rank":7,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing the listed amount additional Frost damage and slowing the target's movement speed by 1800% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3782,"triggerSpellId":0,"coefficient":0}]},{"spellId":58795,"rank":8,"level":76,"sourceLevel":76,"maxScalingLevel":80,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing the listed amount additional Frost damage and slowing the target's movement speed by 1800% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3783,"triggerSpellId":0,"coefficient":0}]},{"spellId":58796,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 1800 additional Frost damage and slowing the target's movement speed by the listed amount% for the listed duration. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3784,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-healing-stream-totem","name":"Healing Stream Totem","iconBasename":"inv_spear_04","iconPath":"/assets/ui/spells/inv_spear_04.png","sourceUnlockLevel":20,"ranks":[{"spellId":5394,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3527,"triggerSpellId":0,"coefficient":0}]},{"spellId":6375,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3906,"triggerSpellId":0,"coefficient":0}]},{"spellId":6377,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3907,"triggerSpellId":0,"coefficient":0}]},{"spellId":10462,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3908,"triggerSpellId":0,"coefficient":0}]},{"spellId":10463,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3909,"triggerSpellId":0,"coefficient":0}]},{"spellId":25567,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15488,"triggerSpellId":0,"coefficient":0}]},{"spellId":58755,"rank":7,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31181,"triggerSpellId":0,"coefficient":0}]},{"spellId":58756,"rank":8,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31182,"triggerSpellId":0,"coefficient":0}]},{"spellId":58757,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 5 every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31185,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-lesser-healing-wave","name":"Lesser Healing Wave","iconBasename":"spell_nature_healingwavelesser","iconPath":"/assets/ui/spells/spell_nature_healingwavelesser.png","sourceUnlockLevel":20,"ranks":[{"spellId":8004,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals a friendly target for 186.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":162,"dieSides":25,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":8008,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Heals a friendly target for 281.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":247,"dieSides":35,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":8010,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Heals a friendly target for 381.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":337,"dieSides":45,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10466,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Heals a friendly target for 514.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":458,"dieSides":57,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10467,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Heals a friendly target for 705.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":631,"dieSides":75,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10468,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 928.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":832,"dieSides":97,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":25420,"rank":7,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Heals a friendly target for 1185.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1039,"dieSides":147,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":49275,"rank":8,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Heals a friendly target for 1578.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1382,"dieSides":197,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":49276,"rank":9,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"Heals a friendly target for 1834.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1606,"dieSides":229,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]}]},{"id":"wow335-shaman-tidal-force","name":"Tidal Force","iconBasename":"spell_frost_frostbolt","iconPath":"/assets/ui/spells/spell_frost_frostbolt.png","sourceUnlockLevel":20,"talentNodeId":"talent-582","ranks":[{"spellId":55198,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases the critical effect chance of your Healing Wave, Lesser Healing Wave and Chain Heal by 60%. Each critical heal reduces the chance by 20%. Lasts 2 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":2000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-water-breathing","name":"Water Breathing","iconBasename":"spell_shadow_demonbreath","iconPath":"/assets/ui/spells/spell_shadow_demonbreath.png","sourceUnlockLevel":22,"ranks":[{"spellId":131,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Allows the target to breathe underwater for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":82,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-frost-resistance-totem","name":"Frost Resistance Totem","iconBasename":"spell_frostresistancetotem_01","iconPath":"/assets/ui/spells/spell_frostresistancetotem_01.png","sourceUnlockLevel":24,"ranks":[{"spellId":8181,"rank":1,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 5, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5926,"triggerSpellId":0,"coefficient":0}]},{"spellId":10478,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 5, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7412,"triggerSpellId":0,"coefficient":0}]},{"spellId":10479,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 5, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7413,"triggerSpellId":0,"coefficient":0}]},{"spellId":25560,"rank":4,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 5, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15486,"triggerSpellId":0,"coefficient":0}]},{"spellId":58741,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 5, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31171,"triggerSpellId":0,"coefficient":0}]},{"spellId":58745,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 5, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31172,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-far-sight","name":"Far Sight","iconBasename":"spell_nature_farsight","iconPath":"/assets/ui/spells/spell_nature_farsight.png","sourceUnlockLevel":26,"ranks":[{"spellId":6196,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Changes the caster's viewpoint to the targeted location. Lasts 60 sec. Only useable outdoors.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":72,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-magma-totem","name":"Magma Totem","iconBasename":"spell_fire_selfdestruct","iconPath":"/assets/ui/spells/spell_fire_selfdestruct.png","sourceUnlockLevel":26,"ranks":[{"spellId":8190,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 5 Fire damage to creatures within the listed amount yards every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5929,"triggerSpellId":0,"coefficient":0}]},{"spellId":10585,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 5 Fire damage to creatures within the listed amount yards every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7464,"triggerSpellId":0,"coefficient":0}]},{"spellId":10586,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 5 Fire damage to creatures within the listed amount yards every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7465,"triggerSpellId":0,"coefficient":0}]},{"spellId":10587,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 5 Fire damage to creatures within the listed amount yards every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7466,"triggerSpellId":0,"coefficient":0}]},{"spellId":25552,"rank":5,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 5 Fire damage to creatures within the listed amount yards every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15484,"triggerSpellId":0,"coefficient":0}]},{"spellId":58731,"rank":6,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 5 Fire damage to creatures within the listed amount yards every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31166,"triggerSpellId":0,"coefficient":0}]},{"spellId":58734,"rank":7,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 5 Fire damage to creatures within the listed amount yards every the listed interval seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31167,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-mana-spring-totem","name":"Mana Spring Totem","iconBasename":"spell_nature_manaregentotem","iconPath":"/assets/ui/spells/spell_nature_manaregentotem.png","sourceUnlockLevel":26,"ranks":[{"spellId":5675,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 5 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3573,"triggerSpellId":0,"coefficient":0}]},{"spellId":10495,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 5 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7414,"triggerSpellId":0,"coefficient":0}]},{"spellId":10496,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 5 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7415,"triggerSpellId":0,"coefficient":0}]},{"spellId":10497,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 5 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7416,"triggerSpellId":0,"coefficient":0}]},{"spellId":25570,"rank":5,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 5 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15489,"triggerSpellId":0,"coefficient":0}]},{"spellId":58771,"rank":6,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 5 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31186,"triggerSpellId":0,"coefficient":0}]},{"spellId":58773,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 5 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31189,"triggerSpellId":0,"coefficient":0}]},{"spellId":58774,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 5 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31190,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-fire-resistance-totem","name":"Fire Resistance Totem","iconBasename":"spell_fireresistancetotem_01","iconPath":"/assets/ui/spells/spell_fireresistancetotem_01.png","sourceUnlockLevel":28,"ranks":[{"spellId":8184,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5927,"triggerSpellId":0,"coefficient":0}]},{"spellId":10537,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7424,"triggerSpellId":0,"coefficient":0}]},{"spellId":10538,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7425,"triggerSpellId":0,"coefficient":0}]},{"spellId":25563,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15487,"triggerSpellId":0,"coefficient":0}]},{"spellId":58737,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31169,"triggerSpellId":0,"coefficient":0}]},{"spellId":58739,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31170,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-flametongue-totem","name":"Flametongue Totem","iconBasename":"spell_nature_guardianward","iconPath":"/assets/ui/spells/spell_nature_guardianward.png","sourceUnlockLevel":28,"ranks":[{"spellId":8227,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5950,"triggerSpellId":0,"coefficient":0}]},{"spellId":8249,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6012,"triggerSpellId":0,"coefficient":0}]},{"spellId":10526,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7423,"triggerSpellId":0,"coefficient":0}]},{"spellId":16387,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10557,"triggerSpellId":0,"coefficient":0}]},{"spellId":25557,"rank":5,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15485,"triggerSpellId":0,"coefficient":0}]},{"spellId":58649,"rank":6,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31132,"triggerSpellId":0,"coefficient":0}]},{"spellId":58652,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31158,"triggerSpellId":0,"coefficient":0}]},{"spellId":58656,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 5. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31133,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-water-walking","name":"Water Walking","iconBasename":"spell_frost_windwalkon","iconPath":"/assets/ui/spells/spell_frost_windwalkon.png","sourceUnlockLevel":28,"ranks":[{"spellId":546,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Allows the friendly target to walk across water for 600 sec. Any damage will cancel the effect.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":104,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-astral-recall","name":"Astral Recall","iconBasename":"spell_nature_astralrecal","iconPath":"/assets/ui/spells/spell_nature_astralrecal.png","sourceUnlockLevel":30,"ranks":[{"spellId":556,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Yanks the caster through the twisting nether back to the listed amount Speak to an Innkeeper in a different place to change your home location.","castTimeMs":10000,"cooldownMs":900000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":9,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-grounding-totem","name":"Grounding Totem","iconBasename":"spell_nature_groundingtotem","iconPath":"/assets/ui/spells/spell_nature_groundingtotem.png","sourceUnlockLevel":30,"ranks":[{"spellId":8177,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Grounding Totem with 5 health at the feet of the caster that will redirect one harmful spell cast on a nearby party member to itself, destroying the totem. Will not redirect area of effect spells. Lasts 45 sec.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5925,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-nature-resistance-totem","name":"Nature Resistance Totem","iconBasename":"spell_nature_natureresistancetotem","iconPath":"/assets/ui/spells/spell_nature_natureresistancetotem.png","sourceUnlockLevel":30,"ranks":[{"spellId":10595,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Nature Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the nature resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7467,"triggerSpellId":0,"coefficient":0}]},{"spellId":10600,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Summons a Nature Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the nature resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7468,"triggerSpellId":0,"coefficient":0}]},{"spellId":10601,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Nature Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the nature resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7469,"triggerSpellId":0,"coefficient":0}]},{"spellId":25574,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Summons a Nature Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the nature resistance of party and raid members within the listed amount yards by 5.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15490,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-reincarnation","name":"Reincarnation","iconBasename":"spell_nature_reincarnation","iconPath":"/assets/ui/spells/spell_nature_reincarnation.png","sourceUnlockLevel":30,"ranks":[{"spellId":21169,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":0,"cooldownMs":3600000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":94,"auraType":0,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-totemic-recall","name":"Totemic Recall","iconBasename":"spell_shaman_totemrecall","iconPath":"/assets/ui/spells/spell_shaman_totemrecall.png","sourceUnlockLevel":30,"ranks":[{"spellId":36936,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Returns your totems to the earth, giving you 25% of the mana required to cast each totem destroyed by Totemic Recall.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":110,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-windfury-weapon","name":"Windfury Weapon","iconBasename":"spell_nature_cyclone","iconPath":"/assets/ui/spells/spell_nature_cyclone.png","sourceUnlockLevel":30,"ranks":[{"spellId":8232,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":38,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 46 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":283,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":46,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8235,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":48,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 119 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":284,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":119,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10486,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":58,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 249 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":525,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":249,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":16362,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":68,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 333 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1669,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":333,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25505,"rank":5,"level":68,"sourceLevel":68,"maxScalingLevel":76,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 445 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2636,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":445,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":58801,"rank":6,"level":71,"sourceLevel":71,"maxScalingLevel":79,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 835 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3785,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":835,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":58803,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":84,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 1090 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3786,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":1090,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":58804,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":88,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 1250 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3787,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":1250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-chain-lightning","name":"Chain Lightning","iconBasename":"spell_nature_chainlightning","iconPath":"/assets/ui/spells/spell_nature_chainlightning.png","sourceUnlockLevel":32,"ranks":[{"spellId":421,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Hurls a lightning bolt at the enemy, dealing 217 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":191,"dieSides":27,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":930,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Hurls a lightning bolt at the enemy, dealing 311 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":277,"dieSides":35,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":2860,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Hurls a lightning bolt at the enemy, dealing 424 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":378,"dieSides":47,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":10605,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Hurls a lightning bolt at the enemy, dealing 551 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":493,"dieSides":59,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":25439,"rank":5,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Hurls a lightning bolt at the enemy, dealing 687 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":603,"dieSides":85,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":25442,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Hurls a lightning bolt at the enemy, dealing 838 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":734,"dieSides":105,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":49268,"rank":7,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Hurls a lightning bolt at the enemy, dealing 459 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":403,"dieSides":57,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2854999899864197}]},{"spellId":49270,"rank":7,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Hurls a lightning bolt at the enemy, dealing 920 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":806,"dieSides":115,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":49269,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Hurls a lightning bolt at the enemy, dealing 555 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":487,"dieSides":69,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2854999899864197}]},{"spellId":49271,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Hurls a lightning bolt at the enemy, dealing 1111 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":973,"dieSides":139,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]}]},{"id":"wow335-shaman-windfury-totem","name":"Windfury Totem","iconBasename":"spell_nature_windfury","iconPath":"/assets/ui/spells/spell_nature_windfury.png","sourceUnlockLevel":32,"ranks":[{"spellId":8512,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Summons a Windfury Totem with 5 health at the feet of the caster. The totem provides 5% melee haste to all party and raid members within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6112,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-sentry-totem","name":"Sentry Totem","iconBasename":"spell_nature_removecurse","iconPath":"/assets/ui/spells/spell_nature_removecurse.png","sourceUnlockLevel":34,"ranks":[{"spellId":6495,"rank":0,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Summons an immobile Sentry Totem with 100 health at your feet for 300 sec that allows vision of nearby area and warns of enemies that attack it. Right-Click on buff to switch back and forth between totem sight and shaman sight.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":3968,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-cleansing-totem","name":"Cleansing Totem","iconBasename":"spell_nature_diseasecleansingtotem","iconPath":"/assets/ui/spells/spell_nature_diseasecleansingtotem.png","sourceUnlockLevel":38,"ranks":[{"spellId":8170,"rank":0,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Cleansing Totem with 5 health at the feet of the caster that attempts to remove 1 disease and 1 poison effect from party members within the listed amount yards every the listed interval seconds. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5924,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-chain-heal","name":"Chain Heal","iconBasename":"spell_nature_healingwavegreater","iconPath":"/assets/ui/spells/spell_nature_healingwavegreater.png","sourceUnlockLevel":40,"ranks":[{"spellId":1064,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Heals the friendly target for 368, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":320,"dieSides":49,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":10622,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Heals the friendly target for 465, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":405,"dieSides":61,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":10623,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Heals the friendly target for 629, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":551,"dieSides":79,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":25422,"rank":4,"level":61,"sourceLevel":61,"maxScalingLevel":66,"description":"Heals the friendly target for 691, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":605,"dieSides":87,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":25423,"rank":5,"level":68,"sourceLevel":68,"maxScalingLevel":73,"description":"Heals the friendly target for 942, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":826,"dieSides":117,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":55458,"rank":6,"level":74,"sourceLevel":74,"maxScalingLevel":79,"description":"Heals the friendly target for 1034, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":906,"dieSides":129,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":55459,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals the friendly target for 1205, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1055,"dieSides":151,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]}]},{"id":"wow335-shaman-cleanse-spirit","name":"Cleanse Spirit","iconBasename":"ability_shaman_cleansespirit","iconPath":"/assets/ui/spells/ability_shaman_cleansespirit.png","sourceUnlockLevel":40,"talentNodeId":"talent-2084","ranks":[{"spellId":51886,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Cleanse the spirit of a friendly target, removing 1 poison effect, 1 disease effect, and 1 curse effect.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-mana-tide-totem","name":"Mana Tide Totem","iconBasename":"spell_frost_summonwaterelemental","iconPath":"/assets/ui/spells/spell_frost_summonwaterelemental.png","sourceUnlockLevel":40,"talentNodeId":"talent-590","ranks":[{"spellId":16190,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Mana Tide Totem with 10% of the caster's health at the feet of the caster for the listed amount sec-1} sec that restores 5% of total mana every the listed interval seconds to group members within the listed amount yards.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1000,"durationMs":13000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10467,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-stormstrike","name":"Stormstrike","iconBasename":"ability_shaman_stormstrike","iconPath":"/assets/ui/spells/ability_shaman_stormstrike.png","sourceUnlockLevel":40,"talentNodeId":"talent-901","ranks":[{"spellId":17364,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack with both weapons. In addition, the next the listed amount sources of Nature damage dealt to the target from the Shaman are increased by 20%. Lasts 12 sec.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":32175,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":32176,"coefficient":0}]},{"spellId":32175,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack with both weapons. In addition, the next 2 sources of Nature damage dealt to the target are increased by 1%. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":32176,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack with both weapons. In addition, the next 2 sources of Nature damage dealt to the target are increased by 1%. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-lava-lash","name":"Lava Lash","iconBasename":"ability_shaman_lavalash","iconPath":"/assets/ui/spells/ability_shaman_lavalash.png","sourceUnlockLevel":41,"talentNodeId":"talent-2249","ranks":[{"spellId":60103,"rank":1,"level":41,"sourceLevel":41,"maxScalingLevel":0,"description":"You charge your off-hand weapon with lava, instantly dealing 100% off-hand Weapon damage. Damage is increased by 25% if your off-hand weapon is enchanted with Flametongue.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-feral-spirit","name":"Feral Spirit","iconBasename":"spell_shaman_feralspirit","iconPath":"/assets/ui/spells/spell_shaman_feralspirit.png","sourceUnlockLevel":50,"talentNodeId":"talent-2058","ranks":[{"spellId":51533,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons two Spirit Wolves under the command of the Shaman, lasting 45 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":1,"radius":2,"periodMs":0,"miscValue":29264,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-shamanistic-rage","name":"Shamanistic Rage","iconBasename":"spell_nature_shamanrage","iconPath":"/assets/ui/spells/spell_nature_shamanrage.png","sourceUnlockLevel":50,"talentNodeId":"talent-1693","ranks":[{"spellId":30823,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Reduces all damage taken by 30% and gives your successful melee attacks a chance to regenerate mana equal to 15% of your attack power. This spell is usable while stunned. Lasts 15 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":30824,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":30824,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Reduces all damage taken by the listed amount% and gives your successful melee attacks a chance to regenerate mana equal to 0% of your attack power. This spell is usable while stunned. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":30,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-totem-of-wrath","name":"Totem of Wrath","iconBasename":"spell_fire_totemofwrath","iconPath":"/assets/ui/spells/spell_fire_totemofwrath.png","sourceUnlockLevel":50,"talentNodeId":"talent-1687","ranks":[{"spellId":30706,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a Totem of Wrath with 5 health at the feet of the caster. The totem increases spell power by the listed amount for all party and raid members, and increases the critical strike chance of all attacks by 5% against all enemies within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17539,"triggerSpellId":0,"coefficient":0}]},{"spellId":57720,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Totem of Wrath with 5 health at the feet of the caster. The totem increases spell power by the listed amount for all party and raid members, and increases the critical strike chance of of all attacks by 5% against all enemies within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30652,"triggerSpellId":0,"coefficient":0}]},{"spellId":57721,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Summons a Totem of Wrath with 5 health at the feet of the caster. The totem increases the spell power by the listed amount for all party and raid members, and increases the critical strike chance of all attacks by 5% against all enemies within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30653,"triggerSpellId":0,"coefficient":0}]},{"spellId":57722,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Totem of Wrath with 5 health at the feet of the caster. The totem increases spell power by the listed amount for all party and raid members, and increases the critical strike chance of all attacks by 5% against all enemies within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30654,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-riptide","name":"Riptide","iconBasename":"spell_nature_riptide","iconPath":"/assets/ui/spells/spell_nature_riptide.png","sourceUnlockLevel":60,"talentNodeId":"talent-2064","ranks":[{"spellId":61295,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Heals a friendly target for 691 and another the listed amount over 15 sec. Your next Chain Heal cast on that primary target within 15 sec will consume the healing over time effect and increase the amount of the Chain Heal by 25%.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":639,"dieSides":53,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803},{"index":1,"effectType":6,"auraType":8,"basePoints":133,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836},{"index":2,"effectType":0,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-thunderstorm","name":"Thunderstorm","iconBasename":"spell_shaman_thunderstorm","iconPath":"/assets/ui/spells/spell_shaman_thunderstorm.png","sourceUnlockLevel":60,"talentNodeId":"talent-2053","ranks":[{"spellId":51490,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"You call down a bolt of lightning, energizing you and damaging nearby enemies within the listed amount yards. Restores 8% mana to you and deals 629 Nature damage to all nearby enemies, knocking them back 20 yards. This spell is usable while stunned.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":551,"dieSides":79,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1720000058412552},{"index":1,"effectType":137,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":0}]},{"spellId":59156,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"You call down a bolt of lightning, energizing you and damaging nearby enemies within the listed amount yards. Restores 8% mana to you and deals 1226 Nature damage to all nearby enemies, knocking them back 20 yards. This spell is usable while stunned.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1074,"dieSides":153,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1720000058412552},{"index":1,"effectType":137,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":0}]},{"spellId":59158,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":80,"description":"You call down a bolt of lightning, energizing you and damaging nearby enemies within the listed amount yards. Restores 8% mana to you and deals 1400 Nature damage to all nearby enemies, knocking them back 20 yards. This spell is usable while stunned.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1226,"dieSides":175,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1720000058412552},{"index":1,"effectType":137,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":0}]},{"spellId":59159,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":85,"description":"You call down a bolt of lightning, energizing you and damaging nearby enemies within the listed amount yards. Restores 8% mana to you and deals 1656 Nature damage to all nearby enemies, knocking them back 20 yards. This spell is usable while stunned.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1450,"dieSides":207,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1720000058412552},{"index":1,"effectType":137,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-water-shield","name":"Water Shield","iconBasename":"ability_shaman_watershield","iconPath":"/assets/ui/spells/ability_shaman_watershield.png","sourceUnlockLevel":62,"ranks":[{"spellId":24398,"rank":7,"level":62,"sourceLevel":62,"maxScalingLevel":66,"description":"The caster is surrounded by the listed amount globes of water, granting 43 mana per 5 sec. When a spell, melee or ranged attack hits the caster, 170 mana is restored to the caster. This expends one water globe. Only one globe will activate every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":170,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":23575,"coefficient":1},{"index":1,"effectType":6,"auraType":85,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33736,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"The caster is surrounded by the listed amount globes of water, granting 50 mana per 5 sec. When a spell, melee or ranged attack hits the caster, 200 mana is restored to the caster. This expends one water globe. Only one globe will activate every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":200,"dieSides":1,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":33737,"coefficient":1},{"index":1,"effectType":6,"auraType":85,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":57960,"rank":9,"level":76,"sourceLevel":76,"maxScalingLevel":80,"description":"The caster is surrounded by the listed amount globes of water, granting 100 mana per 5 sec. When a spell, melee or ranged attack hits the caster, 400 mana is restored to the caster. This expends one water globe. Only one globe will activate every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":400,"dieSides":1,"pointsPerLevel":7,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":57961,"coefficient":1},{"index":1,"effectType":6,"auraType":85,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-wrath-of-air-totem","name":"Wrath of Air Totem","iconBasename":"spell_nature_slowingtotem","iconPath":"/assets/ui/spells/spell_nature_slowingtotem.png","sourceUnlockLevel":64,"ranks":[{"spellId":3738,"rank":0,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Summons a Wrath of Air Totem with 5 health at the feet of the caster. The totem provides 5% spell haste to all party and raid members within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15447,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-earth-elemental-totem","name":"Earth Elemental Totem","iconBasename":"spell_nature_earthelemental_totem","iconPath":"/assets/ui/spells/spell_nature_earthelemental_totem.png","sourceUnlockLevel":66,"ranks":[{"spellId":2062,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Summon an elemental totem that calls forth a greater earth elemental to protect the caster and the listed amount allies. Lasts 120 sec.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1000,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":7400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":41,"radius":5,"periodMs":0,"miscValue":15430,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-bloodlust","name":"Bloodlust","iconBasename":"spell_nature_bloodlust","iconPath":"/assets/ui/spells/spell_nature_bloodlust.png","sourceUnlockLevel":70,"ranks":[{"spellId":2825,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Increases melee, ranged, and spell casting speed by 30% for all party and raid members. Lasts 40 sec. After the completion of this effect, those affected will become Sated and unable to benefit from Bloodlust again for 40 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":192,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":61,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-heroism","name":"Heroism","iconBasename":"ability_shaman_heroism","iconPath":"/assets/ui/spells/ability_shaman_heroism.png","sourceUnlockLevel":70,"ranks":[{"spellId":32182,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Increases melee, ranged, and spell casting speed by 30% for all party and raid members. Lasts 40 sec. After the completion of this effect, those affected will become Exhausted and unable to benefit from Heroism again for 40 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":192,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":61,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-lava-burst","name":"Lava Burst","iconBasename":"spell_shaman_lavaburst","iconPath":"/assets/ui/spells/spell_shaman_lavaburst.png","sourceUnlockLevel":80,"ranks":[{"spellId":60043,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You hurl molten lava at the target, dealing 1518 Fire damage. If your Flame Shock is on the target, Lava Burst will consume the Flame Shock, causing Lava Burst to critically hit.","castTimeMs":2000,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1192,"dieSides":327,"pointsPerLevel":6.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}],"mage":[{"id":"wow335-mage-arcane-intellect","name":"Arcane Intellect","iconBasename":"spell_holy_magicalsentry","iconPath":"/assets/ui/spells/spell_holy_magicalsentry.png","sourceUnlockLevel":1,"ranks":[{"spellId":1459,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":10,"description":"Increases the target's Intellect by 2 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":1460,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":24,"description":"Increases the target's Intellect by 7 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":1461,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":38,"description":"Increases the target's Intellect by 15 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":10156,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":52,"description":"Increases the target's Intellect by 22 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":22,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":10157,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":66,"description":"Increases the target's Intellect by 31 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":27126,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Increases the target's Intellect by 40 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":42995,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Increases the target's Intellect by 60 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-power","name":"Arcane Power","iconBasename":"spell_nature_lightning","iconPath":"/assets/ui/spells/spell_nature_lightning.png","sourceUnlockLevel":1,"talentNodeId":"talent-87","ranks":[{"spellId":12042,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your spells deal 20% more damage while costing 20% more mana to cast. This effect lasts the listed amount","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":108,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":22,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-blazing-speed","name":"Blazing Speed","iconBasename":"spell_fire_burningspeed","iconPath":"/assets/ui/spells/spell_fire_burningspeed.png","sourceUnlockLevel":1,"passive":true,"ranks":[{"spellId":31643,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Gives you a chance when hit by a melee or ranged attack to increase your movement speed by 50% and dispel all movement impairing effects. This effect lasts 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":108,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":108,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-burnout","name":"Burnout","iconBasename":"ability_mage_burnout","iconPath":"/assets/ui/spells/ability_mage_burnout.png","sourceUnlockLevel":1,"passive":true,"ranks":[{"spellId":44450,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Increases your spell critical damage bonus with all spells but your spell criticals cost additional mana.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-fiery-payback","name":"Fiery Payback","iconBasename":"ability_mage_fierypayback","iconPath":"/assets/ui/spells/ability_mage_fierypayback.png","sourceUnlockLevel":1,"talentNodeId":"talent-1848","ranks":[{"spellId":64353,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When below 35% health all damage taken is reduced by 1% and your Pyroblast spell's cast time is reduced by the listed amount secs while the cooldown is increased by the listed amount listed amount/1000}.1 secs. In addition, melee and ranged attacks made against you have a the listed amount% chance to disarm your attacker's main hand and ranged weapons.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":44440,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":64350,"coefficient":0}]},{"spellId":64357,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When below 35% health all damage taken is reduced by 1% and your Pyroblast spell's cast time is reduced by the listed amount secs while the cooldown is increased by the listed amount listed amount/1000} secs. In addition, melee and ranged attacks made against you have a the listed amount% chance to disarm your attacker's main hand and ranged weapons.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":44441,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":64349,"coefficient":0}]}]},{"id":"wow335-mage-fireball","name":"Fireball","iconBasename":"spell_fire_flamebolt","iconPath":"/assets/ui/spells/spell_fire_flamebolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":133,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Hurls a fiery ball that causes 22 Fire damage and an additional the listed amount Fire damage over 4 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":14,"dieSides":9,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.12300000339746475},{"index":1,"effectType":6,"auraType":3,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":143,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":10,"description":"Hurls a fiery ball that causes 45 Fire damage and an additional the listed amount Fire damage over 6 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":31,"dieSides":15,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":3,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":145,"rank":3,"level":12,"sourceLevel":12,"maxScalingLevel":16,"description":"Hurls a fiery ball that causes 73 Fire damage and an additional the listed amount Fire damage over 6 sec.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":53,"dieSides":21,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5},{"index":1,"effectType":6,"auraType":3,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3140,"rank":4,"level":18,"sourceLevel":18,"maxScalingLevel":22,"description":"Hurls a fiery ball that causes 116 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":84,"dieSides":33,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7929999828338623},{"index":1,"effectType":6,"auraType":3,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8400,"rank":5,"level":24,"sourceLevel":24,"maxScalingLevel":28,"description":"Hurls a fiery ball that causes 187 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":139,"dieSides":49,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8401,"rank":6,"level":30,"sourceLevel":30,"maxScalingLevel":34,"description":"Hurls a fiery ball that causes 265 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":199,"dieSides":67,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8402,"rank":7,"level":36,"sourceLevel":36,"maxScalingLevel":40,"description":"Hurls a fiery ball that causes 335 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":255,"dieSides":81,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10148,"rank":8,"level":42,"sourceLevel":42,"maxScalingLevel":46,"description":"Hurls a fiery ball that causes 414 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":318,"dieSides":97,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10149,"rank":9,"level":48,"sourceLevel":48,"maxScalingLevel":52,"description":"Hurls a fiery ball that causes 506 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":392,"dieSides":115,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10150,"rank":10,"level":54,"sourceLevel":54,"maxScalingLevel":58,"description":"Hurls a fiery ball that causes 609 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":475,"dieSides":135,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10151,"rank":11,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Hurls a fiery ball that causes 715 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":561,"dieSides":155,"pointsPerLevel":3.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25306,"rank":12,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Hurls a fiery ball that causes 760 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":596,"dieSides":165,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":19,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27070,"rank":13,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Hurls a fiery ball that causes 805 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":633,"dieSides":173,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":38692,"rank":14,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Hurls a fiery ball that causes 913 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":717,"dieSides":197,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":23,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42832,"rank":15,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Hurls a fiery ball that causes 997 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":783,"dieSides":215,"pointsPerLevel":4.599999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42833,"rank":16,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Hurls a fiery ball that causes 1132 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":888,"dieSides":245,"pointsPerLevel":5.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-frost-armor","name":"Frost Armor","iconBasename":"spell_frost_frostarmor02","iconPath":"/assets/ui/spells/spell_frost_frostarmor02.png","sourceUnlockLevel":1,"ranks":[{"spellId":168,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Increases Armor by 30. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6136,"coefficient":0}]},{"spellId":7300,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Increases Armor by 110. If an enemy strikes the caster, they may have their movement slowed by 110% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6136,"coefficient":0}]},{"spellId":7301,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases Armor by 200. If an enemy strikes the caster, they may have their movement slowed by 200% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6136,"coefficient":0}]}]},{"id":"wow335-mage-presence-of-mind","name":"Presence of Mind","iconBasename":"spell_nature_enchantarmor","iconPath":"/assets/ui/spells/spell_nature_enchantarmor.png","sourceUnlockLevel":1,"talentNodeId":"talent-86","ranks":[{"spellId":12043,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your next Mage spell with a casting time less than 10 sec becomes an instant cast spell.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-conjure-water","name":"Conjure Water","iconBasename":"inv_drink_06","iconPath":"/assets/ui/spells/inv_drink_06.png","sourceUnlockLevel":4,"ranks":[{"spellId":5504,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":13,"description":"Conjures 2 the listed amount of water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5505,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":19,"description":"Conjures 2 the listed amount of fresh water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5506,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"Conjures 2 the listed amount of purified water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6127,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"Conjures 2 the listed amount of spring water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10138,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Conjures 2 the listed amount of mineral water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10139,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Conjures 2 the listed amount of sparkling water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10140,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Conjures 10 the listed amount of crystal water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":37420,"rank":8,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Conjures 10 the listed amount of mountain spring water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27090,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"Conjures 10 the listed amount of glacier water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":40,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-frostbolt","name":"Frostbolt","iconBasename":"spell_frost_frostbolt02","iconPath":"/assets/ui/spells/spell_frost_frostbolt02.png","sourceUnlockLevel":4,"ranks":[{"spellId":116,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":8,"description":"Launches a bolt of frost at the enemy, causing 20 Frost damage and slowing movement speed by 40% for 5 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":18,"dieSides":3,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16300000250339508},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":205,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":12,"description":"Launches a bolt of frost at the enemy, causing 35 Frost damage and slowing movement speed by 40% for 6 sec.","castTimeMs":1800,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":31,"dieSides":5,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.26899999380111694},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":837,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":18,"description":"Launches a bolt of frost at the enemy, causing 57 Frost damage and slowing movement speed by 40% for 6 sec.","castTimeMs":2200,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":51,"dieSides":7,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.46299999952316284},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":7322,"rank":4,"level":20,"sourceLevel":20,"maxScalingLevel":24,"description":"Launches a bolt of frost at the enemy, causing 82 Frost damage and slowing movement speed by 40% for 7 sec.","castTimeMs":2600,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":74,"dieSides":9,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7059999704360962},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8406,"rank":5,"level":26,"sourceLevel":26,"maxScalingLevel":30,"description":"Launches a bolt of frost at the enemy, causing 138 Frost damage and slowing movement speed by 40% for 7 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":126,"dieSides":13,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8407,"rank":6,"level":32,"sourceLevel":32,"maxScalingLevel":36,"description":"Launches a bolt of frost at the enemy, causing 190 Frost damage and slowing movement speed by 40% for 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":174,"dieSides":17,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8408,"rank":7,"level":38,"sourceLevel":38,"maxScalingLevel":42,"description":"Launches a bolt of frost at the enemy, causing 247 Frost damage and slowing movement speed by 40% for 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":227,"dieSides":21,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10179,"rank":8,"level":44,"sourceLevel":44,"maxScalingLevel":48,"description":"Launches a bolt of frost at the enemy, causing 316 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":292,"dieSides":25,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10180,"rank":9,"level":50,"sourceLevel":50,"maxScalingLevel":54,"description":"Launches a bolt of frost at the enemy, causing 383 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":353,"dieSides":31,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10181,"rank":10,"level":56,"sourceLevel":56,"maxScalingLevel":60,"description":"Launches a bolt of frost at the enemy, causing 463 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":429,"dieSides":35,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":25304,"rank":11,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Launches a bolt of frost at the enemy, causing 555 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":515,"dieSides":41,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27071,"rank":12,"level":63,"sourceLevel":63,"maxScalingLevel":67,"description":"Launches a bolt of frost at the enemy, causing 578 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":536,"dieSides":43,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27072,"rank":13,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Launches a bolt of frost at the enemy, causing 643 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":597,"dieSides":47,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":38697,"rank":14,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Launches a bolt of frost at the enemy, causing 680 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":630,"dieSides":51,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":42841,"rank":15,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Launches a bolt of frost at the enemy, causing 758 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":702,"dieSides":57,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":42842,"rank":16,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Launches a bolt of frost at the enemy, causing 861 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":799,"dieSides":63,"pointsPerLevel":4.800000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-conjure-food","name":"Conjure Food","iconBasename":"inv_misc_food_10","iconPath":"/assets/ui/spells/inv_misc_food_10.png","sourceUnlockLevel":6,"ranks":[{"spellId":587,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":15,"description":"Conjures 2 the listed amount, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":597,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":21,"description":"Conjures 2 the listed amount of bread, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":990,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":31,"description":"Conjures 2 the listed amount of rye, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6129,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":41,"description":"Conjures 2 the listed amount of pumpernickel, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10144,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":51,"description":"Conjures 2 the listed amount of sourdough, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10145,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":61,"description":"Conjures 2 the listed amount roll:sweet rolls;, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":28612,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Conjures 10 the listed amount roll:cinnamon rolls;, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33717,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"Conjures 10 the listed amount, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":40,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-fire-blast","name":"Fire Blast","iconBasename":"spell_fire_fireball","iconPath":"/assets/ui/spells/spell_fire_fireball.png","sourceUnlockLevel":6,"ranks":[{"spellId":2136,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Blasts the enemy for 32 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":24,"dieSides":9,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20399999618530273}]},{"spellId":2137,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Blasts the enemy for 71 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":57,"dieSides":15,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3319999873638153}]},{"spellId":2138,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Blasts the enemy for 127 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":103,"dieSides":25,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8412,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Blasts the enemy for 202 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":168,"dieSides":35,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8413,"rank":5,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Blasts the enemy for 290 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":242,"dieSides":49,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10197,"rank":6,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Blasts the enemy for 394 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":332,"dieSides":63,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10199,"rank":7,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Blasts the enemy for 509 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":431,"dieSides":79,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27078,"rank":8,"level":61,"sourceLevel":61,"maxScalingLevel":66,"description":"Blasts the enemy for 637 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":539,"dieSides":99,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27079,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"Blasts the enemy for 786 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":664,"dieSides":123,"pointsPerLevel":3.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":42872,"rank":10,"level":74,"sourceLevel":74,"maxScalingLevel":79,"description":"Blasts the enemy for 900 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":760,"dieSides":141,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":42873,"rank":11,"level":80,"sourceLevel":80,"maxScalingLevel":85,"description":"Blasts the enemy for 1095 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":925,"dieSides":171,"pointsPerLevel":4.900000095367432,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-mage-arcane-missiles","name":"Arcane Missiles","iconBasename":"spell_nature_starfall","iconPath":"/assets/ui/spells/spell_nature_starfall.png","sourceUnlockLevel":8,"ranks":[{"spellId":5143,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":12,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":7268,"coefficient":0}]},{"spellId":5144,"rank":2,"level":16,"sourceLevel":16,"maxScalingLevel":20,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 4 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":4000,"channelDurationMs":4000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":7269,"coefficient":0}]},{"spellId":5145,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":28,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":7270,"coefficient":0}]},{"spellId":8416,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":36,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":8419,"coefficient":0}]},{"spellId":8417,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":44,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":8418,"coefficient":0}]},{"spellId":10211,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":52,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":10273,"coefficient":0}]},{"spellId":10212,"rank":7,"level":56,"sourceLevel":56,"maxScalingLevel":60,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":10274,"coefficient":0}]},{"spellId":25345,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":25346,"coefficient":0}]},{"spellId":27075,"rank":9,"level":63,"sourceLevel":63,"maxScalingLevel":67,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":27076,"coefficient":0}]},{"spellId":38699,"rank":10,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":38700,"coefficient":0}]},{"spellId":38704,"rank":11,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":38703,"coefficient":0}]},{"spellId":42843,"rank":12,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42844,"coefficient":0}]},{"spellId":42846,"rank":13,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Launches Arcane Missiles at the enemy, causing 1 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42845,"coefficient":0}]}]},{"id":"wow335-mage-polymorph","name":"Polymorph","iconBasename":"spell_nature_polymorph","iconPath":"/assets/ui/spells/spell_nature_polymorph.png","sourceUnlockLevel":8,"ranks":[{"spellId":118,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Transforms the enemy into a sheep, forcing it to wander around for up to 20 sec. While wandering, the sheep cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16372,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":12824,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Transforms the enemy into a sheep, forcing it to wander around for up to 30 sec. While wandering, the sheep cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16372,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":12825,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Transforms the enemy into a sheep, forcing it to wander around for up to 40 sec. While wandering, the sheep cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16372,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":12826,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Transforms the enemy into a sheep, forcing it to wander around for up to 50 sec. While wandering, the sheep cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16372,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":28271,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Transforms the enemy into a turtle, forcing it to wander around for up to 50 sec. While wandering, the turtle cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16377,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":28272,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Transforms the enemy into a pig, forcing it to wander around for up to 50 sec. While wandering, the pig cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16371,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61721,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Transforms the enemy into a harmless rabbit, forcing it to scamper around for up to 50 sec. While wandering, the rabbit cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32789,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-frost-nova","name":"Frost Nova","iconBasename":"spell_frost_frostnova","iconPath":"/assets/ui/spells/spell_frost_frostnova.png","sourceUnlockLevel":10,"ranks":[{"spellId":122,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Blasts enemies near the caster for 21 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":19,"dieSides":3,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.017999999225139618},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":865,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Blasts enemies near the caster for 37 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":33,"dieSides":5,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.0430000014603138},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6131,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Blasts enemies near the caster for 58 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":52,"dieSides":7,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.0430000014603138},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10230,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Blasts enemies near the caster for 80 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":70,"dieSides":11,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.0430000014603138},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27088,"rank":5,"level":67,"sourceLevel":67,"maxScalingLevel":74,"description":"Blasts enemies near the caster for 260 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":230,"dieSides":31,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42917,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Blasts enemies near the caster for 415 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":365,"dieSides":51,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-dampen-magic","name":"Dampen Magic","iconBasename":"spell_nature_abolishmagic","iconPath":"/assets/ui/spells/spell_nature_abolishmagic.png","sourceUnlockLevel":12,"ranks":[{"spellId":604,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 10 and healing spells by up to 11. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-11,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":8450,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 20 and healing spells by up to 21. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":8451,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 40 and healing spells by up to 43. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":10173,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 60 and healing spells by up to 64. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":10174,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 90 and healing spells by up to 96. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-96,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":33944,"rank":6,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 120 and healing spells by up to 128. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-128,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":43015,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 240 and healing spells by up to 255. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-240,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-255,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-slow-fall","name":"Slow Fall","iconBasename":"spell_magic_featherfall","iconPath":"/assets/ui/spells/spell_magic_featherfall.png","sourceUnlockLevel":12,"ranks":[{"spellId":130,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Slows friendly party or raid target's falling speed for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":105,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-explosion","name":"Arcane Explosion","iconBasename":"spell_nature_wispsplode","iconPath":"/assets/ui/spells/spell_nature_wispsplode.png","sourceUnlockLevel":14,"ranks":[{"spellId":1449,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Causes an explosion of arcane magic around the caster, causing 36 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":32,"dieSides":5,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16599999368190765}]},{"spellId":8437,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Causes an explosion of arcane magic around the caster, causing 63 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":57,"dieSides":7,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":8438,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Causes an explosion of arcane magic around the caster, causing 105 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":97,"dieSides":9,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":8439,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Causes an explosion of arcane magic around the caster, causing 151 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":139,"dieSides":13,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":10201,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Causes an explosion of arcane magic around the caster, causing 202 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":186,"dieSides":17,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":10202,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Causes an explosion of arcane magic around the caster, causing 263 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":243,"dieSides":21,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":27080,"rank":7,"level":62,"sourceLevel":62,"maxScalingLevel":67,"description":"Causes an explosion of arcane magic around the caster, causing 330 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":306,"dieSides":25,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":27082,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"Causes an explosion of arcane magic around the caster, causing 407 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":377,"dieSides":31,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":42920,"rank":9,"level":76,"sourceLevel":76,"maxScalingLevel":80,"description":"Causes an explosion of arcane magic around the caster, causing 519 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":481,"dieSides":39,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":42921,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Causes an explosion of arcane magic around the caster, causing 582 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":538,"dieSides":45,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]}]},{"id":"wow335-mage-flamestrike","name":"Flamestrike","iconBasename":"spell_fire_selfdestruct","iconPath":"/assets/ui/spells/spell_fire_selfdestruct.png","sourceUnlockLevel":16,"ranks":[{"spellId":2120,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Calls down a pillar of fire, burning all enemies within the area for 68 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":52,"dieSides":17,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":2121,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Calls down a pillar of fire, burning all enemies within the area for 122 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":96,"dieSides":27,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":22,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":8422,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Calls down a pillar of fire, burning all enemies within the area for 192 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":154,"dieSides":39,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":8423,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Calls down a pillar of fire, burning all enemies within the area for 272 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":220,"dieSides":53,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":49,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":10215,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Calls down a pillar of fire, burning all enemies within the area for 359 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":291,"dieSides":69,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":66,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":10216,"rank":6,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Calls down a pillar of fire, burning all enemies within the area for 459 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":375,"dieSides":85,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":27086,"rank":7,"level":64,"sourceLevel":64,"maxScalingLevel":69,"description":"Calls down a pillar of fire, burning all enemies within the area for 575 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":471,"dieSides":105,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":106,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":42925,"rank":8,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Calls down a pillar of fire, burning all enemies within the area for 842 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":688,"dieSides":155,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":155,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":42926,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Calls down a pillar of fire, burning all enemies within the area for 1067 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":873,"dieSides":195,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":195,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]}]},{"id":"wow335-mage-amplify-magic","name":"Amplify Magic","iconBasename":"spell_holy_flashheal","iconPath":"/assets/ui/spells/spell_holy_flashheal.png","sourceUnlockLevel":18,"ranks":[{"spellId":1008,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 15 and healing spells by up to 16. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":16,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":8455,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 30 and healing spells by up to 32. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":10169,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 50 and healing spells by up to 53. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":53,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":10170,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 75 and healing spells by up to 80. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":27130,"rank":5,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 90 and healing spells by up to 96. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":96,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":33946,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 120 and healing spells by up to 128. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":128,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":43017,"rank":7,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 240 and healing spells by up to 255. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":240,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":255,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-remove-curse","name":"Remove Curse","iconBasename":"spell_nature_removecurse","iconPath":"/assets/ui/spells/spell_nature_removecurse.png","sourceUnlockLevel":18,"ranks":[{"spellId":475,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Removes 1 Curse from a friendly target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-blink","name":"Blink","iconBasename":"spell_arcane_blink","iconPath":"/assets/ui/spells/spell_arcane_blink.png","sourceUnlockLevel":20,"ranks":[{"spellId":1953,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster the listed amount yards forward, unless something is in the way. Also frees the caster from stuns and bonds.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":1000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":29,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":55,"radius":20,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-blizzard","name":"Blizzard","iconBasename":"spell_frost_icestorm","iconPath":"/assets/ui/spells/spell_frost_icestorm.png","sourceUnlockLevel":20,"ranks":[{"spellId":10,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":25,"dieSides":1,"pointsPerLevel":0.10000000149011612,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42208,"coefficient":0}]},{"spellId":42208,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":36,"dieSides":1,"pointsPerLevel":0.10000000149011612,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":6141,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":44,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42209,"coefficient":0}]},{"spellId":42209,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":63,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":8427,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":65,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42210,"coefficient":0}]},{"spellId":42210,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":92,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":10185,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":90,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42211,"coefficient":0}]},{"spellId":42211,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":128,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":10186,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":117,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42212,"coefficient":0}]},{"spellId":42212,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":166,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":10187,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":149,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42213,"coefficient":0}]},{"spellId":42213,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":212,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":27085,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":73,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":74,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":184,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42198,"coefficient":0}]},{"spellId":42198,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":73,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":273,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42937,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":350,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42939,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":74,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":298,"dieSides":1,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42937,"coefficient":0}]},{"spellId":42938,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Ice shards pelt the target area doing the listed amount Frost damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":426,"dieSides":1,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42940,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":74,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":360,"dieSides":1,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42938,"coefficient":0}]}]},{"id":"wow335-mage-fire-ward","name":"Fire Ward","iconBasename":"spell_fire_firearmor","iconPath":"/assets/ui/spells/spell_fire_firearmor.png","sourceUnlockLevel":20,"ranks":[{"spellId":543,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"Absorbs 165 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":8457,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"Absorbs 290 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":8458,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Absorbs 470 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":470,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":10223,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Absorbs 675 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":675,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":10225,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":68,"description":"Absorbs 875 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":875,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":27128,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":78,"description":"Absorbs 1125 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":43010,"rank":7,"level":78,"sourceLevel":78,"maxScalingLevel":87,"description":"Absorbs 1950 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1950,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-focus-magic","name":"Focus Magic","iconBasename":"spell_arcane_studentofmagic","iconPath":"/assets/ui/spells/spell_arcane_studentofmagic.png","sourceUnlockLevel":20,"talentNodeId":"talent-2211","ranks":[{"spellId":54646,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases the target's chance to critically hit with spells by 3%. When the target critically hits the caster's chance to critically hit with spells is increased by 3% for 1800 sec. Cannot be cast on self.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":57,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":54648,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases the target's chance to critically hit with spells by 3%. When the target critically hits the caster's chance to critically hit with spells is increased.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":57,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-icy-veins","name":"Icy Veins","iconBasename":"spell_frost_coldhearted","iconPath":"/assets/ui/spells/spell_frost_coldhearted.png","sourceUnlockLevel":20,"talentNodeId":"talent-69","ranks":[{"spellId":12472,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Hastens your spellcasting, increasing spell casting speed by 20% and reduces the pushback suffered from damaging attacks while casting by 100%. Lasts 20 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":65,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":9,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-mana-shield","name":"Mana Shield","iconBasename":"spell_shadow_detectlesserinvisibility","iconPath":"/assets/ui/spells/spell_shadow_detectlesserinvisibility.png","sourceUnlockLevel":20,"ranks":[{"spellId":1463,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":27,"description":"Absorbs 120 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8494,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":35,"description":"Absorbs 210 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":210,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8495,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":43,"description":"Absorbs 300 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10191,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":51,"description":"Absorbs 390 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":390,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10192,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":59,"description":"Absorbs 480 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":480,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10193,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":67,"description":"Absorbs 570 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":570,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27131,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":75,"description":"Absorbs 715 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":715,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":43019,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Absorbs 1080 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":1080,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":43020,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Absorbs 1330 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":1330,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-pyroblast","name":"Pyroblast","iconBasename":"spell_fire_fireball02","iconPath":"/assets/ui/spells/spell_fire_fireball02.png","sourceUnlockLevel":20,"talentNodeId":"talent-29","ranks":[{"spellId":11366,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":24,"description":"Hurls an immense fiery boulder that causes 187 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":141,"dieSides":47,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12505,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":30,"description":"Hurls an immense fiery boulder that causes 236 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":180,"dieSides":57,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12522,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"Hurls an immense fiery boulder that causes 327 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":255,"dieSides":73,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12523,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Hurls an immense fiery boulder that causes 419 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":329,"dieSides":91,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12524,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Hurls an immense fiery boulder that causes 515 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":407,"dieSides":109,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":39,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12525,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":54,"description":"Hurls an immense fiery boulder that causes 631 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":503,"dieSides":129,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":47,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12526,"rank":7,"level":54,"sourceLevel":54,"maxScalingLevel":60,"description":"Hurls an immense fiery boulder that causes 750 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":600,"dieSides":151,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":57,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":18809,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Hurls an immense fiery boulder that causes 898 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":708,"dieSides":191,"pointsPerLevel":4.599999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":67,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":27132,"rank":9,"level":66,"sourceLevel":66,"maxScalingLevel":72,"description":"Hurls an immense fiery boulder that causes 1074 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":846,"dieSides":229,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":78,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":33938,"rank":10,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Hurls an immense fiery boulder that causes 1191 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":939,"dieSides":253,"pointsPerLevel":5.400000095367432,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":89,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":42890,"rank":11,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Hurls an immense fiery boulder that causes 1286 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1014,"dieSides":273,"pointsPerLevel":5.800000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":96,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":42891,"rank":12,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"Hurls an immense fiery boulder that causes 1510 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1190,"dieSides":321,"pointsPerLevel":6.800000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":113,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]}]},{"id":"wow335-mage-teleport-exodar","name":"Teleport: Exodar","iconBasename":"spell_arcane_teleportexodar","iconPath":"/assets/ui/spells/spell_arcane_teleportexodar.png","sourceUnlockLevel":20,"ranks":[{"spellId":32271,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Exodar.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-ironforge","name":"Teleport: Ironforge","iconBasename":"spell_arcane_teleportironforge","iconPath":"/assets/ui/spells/spell_arcane_teleportironforge.png","sourceUnlockLevel":20,"ranks":[{"spellId":3562,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Ironforge.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-orgrimmar","name":"Teleport: Orgrimmar","iconBasename":"spell_arcane_teleportorgrimmar","iconPath":"/assets/ui/spells/spell_arcane_teleportorgrimmar.png","sourceUnlockLevel":20,"ranks":[{"spellId":3567,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Orgrimmar.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-silvermoon","name":"Teleport: Silvermoon","iconBasename":"spell_arcane_teleportsilvermoon","iconPath":"/assets/ui/spells/spell_arcane_teleportsilvermoon.png","sourceUnlockLevel":20,"ranks":[{"spellId":32272,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Silvermoon.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-stormwind","name":"Teleport: Stormwind","iconBasename":"spell_arcane_teleportstormwind","iconPath":"/assets/ui/spells/spell_arcane_teleportstormwind.png","sourceUnlockLevel":20,"ranks":[{"spellId":3561,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Stormwind.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-undercity","name":"Teleport: Undercity","iconBasename":"spell_arcane_teleportundercity","iconPath":"/assets/ui/spells/spell_arcane_teleportundercity.png","sourceUnlockLevel":20,"ranks":[{"spellId":3563,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Undercity.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-frost-ward","name":"Frost Ward","iconBasename":"spell_frost_frostward","iconPath":"/assets/ui/spells/spell_frost_frostward.png","sourceUnlockLevel":22,"ranks":[{"spellId":6143,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":31,"description":"Absorbs 165 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":8461,"rank":2,"level":32,"sourceLevel":32,"maxScalingLevel":41,"description":"Absorbs 290 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":8462,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":51,"description":"Absorbs 470 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":470,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":10177,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":59,"description":"Absorbs 675 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":675,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":28609,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Absorbs 875 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":875,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":32796,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":78,"description":"Absorbs 1125 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":43012,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":88,"description":"Absorbs 1950 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1950,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-scorch","name":"Scorch","iconBasename":"spell_fire_soulburn","iconPath":"/assets/ui/spells/spell_fire_soulburn.png","sourceUnlockLevel":22,"ranks":[{"spellId":2948,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":26,"description":"Scorch the enemy for 65 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":53,"dieSides":13,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8444,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":32,"description":"Scorch the enemy for 93 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":77,"dieSides":17,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8445,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":38,"description":"Scorch the enemy for 120 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":100,"dieSides":21,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8446,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":44,"description":"Scorch the enemy for 159 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":133,"dieSides":27,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10205,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":50,"description":"Scorch the enemy for 192 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":162,"dieSides":31,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10206,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":56,"description":"Scorch the enemy for 239 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":200,"dieSides":40,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10207,"rank":7,"level":58,"sourceLevel":58,"maxScalingLevel":62,"description":"Scorch the enemy for 275 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":233,"dieSides":43,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27073,"rank":8,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Scorch the enemy for 317 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":269,"dieSides":49,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27074,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Scorch the enemy for 361 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":305,"dieSides":57,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":42858,"rank":10,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Scorch the enemy for 379 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":321,"dieSides":59,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":42859,"rank":11,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Scorch the enemy for 444 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":376,"dieSides":69,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-mage-counterspell","name":"Counterspell","iconBasename":"spell_frost_iceshock","iconPath":"/assets/ui/spells/spell_frost_iceshock.png","sourceUnlockLevel":24,"ranks":[{"spellId":2139,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Counters the enemy's spellcast, preventing any spell from that school of magic from being cast for 8 sec. Generates a high amount of threat.","castTimeMs":0,"cooldownMs":24000,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-cone-of-cold","name":"Cone of Cold","iconBasename":"spell_frost_glacier","iconPath":"/assets/ui/spells/spell_frost_glacier.png","sourceUnlockLevel":26,"ranks":[{"spellId":120,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Targets in a cone in front of the caster take 108 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":98,"dieSides":11,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8492,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Targets in a cone in front of the caster take 160 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":146,"dieSides":15,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10159,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":47,"description":"Targets in a cone in front of the caster take 223 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":203,"dieSides":21,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10160,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Targets in a cone in front of the caster take 290 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":264,"dieSides":27,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10161,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Targets in a cone in front of the caster take 365 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":335,"dieSides":31,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27087,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Targets in a cone in front of the caster take 448 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":410,"dieSides":39,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":42930,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Targets in a cone in front of the caster take 611 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":559,"dieSides":53,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":42931,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Targets in a cone in front of the caster take 773 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":707,"dieSides":67,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-conjure-mana-gem","name":"Conjure Mana Gem","iconBasename":"inv_misc_gem_emerald_01","iconPath":"/assets/ui/spells/inv_misc_gem_emerald_01.png","sourceUnlockLevel":28,"ranks":[{"spellId":759,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Conjures a mana agate that can be used to instantly restore 1 mana.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":90,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54414,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3552,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Conjures a mana jade that can be used to instantly restore 1 mana.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":90,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54413,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10053,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Conjures a mana citrine that can be used to instantly restore 1 mana.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":90,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54412,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10054,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Conjures a mana ruby that can be used to instantly restore 1 mana.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":90,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54411,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27101,"rank":5,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Conjures a mana emerald that can be used to instantly restore 1 mana. 3 charges.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":75,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42985,"rank":6,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Conjures a mana sapphire that can be used to instantly restore 1 mana. 3 charges.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":75,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54409,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-blast-wave","name":"Blast Wave","iconBasename":"spell_holy_excorcism_02","iconPath":"/assets/ui/spells/spell_holy_excorcism_02.png","sourceUnlockLevel":30,"talentNodeId":"talent-32","ranks":[{"spellId":11113,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 186 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":154,"dieSides":33,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":13018,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 241 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":201,"dieSides":41,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":13019,"rank":3,"level":44,"sourceLevel":44,"maxScalingLevel":50,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 329 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":277,"dieSides":53,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":13020,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":58,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 433 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":365,"dieSides":69,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":13021,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 544 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":462,"dieSides":83,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":27133,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":71,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 627 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":533,"dieSides":95,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":33933,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 724 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":616,"dieSides":109,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":42944,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 1038 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":882,"dieSides":157,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":42945,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 1233 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1047,"dieSides":187,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-cold-snap","name":"Cold Snap","iconBasename":"spell_frost_wizardmark","iconPath":"/assets/ui/spells/spell_frost_wizardmark.png","sourceUnlockLevel":30,"talentNodeId":"talent-72","ranks":[{"spellId":11958,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"When activated, this spell finishes the cooldown on all Frost spells you recently cast.","castTimeMs":0,"cooldownMs":480000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-ice-armor","name":"Ice Armor","iconBasename":"spell_frost_frostarmor02","iconPath":"/assets/ui/spells/spell_frost_frostarmor02.png","sourceUnlockLevel":30,"ranks":[{"spellId":7302,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Increases Armor by 290 and Frost resistance by 6. If an enemy strikes the caster, they may have their movement slowed by 290% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":7320,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Increases Armor by 380 and Frost resistance by 9. If an enemy strikes the caster, they may have their movement slowed by 380% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":380,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":10219,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Increases Armor by 470 and Frost resistance by 12. If an enemy strikes the caster, they may have their movement slowed by 470% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":470,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":10220,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Increases Armor by 560 and Frost resistance by 15. If an enemy strikes the caster, they may have their movement slowed by 560% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":560,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":27124,"rank":5,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Increases Armor by 645 and Frost resistance by 18. If an enemy strikes the caster, they may have their movement slowed by 645% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":645,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":43008,"rank":6,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Increases Armor by 930 and Frost resistance by 40. If an enemy strikes the caster, they may have their movement slowed by 930% and the time between their attacks increased by 1% for 1800 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":930,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-ice-block","name":"Ice Block","iconBasename":"spell_frost_frost","iconPath":"/assets/ui/spells/spell_frost_frost.png","sourceUnlockLevel":30,"ranks":[{"spellId":45438,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"You become encased in a block of ice, protecting you from all physical attacks and spells for 10 sec, but during that time you cannot attack, move or cast spells. Also causes Hypothermia, preventing you from recasting Ice Block for 10 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":15,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":39,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-teleport-darnassus","name":"Teleport: Darnassus","iconBasename":"spell_arcane_teleportdarnassus","iconPath":"/assets/ui/spells/spell_arcane_teleportdarnassus.png","sourceUnlockLevel":30,"ranks":[{"spellId":3565,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Teleports the caster to Darnassus.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-thunder-bluff","name":"Teleport: Thunder Bluff","iconBasename":"spell_arcane_teleportthunderbluff","iconPath":"/assets/ui/spells/spell_arcane_teleportthunderbluff.png","sourceUnlockLevel":30,"ranks":[{"spellId":3566,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Teleports the caster to Thunder Bluff.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-mage-armor","name":"Mage Armor","iconBasename":"spell_magearmor","iconPath":"/assets/ui/spells/spell_magearmor.png","sourceUnlockLevel":34,"ranks":[{"spellId":6117,"rank":1,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 5 and allows 50% of your mana regeneration to continue while casting. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22782,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 10 and allows 50% of your mana regeneration to continue while casting. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22783,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 15 and allows 50% of your mana regeneration to continue while casting. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27125,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 18 and allows 50% of your mana regeneration to continue while casting. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":43023,"rank":5,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 21 and allows 50% of your mana regeneration to continue while casting. In addition, the duration of all harmful Magic effects used against you is reduced by 50%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":245,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":43024,"rank":6,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 40 and allows 50% of your mana regeneration to continue while casting. In addition, the duration of all harmful Magic effects used against you is reduced by 50%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":245,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-stonard","name":"Portal: Stonard","iconBasename":"spell_arcane_portalstonard","iconPath":"/assets/ui/spells/spell_arcane_portalstonard.png","sourceUnlockLevel":35,"ranks":[{"spellId":49361,"rank":0,"level":35,"sourceLevel":35,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Stonard.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":189994,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-theramore","name":"Portal: Theramore","iconBasename":"spell_arcane_portaltheramore","iconPath":"/assets/ui/spells/spell_arcane_portaltheramore.png","sourceUnlockLevel":35,"ranks":[{"spellId":49360,"rank":0,"level":35,"sourceLevel":35,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Theramore.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":850,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":189993,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-teleport-stonard","name":"Teleport: Stonard","iconBasename":"spell_arcane_teleportstonard","iconPath":"/assets/ui/spells/spell_arcane_teleportstonard.png","sourceUnlockLevel":35,"ranks":[{"spellId":49358,"rank":0,"level":35,"sourceLevel":35,"maxScalingLevel":0,"description":"Teleports the caster to Stonard.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-theramore","name":"Teleport: Theramore","iconBasename":"spell_arcane_teleporttheramore","iconPath":"/assets/ui/spells/spell_arcane_teleporttheramore.png","sourceUnlockLevel":35,"ranks":[{"spellId":49359,"rank":0,"level":35,"sourceLevel":35,"maxScalingLevel":0,"description":"Teleports the caster to Theramore.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-combustion","name":"Combustion","iconBasename":"spell_fire_sealoffire","iconPath":"/assets/ui/spells/spell_fire_sealoffire.png","sourceUnlockLevel":40,"talentNodeId":"talent-36","ranks":[{"spellId":11129,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"When activated, this spell causes each of your Fire damage spell hits to increase your critical strike chance with Fire damage spells by 1%. This effect lasts until you have caused the listed amount critical strikes with Fire spells.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":28682,"coefficient":0}]}]},{"id":"wow335-mage-ice-barrier","name":"Ice Barrier","iconBasename":"spell_ice_lament","iconPath":"/assets/ui/spells/spell_ice_lament.png","sourceUnlockLevel":40,"talentNodeId":"talent-71","ranks":[{"spellId":11426,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Instantly shields you, absorbing 438 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":438,"dieSides":1,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13031,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":52,"description":"Instantly shields you, absorbing 549 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":549,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13032,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":58,"description":"Instantly shields you, absorbing 678 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":678,"dieSides":1,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13033,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"Instantly shields you, absorbing 818 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":818,"dieSides":1,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27134,"rank":5,"level":64,"sourceLevel":64,"maxScalingLevel":70,"description":"Instantly shields you, absorbing 925 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":925,"dieSides":1,"pointsPerLevel":4.400000095367432,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":33405,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Instantly shields you, absorbing 1075 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1075,"dieSides":1,"pointsPerLevel":4.800000190734863,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":43038,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Instantly shields you, absorbing 2800 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":2800,"dieSides":1,"pointsPerLevel":15,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":43039,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Instantly shields you, absorbing 3300 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":3300,"dieSides":1,"pointsPerLevel":15,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-exodar","name":"Portal: Exodar","iconBasename":"spell_arcane_portalexodar","iconPath":"/assets/ui/spells/spell_arcane_portalexodar.png","sourceUnlockLevel":40,"ranks":[{"spellId":32266,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Exodar.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":182351,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-ironforge","name":"Portal: Ironforge","iconBasename":"spell_arcane_portalironforge","iconPath":"/assets/ui/spells/spell_arcane_portalironforge.png","sourceUnlockLevel":40,"ranks":[{"spellId":11416,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Ironforge.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176497,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-orgrimmar","name":"Portal: Orgrimmar","iconBasename":"spell_arcane_portalorgrimmar","iconPath":"/assets/ui/spells/spell_arcane_portalorgrimmar.png","sourceUnlockLevel":40,"ranks":[{"spellId":11417,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Orgrimmar.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176499,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-silvermoon","name":"Portal: Silvermoon","iconBasename":"spell_arcane_portalsilvermoon","iconPath":"/assets/ui/spells/spell_arcane_portalsilvermoon.png","sourceUnlockLevel":40,"ranks":[{"spellId":32267,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Silvermoon.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":182352,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-stormwind","name":"Portal: Stormwind","iconBasename":"spell_arcane_portalstormwind","iconPath":"/assets/ui/spells/spell_arcane_portalstormwind.png","sourceUnlockLevel":40,"ranks":[{"spellId":10059,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Stormwind.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176296,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-undercity","name":"Portal: Undercity","iconBasename":"spell_arcane_portalundercity","iconPath":"/assets/ui/spells/spell_arcane_portalundercity.png","sourceUnlockLevel":40,"ranks":[{"spellId":11418,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Undercity.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176501,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-dragon-s-breath","name":"Dragon's Breath","iconBasename":"inv_misc_head_dragon_01","iconPath":"/assets/ui/spells/inv_misc_head_dragon_01.png","sourceUnlockLevel":50,"talentNodeId":"talent-1735","ranks":[{"spellId":31661,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":58,"description":"Targets in a cone in front of the caster take 430 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":370,"dieSides":61,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33041,"rank":2,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Targets in a cone in front of the caster take 526 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":454,"dieSides":73,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33042,"rank":3,"level":64,"sourceLevel":64,"maxScalingLevel":70,"description":"Targets in a cone in front of the caster take 666 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":574,"dieSides":93,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33043,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Targets in a cone in front of the caster take 790 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":680,"dieSides":111,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42949,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Targets in a cone in front of the caster take 1085 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":935,"dieSides":151,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42950,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Targets in a cone in front of the caster take 1279 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1101,"dieSides":179,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-darnassus","name":"Portal: Darnassus","iconBasename":"spell_arcane_portaldarnassus","iconPath":"/assets/ui/spells/spell_arcane_portaldarnassus.png","sourceUnlockLevel":50,"ranks":[{"spellId":11419,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Darnassus.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176498,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-thunder-bluff","name":"Portal: Thunder Bluff","iconBasename":"spell_arcane_portalthunderbluff","iconPath":"/assets/ui/spells/spell_arcane_portalthunderbluff.png","sourceUnlockLevel":50,"ranks":[{"spellId":11420,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Thunder Bluff.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176500,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-slow","name":"Slow","iconBasename":"spell_nature_slow","iconPath":"/assets/ui/spells/spell_nature_slow.png","sourceUnlockLevel":50,"talentNodeId":"talent-1729","ranks":[{"spellId":31589,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Reduces target's movement speed by 60%, increases the time between ranged attacks by 60% and increases casting time by 30%. Lasts 15 sec. Slow can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":218,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":216,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-summon-water-elemental","name":"Summon Water Elemental","iconBasename":"spell_frost_summonwaterelemental_2","iconPath":"/assets/ui/spells/spell_frost_summonwaterelemental_2.png","sourceUnlockLevel":50,"talentNodeId":"talent-1741","ranks":[{"spellId":31687,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summon a Water Elemental to fight for the caster for 45 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":510,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-brilliance","name":"Arcane Brilliance","iconBasename":"spell_holy_arcaneintellect","iconPath":"/assets/ui/spells/spell_holy_arcaneintellect.png","sourceUnlockLevel":56,"ranks":[{"spellId":23028,"rank":1,"level":56,"sourceLevel":56,"maxScalingLevel":66,"description":"Infuses all party and raid members with brilliance, increasing their Intellect by 31 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":97,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":27127,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Infuses all party and raid members with brilliance, increasing their Intellect by 40 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":81,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":43002,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Infuses all party and raid members with brilliance, increasing their Intellect by 60 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":81,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-barrage","name":"Arcane Barrage","iconBasename":"ability_mage_arcanebarrage","iconPath":"/assets/ui/spells/ability_mage_arcanebarrage.png","sourceUnlockLevel":60,"talentNodeId":"talent-1847","ranks":[{"spellId":44425,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Launches several missiles at the enemy target, causing 470 Arcane damage.","castTimeMs":0,"cooldownMs":3000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":386,"dieSides":85,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":44780,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Launches several missiles at the enemy target, causing 865 Arcane damage.","castTimeMs":0,"cooldownMs":3000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":709,"dieSides":157,"pointsPerLevel":15.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":44781,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":86,"description":"Launches several missiles at the enemy target, causing 1144 Arcane damage.","castTimeMs":0,"cooldownMs":3000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":936,"dieSides":209,"pointsPerLevel":6.099999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]}]},{"id":"wow335-mage-deep-freeze","name":"Deep Freeze","iconBasename":"ability_mage_deepfreeze","iconPath":"/assets/ui/spells/ability_mage_deepfreeze.png","sourceUnlockLevel":60,"talentNodeId":"talent-1857","ranks":[{"spellId":44572,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Stuns the target for 5 sec. Only usable on Frozen targets.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-living-bomb","name":"Living Bomb","iconBasename":"ability_mage_livingbomb","iconPath":"/assets/ui/spells/ability_mage_livingbomb.png","sourceUnlockLevel":60,"talentNodeId":"talent-1852","ranks":[{"spellId":44457,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 153 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":153,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":4,"basePoints":44461,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":44461,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over the listed duration. After the listed duration or when the spell is dispelled, the target explodes dealing 306 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":55359,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 256 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":256,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":4,"basePoints":55361,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":55361,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over the listed duration. After the listed duration or when the spell is dispelled, the target explodes dealing 512 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":512,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":55360,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":86,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 345 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":345,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":4,"basePoints":55362,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":55362,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":86,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over the listed duration. After the listed duration or when the spell is dispelled, the target explodes dealing 690 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":690,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-teleport-shattrath","name":"Teleport: Shattrath","iconBasename":"spell_arcane_teleportshattrath","iconPath":"/assets/ui/spells/spell_arcane_teleportshattrath.png","sourceUnlockLevel":60,"ranks":[{"spellId":33690,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Teleports the caster to Shattrath.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":35715,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Teleports the caster to Shattrath.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-molten-armor","name":"Molten Armor","iconBasename":"ability_mage_moltenarmor","iconPath":"/assets/ui/spells/ability_mage_moltenarmor.png","sourceUnlockLevel":62,"ranks":[{"spellId":30482,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Causes 0 Fire damage when hit, increases your critical strike rating by 35% of your spirit, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34913,"coefficient":0},{"index":1,"effectType":6,"auraType":197,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":220,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1792,"triggerSpellId":0,"coefficient":0}]},{"spellId":34913,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Causes 75 Fire damage when hit, increases your chance to critically hit with spells by the listed amount%, and reduces the chance you are critically hit by the listed amount%. Only one type of Armor spell can be active on the Mage at any time. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":43043,"rank":2,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Causes 130 Fire damage when hit, increases your chance to critically hit with spells by the listed amount%, and reduces the chance you are critically hit by the listed amount%. Only one type of Armor spell can be active on the Mage at any time. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":43045,"rank":2,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Causes 0 Fire damage when hit, increases your critical strike rating by 35% of your spirit, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":43043,"coefficient":0},{"index":1,"effectType":6,"auraType":197,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":220,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1792,"triggerSpellId":0,"coefficient":0}]},{"spellId":43044,"rank":3,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Causes 170 Fire damage when hit, increases your chance to critically hit with spells by the listed amount%, and reduces the chance you are critically hit by the listed amount%. Only one type of Armor spell can be active on the Mage at any time. Lasts the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":43046,"rank":3,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Causes 0 Fire damage when hit, increases your critical strike rating by 35% of your spirit, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":43044,"coefficient":0},{"index":1,"effectType":6,"auraType":197,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":220,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1792,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-blast","name":"Arcane Blast","iconBasename":"spell_arcane_blast","iconPath":"/assets/ui/spells/spell_arcane_blast.png","sourceUnlockLevel":64,"ranks":[{"spellId":30451,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":68,"description":"Blasts the target with energy, dealing 978 Arcane damage. Each time you cast Arcane Blast, the damage of all Arcane spells is increased by 978% and mana cost of Arcane Blast is increased by 1%. Effect stacks up to the listed amount times and lasts the listed duration or until any Arcane damage spell except Arcane Blast is cast.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":842,"dieSides":137,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36032,"coefficient":0}]},{"spellId":42894,"rank":2,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"Blasts the target with energy, dealing 1041 Arcane damage. Each time you cast Arcane Blast, the damage of all Arcane spells is increased by 1041% and mana cost of Arcane Blast is increased by 1%. Effect stacks up to the listed amount times and lasts the listed duration or until any Arcane damage spell except Arcane Blast is cast.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":897,"dieSides":145,"pointsPerLevel":5.300000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36032,"coefficient":0}]},{"spellId":42896,"rank":3,"level":76,"sourceLevel":76,"maxScalingLevel":80,"description":"Blasts the target with energy, dealing 1215 Arcane damage. Each time you cast Arcane Blast, the damage of all Arcane spells is increased by 1215% and mana cost of Arcane Blast is increased by 0%. Effect stacks up to the listed amount times and lasts the listed duration or until any Arcane damage spell except Arcane Blast is cast.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1047,"dieSides":169,"pointsPerLevel":6.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36032,"coefficient":0}]},{"spellId":42897,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Blasts the target with energy, dealing 1377 Arcane damage. Each time you cast Arcane Blast, the damage of all Arcane spells is increased by 1377% and mana cost of Arcane Blast is increased by 1%. Effect stacks up to the listed amount times and lasts the listed duration or until any Arcane damage spell except Arcane Blast is cast.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1185,"dieSides":193,"pointsPerLevel":7,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36032,"coefficient":0}]}]},{"id":"wow335-mage-portal-shattrath","name":"Portal: Shattrath","iconBasename":"spell_arcane_portalshattrath","iconPath":"/assets/ui/spells/spell_arcane_portalshattrath.png","sourceUnlockLevel":65,"ranks":[{"spellId":33691,"rank":0,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Shattrath.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":183384,"triggerSpellId":0,"coefficient":0}]},{"spellId":35717,"rank":0,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Shattrath.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":184594,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-ice-lance","name":"Ice Lance","iconBasename":"spell_frost_frostblast","iconPath":"/assets/ui/spells/spell_frost_frostblast.png","sourceUnlockLevel":66,"ranks":[{"spellId":30455,"rank":1,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Deals 187 Frost damage to an enemy target. Causes triple damage against Frozen targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":161,"dieSides":27,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42913,"rank":2,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Deals 210 Frost damage to an enemy target. Causes triple damage against Frozen targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":182,"dieSides":29,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42914,"rank":3,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Deals 255 Frost damage to an enemy target. Causes triple damage against Frozen targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":221,"dieSides":35,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]}]},{"id":"wow335-mage-ritual-of-refreshment","name":"Ritual of Refreshment","iconBasename":"spell_arcane_massdispel","iconPath":"/assets/ui/spells/spell_arcane_massdispel.png","sourceUnlockLevel":70,"ranks":[{"spellId":43987,"rank":1,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Begins a ritual that creates a refreshment table. Raid members can click the table to acquire Conjured Mana Biscuits. The tables lasts for 60 sec or 50 charges. Requires the caster and 2 additional party members to complete the ritual. In order to participate, all players must right-click the refreshment portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":186811,"triggerSpellId":0,"coefficient":0}]},{"spellId":58659,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Begins a ritual that creates a refreshment table. Raid members can click the table to acquire Conjured Mana Strudels. The tables lasts for 60 sec or 50 charges. Requires the caster and 2 additional party members to complete the ritual. In order to participate, all players must right-click the refreshment portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":193062,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-teleport-dalaran","name":"Teleport: Dalaran","iconBasename":"spell_arcane_teleportdalaran","iconPath":"/assets/ui/spells/spell_arcane_teleportdalaran.png","sourceUnlockLevel":71,"ranks":[{"spellId":53140,"rank":0,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Teleports the caster to Dalaran.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-portal-dalaran","name":"Portal: Dalaran","iconBasename":"spell_arcane_portaldalaran","iconPath":"/assets/ui/spells/spell_arcane_portaldalaran.png","sourceUnlockLevel":74,"ranks":[{"spellId":53142,"rank":0,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Dalaran.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":191164,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-conjure-refreshment","name":"Conjure Refreshment","iconBasename":"ability_mage_conjurefoodrank9","iconPath":"/assets/ui/spells/ability_mage_conjurefoodrank9.png","sourceUnlockLevel":75,"ranks":[{"spellId":42955,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":75,"description":"Conjures 20 Mana Pies providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":40,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42956,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":80,"description":"Conjures 20 Mana Strudels providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":40,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-frostfire-bolt","name":"Frostfire Bolt","iconBasename":"ability_mage_frostfirebolt","iconPath":"/assets/ui/spells/ability_mage_frostfirebolt.png","sourceUnlockLevel":75,"ranks":[{"spellId":44614,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Launches a bolt of frostfire at the enemy, causing 731 Frostfire damage, slowing movement speed by 40% and causing an additional the listed amount Frostfire damage over 9 sec. This spell will be checked against the lower of the target's Frost and Fire resists.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":629,"dieSides":103,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798},{"index":2,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47610,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Launches a bolt of frostfire at the enemy, causing 838 Frostfire damage, slowing movement speed by 40% and causing an additional the listed amount Frostfire damage over 9 sec. This spell will be checked against the lower of the target's Frost and Fire resists.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":722,"dieSides":117,"pointsPerLevel":4.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798},{"index":2,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-mirror-image","name":"Mirror Image","iconBasename":"spell_magic_lesserinvisibilty","iconPath":"/assets/ui/spells/spell_magic_lesserinvisibilty.png","sourceUnlockLevel":80,"ranks":[{"spellId":55342,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":80,"description":"Creates 3 copies of the caster nearby, which cast spells and attack the mage's enemies. Lasts 30 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":103,"basePoints":-90000000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":58832,"coefficient":0},{"index":2,"effectType":6,"auraType":226,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58836,"coefficient":0}]}]}],"warlock":[{"id":"wow335-warlock-conflagrate","name":"Conflagrate","iconBasename":"spell_fire_fireball","iconPath":"/assets/ui/spells/spell_fire_fireball.png","sourceUnlockLevel":1,"talentNodeId":"talent-968","ranks":[{"spellId":17962,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Consumes an Immolate or Shadowflame effect on the enemy target to instantly deal damage equal to 12 sec of your Immolate or 8 sec of your Shadowflame.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-curse-of-exhaustion","name":"Curse of Exhaustion","iconBasename":"spell_shadow_grimward","iconPath":"/assets/ui/spells/spell_shadow_grimward.png","sourceUnlockLevel":1,"talentNodeId":"talent-1081","ranks":[{"spellId":18223,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Reduces the target's movement speed by 30% for 12 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-demon-skin","name":"Demon Skin","iconBasename":"spell_shadow_ragingscream","iconPath":"/assets/ui/spells/spell_shadow_ragingscream.png","sourceUnlockLevel":1,"ranks":[{"spellId":687,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 90, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":696,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 265, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":265,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-fel-domination","name":"Fel Domination","iconBasename":"spell_nature_removecurse","iconPath":"/assets/ui/spells/spell_nature_removecurse.png","sourceUnlockLevel":1,"talentNodeId":"talent-1226","ranks":[{"spellId":18708,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Your next Imp, Voidwalker, Succubus, Felhunter or Felguard Summon spell has its casting time reduced by the listed amount sec and its Mana cost reduced by 50%.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":-5500,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":108,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-immolate","name":"Immolate","iconBasename":"spell_fire_immolation","iconPath":"/assets/ui/spells/spell_fire_immolation.png","sourceUnlockLevel":1,"ranks":[{"spellId":348,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Burns the enemy for 8 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.057999998331069946},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":707,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Burns the enemy for 19 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":19,"dieSides":1,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.125},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1094,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Burns the enemy for 45 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2941,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Burns the enemy for 90 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":90,"dieSides":1,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11665,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Burns the enemy for 134 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":51,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":134,"dieSides":1,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11667,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Burns the enemy for 192 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":73,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":192,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11668,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Burns the enemy for 258 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":97,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":258,"dieSides":1,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25309,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Burns the enemy for 279 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":102,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":279,"dieSides":1,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27215,"rank":9,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Burns the enemy for 327 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":327,"dieSides":1,"pointsPerLevel":4.300000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47810,"rank":10,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Burns the enemy for 370 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":139,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":370,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47811,"rank":11,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Burns the enemy for 460 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":157,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":460,"dieSides":1,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-metamorphosis","name":"Metamorphosis","iconBasename":"spell_shadow_demonform","iconPath":"/assets/ui/spells/spell_shadow_demonform.png","sourceUnlockLevel":1,"talentNodeId":"talent-1886","ranks":[{"spellId":59672,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"You transform into a Demon for the listed duration. This form increases your armor by 0%, damage by 0%, reduces the chance you'll be critically hit by melee attacks by 6% and reduces the duration of stun and snare effects by 1%. You gain some unique demon abilities in addition to your normal abilities. 3 minute cooldown.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":47241,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50581,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":59673,"coefficient":0}]}]},{"id":"wow335-warlock-shadow-bolt","name":"Shadow Bolt","iconBasename":"spell_shadow_shadowbolt","iconPath":"/assets/ui/spells/spell_shadow_shadowbolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":686,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Sends a shadowy bolt at the enemy, causing 16 Shadow damage.","castTimeMs":1700,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":12,"dieSides":5,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14000000059604645}]},{"spellId":695,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Sends a shadowy bolt at the enemy, causing 29 Shadow damage.","castTimeMs":2200,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":23,"dieSides":7,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.29899999499320984}]},{"spellId":705,"rank":3,"level":12,"sourceLevel":12,"maxScalingLevel":17,"description":"Sends a shadowy bolt at the enemy, causing 56 Shadow damage.","castTimeMs":2800,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":48,"dieSides":9,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5600000023841858}]},{"spellId":1088,"rank":4,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Sends a shadowy bolt at the enemy, causing 98 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":86,"dieSides":13,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":1106,"rank":5,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Sends a shadowy bolt at the enemy, causing 162 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":142,"dieSides":21,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":7641,"rank":6,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Sends a shadowy bolt at the enemy, causing 230 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":204,"dieSides":27,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":11659,"rank":7,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Sends a shadowy bolt at the enemy, causing 315 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":281,"dieSides":35,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":11660,"rank":8,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Sends a shadowy bolt at the enemy, causing 402 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":360,"dieSides":43,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":11661,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Sends a shadowy bolt at the enemy, causing 507 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":455,"dieSides":53,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":25307,"rank":10,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Sends a shadowy bolt at the enemy, causing 538 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":482,"dieSides":57,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":27209,"rank":11,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Sends a shadowy bolt at the enemy, causing 603 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":541,"dieSides":63,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":47808,"rank":12,"level":74,"sourceLevel":74,"maxScalingLevel":79,"description":"Sends a shadowy bolt at the enemy, causing 664 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":596,"dieSides":69,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":47809,"rank":13,"level":79,"sourceLevel":79,"maxScalingLevel":84,"description":"Sends a shadowy bolt at the enemy, causing 770 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":690,"dieSides":81,"pointsPerLevel":4.400000095367432,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]}]},{"id":"wow335-warlock-summon-imp","name":"Summon Imp","iconBasename":"spell_shadow_summonimp","iconPath":"/assets/ui/spells/spell_shadow_summonimp.png","sourceUnlockLevel":1,"ranks":[{"spellId":688,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Summons an Imp under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":416,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-unstable-affliction","name":"Unstable Affliction","iconBasename":"spell_shadow_unstableaffliction_3","iconPath":"/assets/ui/spells/spell_shadow_unstableaffliction_3.png","sourceUnlockLevel":1,"talentNodeId":"talent-1670","ranks":[{"spellId":30108,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 15 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30404,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 15 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30405,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 15 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":175,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47841,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 15 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":197,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47843,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 15 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":230,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":31117,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Shadow energy slowly destroys the target. In addition, if the Unstable Affliction is dispelled it will cause damage to the dispeller and silence them for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":27,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":9,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-corruption","name":"Corruption","iconBasename":"spell_shadow_abominationexplosion","iconPath":"/assets/ui/spells/spell_shadow_abominationexplosion.png","sourceUnlockLevel":4,"ranks":[{"spellId":172,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Corrupts the target, causing the listed amount Shadow damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.06239999830722809},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6222,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Corrupts the target, causing the listed amount Shadow damage over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6223,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":7648,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11671,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":81,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11672,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":111,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25311,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":137,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27216,"rank":8,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47812,"rank":9,"level":71,"sourceLevel":71,"maxScalingLevel":76,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":164,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47813,"rank":10,"level":77,"sourceLevel":77,"maxScalingLevel":82,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":180,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-weakness","name":"Curse of Weakness","iconBasename":"spell_shadow_curseofmannoroth","iconPath":"/assets/ui/spells/spell_shadow_curseofmannoroth.png","sourceUnlockLevel":4,"ranks":[{"spellId":702,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 21 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":1108,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 41 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":6205,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 64 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":7646,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 82 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-82,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":11707,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 123 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":11708,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 163 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-163,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":27224,"rank":7,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 257 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-257,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":30909,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 350 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-350,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":50511,"rank":9,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 478 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-478,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-life-tap","name":"Life Tap","iconBasename":"spell_shadow_burningspirit","iconPath":"/assets/ui/spells/spell_shadow_burningspirit.png","sourceUnlockLevel":6,"ranks":[{"spellId":1454,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":16,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1455,"rank":2,"level":16,"sourceLevel":16,"maxScalingLevel":26,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1456,"rank":3,"level":26,"sourceLevel":26,"maxScalingLevel":36,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":24,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11687,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":46,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":37,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11688,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":56,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":42,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11689,"rank":6,"level":56,"sourceLevel":56,"maxScalingLevel":66,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":500,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27222,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":78,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":710,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":57946,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1490,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-agony","name":"Curse of Agony","iconBasename":"spell_shadow_curseofsargeras","iconPath":"/assets/ui/spells/spell_shadow_curseofsargeras.png","sourceUnlockLevel":8,"ranks":[{"spellId":980,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":17,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05480000004172325}]},{"spellId":6217,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":37,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":11711,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":47,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":11712,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":57,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":11713,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":66,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":27218,"rank":7,"level":67,"sourceLevel":67,"maxScalingLevel":72,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":113,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":47863,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":78,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":47864,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":84,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":145,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]}]},{"id":"wow335-warlock-fear","name":"Fear","iconBasename":"spell_shadow_possession","iconPath":"/assets/ui/spells/spell_shadow_possession.png","sourceUnlockLevel":8,"ranks":[{"spellId":5782,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Strikes fear in the enemy, causing it to run in fear for up to 10 sec. Damage caused may interrupt the effect. Only 1 target can be feared at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6213,"rank":2,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Strikes fear in the enemy, causing it to run in fear for up to 15 sec. Damage caused may interrupt the effect. Only 1 target can be feared at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6215,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Strikes fear in the enemy, causing it to run in fear for up to 20 sec. Damage caused may interrupt the effect. Only 1 target can be feared at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-create-healthstone","name":"Create Healthstone","iconBasename":"inv_stone_04","iconPath":"/assets/ui/spells/inv_stone_04.png","sourceUnlockLevel":10,"ranks":[{"spellId":6201,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Creates a Minor Healthstone that can be used to instantly restore 1 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6202,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Creates a Lesser Healthstone that can be used to instantly restore 1 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5699,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Creates a Healthstone that can be used to instantly restore 1 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11729,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Creates a Greater Healthstone that can be used to instantly restore 1 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11730,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Creates a Major Healthstone that can be used to instantly restore 1 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27230,"rank":6,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Creates a Master Healthstone that can be used to instantly restore 1 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":53,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47871,"rank":7,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Creates a Demonic Healthstone that can be used to instantly restore 1 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":53,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47878,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Creates a Fel Healthstone that can be used to instantly restore 1 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":53,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-drain-soul","name":"Drain Soul","iconBasename":"spell_shadow_haunting","iconPath":"/assets/ui/spells/spell_shadow_haunting.png","sourceUnlockLevel":10,"ranks":[{"spellId":1120,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":23,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":11,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.2680000066757202},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8288,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":37,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8289,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":51,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":59,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11675,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":66,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":91,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27217,"rank":5,"level":67,"sourceLevel":67,"maxScalingLevel":76,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":124,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47855,"rank":6,"level":77,"sourceLevel":77,"maxScalingLevel":86,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":142,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-summon-voidwalker","name":"Summon Voidwalker","iconBasename":"spell_shadow_summonvoidwalker","iconPath":"/assets/ui/spells/spell_shadow_summonvoidwalker.png","sourceUnlockLevel":10,"ranks":[{"spellId":697,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Summons a Voidwalker under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1860,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-health-funnel","name":"Health Funnel","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":12,"ranks":[{"spellId":755,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Gives 12 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":11,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3698,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Gives 24 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":15,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3699,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Gives 43 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":24,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3700,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Gives 64 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":39,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11693,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Gives 89 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":45,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":89,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11694,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Gives 119 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":62,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":119,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11695,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives 153 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":79,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":153,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27259,"rank":8,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Gives 188 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":99,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":188,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47856,"rank":9,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Gives 520 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":277,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":520,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-drain-life","name":"Drain Life","iconBasename":"spell_shadow_lifedrain02","iconPath":"/assets/ui/spells/spell_shadow_lifedrain02.png","sourceUnlockLevel":14,"ranks":[{"spellId":689,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Transfers 10 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11100000143051147}]},{"spellId":699,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Transfers 17 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":709,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Transfers 29 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":7651,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Transfers 41 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":11699,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Transfers 55 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":11700,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Transfers 71 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":71,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":27219,"rank":7,"level":62,"sourceLevel":62,"maxScalingLevel":67,"description":"Transfers 87 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":27220,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Transfers 108 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":108,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":47857,"rank":9,"level":78,"sourceLevel":78,"maxScalingLevel":83,"description":"Transfers 133 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":133,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]}]},{"id":"wow335-warlock-unending-breath","name":"Unending Breath","iconBasename":"spell_shadow_demonbreath","iconPath":"/assets/ui/spells/spell_shadow_demonbreath.png","sourceUnlockLevel":16,"ranks":[{"spellId":5697,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Allows the target to breathe underwater for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":82,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":58,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-create-soulstone","name":"Create Soulstone","iconBasename":"spell_shadow_soulgem","iconPath":"/assets/ui/spells/spell_shadow_soulgem.png","sourceUnlockLevel":18,"ranks":[{"spellId":693,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Creates a Minor Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20752,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Creates a Lesser Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20755,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20756,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Creates a Greater Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20757,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Creates a Major Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27238,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Creates a Master Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47884,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Creates a Demonic Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-searing-pain","name":"Searing Pain","iconBasename":"spell_fire_soulburn","iconPath":"/assets/ui/spells/spell_fire_soulburn.png","sourceUnlockLevel":18,"ranks":[{"spellId":5676,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":24,"description":"Inflict searing pain on the enemy target, causing 42 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":34,"dieSides":9,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3959999978542328}]},{"spellId":17919,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Inflict searing pain on the enemy target, causing 71 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":59,"dieSides":13,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":17920,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":40,"description":"Inflict searing pain on the enemy target, causing 104 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":86,"dieSides":19,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":17921,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Inflict searing pain on the enemy target, causing 146 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":122,"dieSides":25,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":17922,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Inflict searing pain on the enemy target, causing 188 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":158,"dieSides":31,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":17923,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"Inflict searing pain on the enemy target, causing 240 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":204,"dieSides":37,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27210,"rank":7,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Inflict searing pain on the enemy target, causing 287 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":243,"dieSides":45,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":30459,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Inflict searing pain on the enemy target, causing 320 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":270,"dieSides":51,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":47814,"rank":9,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Inflict searing pain on the enemy target, causing 349 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":295,"dieSides":55,"pointsPerLevel":4.099999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":47815,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Inflict searing pain on the enemy target, causing 405 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":343,"dieSides":63,"pointsPerLevel":4.800000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-warlock-demon-armor","name":"Demon Armor","iconBasename":"spell_shadow_ragingscream","iconPath":"/assets/ui/spells/spell_shadow_ragingscream.png","sourceUnlockLevel":20,"ranks":[{"spellId":706,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 465, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":465,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":1086,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 660, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":660,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":11733,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 860, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":860,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":11734,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 1060, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1060,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":11735,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 1260, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1260,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27260,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 1460, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1460,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":47793,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 1855, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1855,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":47889,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 2100, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":2100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-felsteed","name":"Felsteed","iconBasename":"spell_nature_swiftness","iconPath":"/assets/ui/spells/spell_nature_swiftness.png","sourceUnlockLevel":20,"ranks":[{"spellId":5784,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Felsteed, which serves as a mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":304,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-rain-of-fire","name":"Rain of Fire","iconBasename":"spell_shadow_rainoffire","iconPath":"/assets/ui/spells/spell_shadow_rainoffire.png","sourceUnlockLevel":20,"ranks":[{"spellId":5740,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":77,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":42,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42223,"coefficient":0}]},{"spellId":42223,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":6219,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":77,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":96,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42224,"coefficient":0}]},{"spellId":42224,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":136,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":11677,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":77,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":155,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42225,"coefficient":0}]},{"spellId":42225,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":220,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":11678,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":77,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":226,"dieSides":1,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42226,"coefficient":0}]},{"spellId":42226,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":321,"dieSides":1,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":27212,"rank":5,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":57,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":303,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42218,"coefficient":0}]},{"spellId":42218,"rank":5,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":452,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":47817,"rank":6,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":538,"dieSides":1,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":47819,"rank":6,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":57,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":385,"dieSides":1,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":47817,"coefficient":0}]},{"spellId":47818,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":675,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":47820,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":57,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":485,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":47818,"coefficient":0}]}]},{"id":"wow335-warlock-ritual-of-summoning","name":"Ritual of Summoning","iconBasename":"spell_shadow_twilight","iconPath":"/assets/ui/spells/spell_shadow_twilight.png","sourceUnlockLevel":20,"ranks":[{"spellId":698,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Begins a ritual that creates a summoning portal. The summoning portal can be used by 2 party or raid members to summon a targeted party or raid member. The ritual portal requires the caster and 2 additional party or raid members to complete. In order to participate, all players must be out of combat and right-click the portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":120000,"channelDurationMs":120000,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":194108,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-shadowburn","name":"Shadowburn","iconBasename":"spell_shadow_scourgebuild","iconPath":"/assets/ui/spells/spell_shadow_scourgebuild.png","sourceUnlockLevel":20,"talentNodeId":"talent-963","ranks":[{"spellId":17877,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":24,"description":"Instantly blasts the target for 99 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":87,"dieSides":13,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18867,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":30,"description":"Instantly blasts the target for 131 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":115,"dieSides":17,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18868,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":38,"description":"Instantly blasts the target for 210 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":186,"dieSides":25,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18869,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Instantly blasts the target for 293 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":261,"dieSides":33,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18870,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":54,"description":"Instantly blasts the target for 392 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":350,"dieSides":43,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18871,"rank":6,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Instantly blasts the target for 502 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":450,"dieSides":53,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27263,"rank":7,"level":63,"sourceLevel":63,"maxScalingLevel":69,"description":"Instantly blasts the target for 578 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":518,"dieSides":61,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":30546,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Instantly blasts the target for 665 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":597,"dieSides":69,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":47826,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Instantly blasts the target for 738 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":662,"dieSides":77,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":47827,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Instantly blasts the target for 865 Shadow damage. If the target dies within the listed duration of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":775,"dieSides":91,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-warlock-soul-link","name":"Soul Link","iconBasename":"spell_shadow_gathershadows","iconPath":"/assets/ui/spells/spell_shadow_gathershadows.png","sourceUnlockLevel":20,"talentNodeId":"talent-1282","ranks":[{"spellId":19028,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"When active, 1% of all damage taken by the caster is taken by your Imp, Voidwalker, Succubus, Felhunter, Felguard, or enslaved demon instead. That damage cannot be prevented. Lasts as long as the demon is active and controlled.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-summon-succubus","name":"Summon Succubus","iconBasename":"spell_shadow_summonsuccubus","iconPath":"/assets/ui/spells/spell_shadow_summonsuccubus.png","sourceUnlockLevel":20,"ranks":[{"spellId":712,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Succubus under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1863,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-eye-of-kilrogg","name":"Eye of Kilrogg","iconBasename":"spell_shadow_evileye","iconPath":"/assets/ui/spells/spell_shadow_evileye.png","sourceUnlockLevel":22,"ranks":[{"spellId":126,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Summons an Eye of Kilrogg and binds your vision to it. The eye moves quickly but is very fragile.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":45000,"channelDurationMs":45000,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":4277,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-drain-mana","name":"Drain Mana","iconBasename":"spell_shadow_siphonmana","iconPath":"/assets/ui/spells/spell_shadow_siphonmana.png","sourceUnlockLevel":24,"ranks":[{"spellId":5138,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Transfers 3% of target's maximum mana every 1 sec from the target to the caster (up to a maximum of the listed amount% of the caster's maximum mana every 1 sec). Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":64,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-sense-demons","name":"Sense Demons","iconBasename":"spell_shadow_metamorphosis","iconPath":"/assets/ui/spells/spell_shadow_metamorphosis.png","sourceUnlockLevel":24,"ranks":[{"spellId":5500,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Shows the location of all nearby demons on the minimap until cancelled. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-tongues","name":"Curse of Tongues","iconBasename":"spell_shadow_curseoftounges","iconPath":"/assets/ui/spells/spell_shadow_curseoftounges.png","sourceUnlockLevel":26,"ranks":[{"spellId":1714,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Forces the target to speak in Demonic, increasing the casting time of all spells by 25%. Only one Curse per Warlock can be active on any one target. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":216,"basePoints":-25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":75,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]},{"spellId":11719,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Forces the target to speak in Demonic, increasing the casting time of all spells by 30%. Only one Curse per Warlock can be active on any one target. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":216,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":75,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-detect-invisibility","name":"Detect Invisibility","iconBasename":"spell_shadow_detectlesserinvisibility","iconPath":"/assets/ui/spells/spell_shadow_detectlesserinvisibility.png","sourceUnlockLevel":26,"ranks":[{"spellId":132,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Allows the friendly target to detect lesser invisibility for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":19,"basePoints":1000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-banish","name":"Banish","iconBasename":"spell_shadow_cripple","iconPath":"/assets/ui/spells/spell_shadow_cripple.png","sourceUnlockLevel":28,"ranks":[{"spellId":710,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Banishes the enemy target, preventing all action but making it invulnerable for up to 20 sec. Only one target can be banished at a time. Casting Banish on a banished target will cancel the spell. Only works on Demons and Elementals.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":118,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":18647,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Banishes the enemy target, preventing all action but making it invulnerable for up to 30 sec. Only one target can be banished at a time. Casting Banish on a banished target will cancel the spell. Only works on Demons and Elementals.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":118,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-create-firestone","name":"Create Firestone","iconBasename":"inv_ammo_firetar","iconPath":"/assets/ui/spells/inv_ammo_firetar.png","sourceUnlockLevel":28,"ranks":[{"spellId":6366,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by the listed amount. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":73,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17951,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by the listed amount. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":73,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17952,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by the listed amount. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":73,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17953,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by the listed amount. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":73,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27250,"rank":5,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by the listed amount. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-demonic-empowerment","name":"Demonic Empowerment","iconBasename":"ability_warlock_demonicempowerment","iconPath":"/assets/ui/spells/ability_warlock_demonicempowerment.png","sourceUnlockLevel":30,"talentNodeId":"talent-1880","ranks":[{"spellId":47193,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Grants the Warlock's summoned demon Empowerment. Imp - Increases the Imp's spell critical strike chance by 0% for the listed duration. Voidwalker - Increases the Voidwalker's health by the listed amount%, and its threat generated from spells and attacks by the listed amount% for the listed duration. Succubus - Instantly vanishes, causing the Succubus to go into an improved Invisibility state. The vanish effect removes all stuns, snares and movement impairing effects from the Succubus. Felhunter - Dispels all magical effects from the Felhunter. Felguard - Increases the Felguard's attack speed by 0% and breaks all stun, snare and movement impairing effects and makes your Felguard immune to them for the listed duration.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-enslave-demon","name":"Enslave Demon","iconBasename":"spell_shadow_enslavedemon","iconPath":"/assets/ui/spells/spell_shadow_enslavedemon.png","sourceUnlockLevel":30,"ranks":[{"spellId":1098,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":43,"description":"Enslaves the target demon, up to level 32, forcing it to do your bidding. While enslaved, the time between the demon's attacks is increased by 30% and its casting speed is slowed by 20%. Lasts up to 300 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":6,"basePoints":32,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11725,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":56,"description":"Enslaves the target demon, up to level 47, forcing it to do your bidding. While enslaved, the time between the demon's attacks is increased by 30% and its casting speed is slowed by 20%. Lasts up to 300 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":6,"basePoints":47,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11726,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":70,"description":"Enslaves the target demon, up to level 62, forcing it to do your bidding. While enslaved, the time between the demon's attacks is increased by 30% and its casting speed is slowed by 20%. Lasts up to 300 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":6,"basePoints":62,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61191,"rank":4,"level":72,"sourceLevel":72,"maxScalingLevel":80,"description":"Enslaves the target demon, up to level 76, forcing it to do your bidding. While enslaved, the time between the demon's attacks is increased by 30% and its casting speed is slowed by 20%. Lasts up to 300 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":6,"basePoints":76,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-hellfire","name":"Hellfire","iconBasename":"spell_fire_incinerate","iconPath":"/assets/ui/spells/spell_fire_incinerate.png","sourceUnlockLevel":30,"ranks":[{"spellId":1949,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":40,"description":"Ignites the area surrounding the caster, causing 83 Fire damage to the listed amount and 0 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":87,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":5857,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":83,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]},{"spellId":11683,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":52,"description":"Ignites the area surrounding the caster, causing 139 Fire damage to the listed amount and 0 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":87,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":11681,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":139,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]},{"spellId":11684,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":64,"description":"Ignites the area surrounding the caster, causing 208 Fire damage to the listed amount and 0 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":87,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":11682,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":208,"dieSides":1,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]},{"spellId":27213,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":78,"description":"Ignites the area surrounding the caster, causing 306 Fire damage to the listed amount and 0 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":27214,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":306,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]},{"spellId":47823,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":88,"description":"Ignites the area surrounding the caster, causing 451 Fire damage to the listed amount and 0 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":47822,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":451,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-summon-felhunter","name":"Summon Felhunter","iconBasename":"spell_shadow_summonfelhunter","iconPath":"/assets/ui/spells/spell_shadow_summonfelhunter.png","sourceUnlockLevel":30,"ranks":[{"spellId":691,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Felhunter under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":417,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-the-elements","name":"Curse of the Elements","iconBasename":"spell_shadow_chilltouch","iconPath":"/assets/ui/spells/spell_shadow_chilltouch.png","sourceUnlockLevel":32,"ranks":[{"spellId":1490,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature, and Shadow resistances by 45 and increasing magic damage taken by 6%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":11721,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature, and Shadow resistances by 60 and increasing magic damage taken by 8%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":11722,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature and Shadow resistances by 75 and increasing magic damage taken by 10%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":27228,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature, and Shadow resistances by 88 and increasing magic damage taken by 10%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-88,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":47865,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature, and Shadow resistances by 165 and increasing magic damage taken by 13%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-shadow-ward","name":"Shadow Ward","iconBasename":"spell_shadow_antishadow","iconPath":"/assets/ui/spells/spell_shadow_antishadow.png","sourceUnlockLevel":32,"ranks":[{"spellId":6229,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":41,"description":"Absorbs 290 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":11739,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":51,"description":"Absorbs 470 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":470,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":11740,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":59,"description":"Absorbs 675 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":675,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":28610,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Absorbs 875 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":875,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":47890,"rank":5,"level":72,"sourceLevel":72,"maxScalingLevel":77,"description":"Absorbs 2750 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":2750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":47891,"rank":6,"level":78,"sourceLevel":78,"maxScalingLevel":83,"description":"Absorbs 3300 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":3300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-create-spellstone","name":"Create Spellstone","iconBasename":"inv_misc_gem_sapphire_01","iconPath":"/assets/ui/spells/inv_misc_gem_sapphire_01.png","sourceUnlockLevel":36,"ranks":[{"spellId":2362,"rank":1,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by the listed amount. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":61,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17727,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by the listed amount. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":61,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17728,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by the listed amount. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":61,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":28172,"rank":4,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by the listed amount. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":45,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47886,"rank":5,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by the listed amount. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":45,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47888,"rank":6,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by the listed amount. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":45,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-idiocy","name":"Curse of Idiocy","iconBasename":"spell_shadow_mindrot","iconPath":"/assets/ui/spells/spell_shadow_mindrot.png","sourceUnlockLevel":38,"ranks":[{"spellId":1010,"rank":1,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Curse the target with idiocy, reducing Intellect and Spirit by 6 every 3 seconds until each is reduced by a total of the listed amount Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":110,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":-6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":-6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":1010,"coefficient":0}]}]},{"id":"wow335-warlock-dark-pact","name":"Dark Pact","iconBasename":"spell_shadow_darkritual","iconPath":"/assets/ui/spells/spell_shadow_darkritual.png","sourceUnlockLevel":40,"talentNodeId":"talent-1022","ranks":[{"spellId":18220,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":50,"description":"Drains 305 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":305,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18937,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":60,"description":"Drains 440 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":440,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18938,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Drains 545 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":545,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27265,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Drains 700 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":700,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":59092,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Drains 1200 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":1200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-dreadsteed","name":"Dreadsteed","iconBasename":"ability_mount_dreadsteed","iconPath":"/assets/ui/spells/ability_mount_dreadsteed.png","sourceUnlockLevel":40,"ranks":[{"spellId":23161,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Dreadsteed, which serves as a mount. This is a very fast mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14505,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-howl-of-terror","name":"Howl of Terror","iconBasename":"spell_shadow_deathscream","iconPath":"/assets/ui/spells/spell_shadow_deathscream.png","sourceUnlockLevel":40,"ranks":[{"spellId":5484,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":52,"description":"Howl, causing the listed amount enemies within the listed amount yds to flee in terror for 6 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":40000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17928,"rank":2,"level":54,"sourceLevel":54,"maxScalingLevel":66,"description":"Howl, causing the listed amount enemies within the listed amount yds to flee in terror for 8 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":40000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-death-coil","name":"Death Coil","iconBasename":"spell_shadow_deathcoil","iconPath":"/assets/ui/spells/spell_shadow_deathcoil.png","sourceUnlockLevel":42,"ranks":[{"spellId":6789,"rank":1,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Causes the enemy target to run in horror for 3 sec and causes 244 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":244,"dieSides":1,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17925,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Causes the enemy target to run in horror for 3 sec and causes 319 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":319,"dieSides":1,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17926,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"Causes the enemy target to run in horror for 3 sec and causes 400 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27223,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":74,"description":"Causes the enemy target to run in horror for 3 sec and causes 519 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":519,"dieSides":1,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47859,"rank":5,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Causes the enemy target to run in horror for 3 sec and causes 670 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":670,"dieSides":1,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47860,"rank":6,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Causes the enemy target to run in horror for 3 sec and causes 790 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":790,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-soul-fire","name":"Soul Fire","iconBasename":"spell_fire_fireball02","iconPath":"/assets/ui/spells/spell_fire_fireball02.png","sourceUnlockLevel":48,"ranks":[{"spellId":6353,"rank":1,"level":48,"sourceLevel":48,"maxScalingLevel":54,"description":"Burn the enemy's soul, causing 783 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":623,"dieSides":161,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":17924,"rank":2,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Burn the enemy's soul, causing 881 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":703,"dieSides":179,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":27211,"rank":3,"level":64,"sourceLevel":64,"maxScalingLevel":68,"description":"Burn the enemy's soul, causing 1051 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":839,"dieSides":213,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":30545,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Burn the enemy's soul, causing 1257 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1003,"dieSides":255,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":47824,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Burn the enemy's soul, causing 1423 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1137,"dieSides":287,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":47825,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Burn the enemy's soul, causing 1657 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1323,"dieSides":335,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]}]},{"id":"wow335-warlock-inferno","name":"Inferno","iconBasename":"spell_shadow_summoninfernal","iconPath":"/assets/ui/spells/spell_shadow_summoninfernal.png","sourceUnlockLevel":50,"ranks":[{"spellId":1122,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a meteor from the Twisting Nether, causing 50 Fire damage and stunning all enemy targets in the area for 60 sec. An Infernal rises from the crater, under the command of the caster for 60 sec.","castTimeMs":1500,"cooldownMs":1200000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":89,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":22703,"coefficient":0}]}]},{"id":"wow335-warlock-shadowfury","name":"Shadowfury","iconBasename":"spell_shadow_shadowfury","iconPath":"/assets/ui/spells/spell_shadow_shadowfury.png","sourceUnlockLevel":50,"talentNodeId":"talent-1676","ranks":[{"spellId":30283,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Shadowfury is unleashed, causing 407 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":343,"dieSides":65,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30413,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Shadowfury is unleashed, causing 547 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":459,"dieSides":89,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30414,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Shadowfury is unleashed, causing 728 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":612,"dieSides":117,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47846,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Shadowfury is unleashed, causing 978 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":822,"dieSides":157,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47847,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Shadowfury is unleashed, causing 1152 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":968,"dieSides":185,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-summon-felguard","name":"Summon Felguard","iconBasename":"spell_shadow_summonfelguard","iconPath":"/assets/ui/spells/spell_shadow_summonfelguard.png","sourceUnlockLevel":50,"talentNodeId":"talent-1672","ranks":[{"spellId":30146,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a Felguard under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17252,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-atrocity","name":"Atrocity","iconBasename":"spell_shadow_shadesofdarkness","iconPath":"/assets/ui/spells/spell_shadow_shadesofdarkness.png","sourceUnlockLevel":60,"ranks":[{"spellId":47206,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"You devastate the area, causing Corruption (Rank 8) to all targets within 15 yards. In addition, your Corruption spell will do 434 Shadow damage to the target when it finishes its duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":16,"radius":10,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.15600000321865082},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":16,"radius":10,"periodMs":18000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-chaos-bolt","name":"Chaos Bolt","iconBasename":"ability_warlock_chaosbolt","iconPath":"/assets/ui/spells/ability_warlock_chaosbolt.png","sourceUnlockLevel":60,"talentNodeId":"talent-1891","ranks":[{"spellId":50796,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Sends a bolt of chaotic fire at the enemy, dealing 1061 Fire damage. Chaos Bolt cannot be resisted, and pierces through all absorption effects.","castTimeMs":2500,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":837,"dieSides":225,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":59170,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Sends a bolt of chaotic fire at the enemy, dealing 1367 Fire damage. Chaos Bolt cannot be resisted, and pierces through all absorption effects.","castTimeMs":2500,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1077,"dieSides":291,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":59171,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Sends a bolt of chaotic fire at the enemy, dealing 1545 Fire damage. Chaos Bolt cannot be resisted, and pierces through all absorption effects.","castTimeMs":2500,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1217,"dieSides":329,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":59172,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Sends a bolt of chaotic fire at the enemy, dealing 1813 Fire damage. Chaos Bolt cannot be resisted, and pierces through all absorption effects.","castTimeMs":2500,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1429,"dieSides":385,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]}]},{"id":"wow335-warlock-create-soulwell","name":"Create Soulwell","iconBasename":"spell_arcane_portaldarnassus","iconPath":"/assets/ui/spells/spell_arcane_portaldarnassus.png","sourceUnlockLevel":60,"ranks":[{"spellId":29886,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":181621,"triggerSpellId":0,"coefficient":1}]},{"spellId":58889,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":193169,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-curse-of-doom","name":"Curse of Doom","iconBasename":"spell_shadow_auraofdarkness","iconPath":"/assets/ui/spells/spell_shadow_auraofdarkness.png","sourceUnlockLevel":60,"ranks":[{"spellId":603,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Curses the target with impending doom, causing 3200 Shadow damage after 60 sec. If the target yields experience or honor when it dies from this damage, a Doomguard will be summoned. Cannot be cast on players.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":3200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":60000,"miscValue":0,"triggerSpellId":0,"coefficient":2}]},{"spellId":30910,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Curses the target with impending doom, causing 4200 Shadow damage after 60 sec. If the target yields experience or honor when it dies from this damage, a Doomguard will be summoned. Cannot be cast on players.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":60000,"miscValue":0,"triggerSpellId":0,"coefficient":2}]},{"spellId":47867,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Curses the target with impending doom, causing 7300 Shadow damage after 60 sec. If the target yields experience or honor when it dies from this damage, a Doomguard will be summoned. Cannot be cast on players.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":7300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":60000,"miscValue":0,"triggerSpellId":0,"coefficient":2}]}]},{"id":"wow335-warlock-haunt","name":"Haunt","iconBasename":"ability_warlock_haunt","iconPath":"/assets/ui/spells/ability_warlock_haunt.png","sourceUnlockLevel":60,"talentNodeId":"talent-2041","ranks":[{"spellId":48181,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"You send a ghostly soul into the target, dealing 473 Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":405,"dieSides":69,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":59161,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"You send a ghostly soul into the target, dealing 569 Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":487,"dieSides":83,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":59163,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"You send a ghostly soul into the target, dealing 642 Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":550,"dieSides":93,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":59164,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"You send a ghostly soul into the target, dealing 753 Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":645,"dieSides":109,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-ritual-of-doom","name":"Ritual of Doom","iconBasename":"spell_shadow_antimagicshell","iconPath":"/assets/ui/spells/spell_shadow_antimagicshell.png","sourceUnlockLevel":60,"ranks":[{"spellId":18540,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Begins a ritual that sacrifices a random participant's health to summon a doomguard. Requires the caster and 4 additional party members to complete the ritual. In order to participate, all players must right-click the portal and not move until the ritual is complete.","castTimeMs":10000,"cooldownMs":1800000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":177193,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-fel-armor","name":"Fel Armor","iconBasename":"spell_shadow_felarmour","iconPath":"/assets/ui/spells/spell_shadow_felarmour.png","sourceUnlockLevel":62,"ranks":[{"spellId":28176,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Surrounds the caster with fel energy, increasing spell power by 50 plus additional spell power equal to 30% of your Spirit. In addition, you regain 2% of your maximum health every 5 sec. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":174,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":20,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":28189,"rank":2,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Surrounds the caster with fel energy, increasing spell power by 100 plus additional spell power equal to 30% of your Spirit. In addition, you regain 2% of your maximum health every 5 sec. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":174,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":20,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":47892,"rank":3,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Surrounds the caster with fel energy, increasing spell power by 150 plus additional spell power equal to 30% of your Spirit. In addition, you regain 2% of your maximum health every 5 sec. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":174,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":20,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":47893,"rank":4,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Surrounds the caster with fel energy, increasing spell power by 180 plus additional spell power equal to 30% of your Spirit. In addition, you regain 2% of your maximum health every 5 sec. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":174,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":20,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":180,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-incinerate","name":"Incinerate","iconBasename":"spell_fire_burnout","iconPath":"/assets/ui/spells/spell_fire_burnout.png","sourceUnlockLevel":64,"ranks":[{"spellId":29722,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":69,"description":"Deals 467 Fire damage to your target and an additional the listed amount Fire damage if the target is affected by an Immolate spell.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":403,"dieSides":65,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":32231,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Deals 514 Fire damage to your target and an additional the listed amount Fire damage if the target is affected by an Immolate spell.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":444,"dieSides":71,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":47837,"rank":3,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Deals 563 Fire damage to your target and an additional the listed amount Fire damage if the target is affected by an Immolate spell.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":485,"dieSides":79,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":47838,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Deals 676 Fire damage to your target and an additional the listed amount Fire damage if the target is affected by an Immolate spell.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":582,"dieSides":95,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]}]},{"id":"wow335-warlock-soulshatter","name":"Soulshatter","iconBasename":"spell_arcane_arcane01","iconPath":"/assets/ui/spells/spell_arcane_arcane01.png","sourceUnlockLevel":66,"ranks":[{"spellId":29858,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":72,"description":"Reduces threat by 50% for all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":50,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-ritual-of-souls","name":"Ritual of Souls","iconBasename":"spell_shadow_shadesofdarkness","iconPath":"/assets/ui/spells/spell_shadow_shadesofdarkness.png","sourceUnlockLevel":68,"ranks":[{"spellId":29893,"rank":1,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Begins a ritual that creates a Soulwell. Raid members can click the Soulwell to acquire a Master Healthstone. The Soulwell lasts for 60 sec or 25 charges. Requires the caster and 2 additional party members to complete the ritual. In order to participate, all players must right-click the soul portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":181622,"triggerSpellId":0,"coefficient":0}]},{"spellId":58887,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Begins a ritual that creates a Soulwell. Raid members can click the Soulwell to acquire a Fel Healthstone. The Soulwell lasts for 60 sec or 25 charges. Requires the caster and 2 additional party members to complete the ritual. In order to participate, all players must right-click the soul portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":193168,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-seed-of-corruption","name":"Seed of Corruption","iconBasename":"spell_shadow_seedofdestruction","iconPath":"/assets/ui/spells/spell_shadow_seedofdestruction.png","sourceUnlockLevel":70,"ranks":[{"spellId":27243,"rank":1,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1044 total damage or dies, the seed will inflict 174 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":174,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.25},{"index":1,"effectType":6,"auraType":4,"basePoints":1044,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":27285,"rank":1,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over the listed duration. When the target takes the listed amount total damage or dies, the seed will inflict 1290 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1110,"dieSides":181,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":47833,"rank":2,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over the listed duration. When the target takes the listed amount total damage or dies, the seed will inflict 1607 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1383,"dieSides":225,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":47835,"rank":2,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1296 total damage or dies, the seed will inflict 216 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":216,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.25},{"index":1,"effectType":6,"auraType":4,"basePoints":1296,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":47834,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over the listed duration. When the target takes the listed amount total damage or dies, the seed will inflict 1897 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1633,"dieSides":265,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":47836,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1518 total damage or dies, the seed will inflict 253 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":253,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.25},{"index":1,"effectType":6,"auraType":4,"basePoints":1518,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]}]},{"id":"wow335-warlock-shadowflame","name":"Shadowflame","iconBasename":"ability_warlock_shadowflame","iconPath":"/assets/ui/spells/ability_warlock_shadowflame.png","sourceUnlockLevel":75,"ranks":[{"spellId":47897,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":83,"description":"Targets in a cone in front of the caster take 568 Shadow damage and an additional the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":520,"dieSides":49,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10700000077486038}]},{"spellId":61290,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Targets in a cone in front of the caster take 671 Shadow damage and an additional the listed amount Fire damage over the listed duration.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":615,"dieSides":57,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10700000077486038}]}]},{"id":"wow335-warlock-demonic-circle-summon","name":"Demonic Circle: Summon","iconBasename":"spell_shadow_demoniccirclesummon","iconPath":"/assets/ui/spells/spell_shadow_demoniccirclesummon.png","sourceUnlockLevel":80,"ranks":[{"spellId":48018,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"You summon a Demonic Circle at your feet, lasting 360 sec. You can only have one Demonic Circle active at a time.","castTimeMs":500,"cooldownMs":0,"gcdMs":1500,"durationMs":360000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":226,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":191083,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-demonic-circle-teleport","name":"Demonic Circle: Teleport","iconBasename":"spell_shadow_demoniccircleteleport","iconPath":"/assets/ui/spells/spell_shadow_demoniccircleteleport.png","sourceUnlockLevel":80,"ranks":[{"spellId":48020,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Teleports you to your Demonic Circle and removes all snare effects.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":1000,"channelDurationMs":0,"powerType":0,"powerCost":100,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0}]}]}],"druid":[{"id":"wow335-druid-feral-charge","name":"Feral Charge","iconBasename":"ability_hunter_pet_bear","iconPath":"/assets/ui/spells/ability_hunter_pet_bear.png","sourceUnlockLevel":1,"talentNodeId":"talent-804","ranks":[{"spellId":49377,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Teaches Feral Charge (Bear) and Feral Charge (Cat). Feral Charge (Bear) - Causes you to charge an enemy, immobilizing and interrupting any spell being cast for the listed duration. This ability can be used in Bear Form and Dire Bear Form. 15 second cooldown. Feral Charge (Cat) - Causes you to leap behind an enemy, dazing them for the listed duration. 30 second cooldown.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16979,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":49376,"coefficient":0}]}]},{"id":"wow335-druid-healing-touch","name":"Healing Touch","iconBasename":"spell_nature_healingtouch","iconPath":"/assets/ui/spells/spell_nature_healingtouch.png","sourceUnlockLevel":1,"ranks":[{"spellId":5185,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Heals a friendly target for 51.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":37,"dieSides":15,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.23100000619888306}]},{"spellId":5186,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":13,"description":"Heals a friendly target for 112.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":88,"dieSides":25,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5899999737739563}]},{"spellId":5187,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Heals a friendly target for 243.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":195,"dieSides":49,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0420000553131104}]},{"spellId":5188,"rank":4,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals a friendly target for 445.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":363,"dieSides":83,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":5189,"rank":5,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Heals a friendly target for 594.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":490,"dieSides":105,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":6778,"rank":6,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Heals a friendly target for 766.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":636,"dieSides":131,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":8903,"rank":7,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Heals a friendly target for 960.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":802,"dieSides":159,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":9758,"rank":8,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Heals a friendly target for 1427.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1199,"dieSides":229,"pointsPerLevel":4.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":9888,"rank":9,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Heals a friendly target for 1539.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1299,"dieSides":241,"pointsPerLevel":5.099999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":9889,"rank":10,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Heals a friendly target for 1912.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1620,"dieSides":293,"pointsPerLevel":5.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":25297,"rank":11,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 2294.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1944,"dieSides":351,"pointsPerLevel":6.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":26978,"rank":12,"level":62,"sourceLevel":62,"maxScalingLevel":67,"description":"Heals a friendly target for 2392.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2026,"dieSides":367,"pointsPerLevel":6.300000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":26979,"rank":13,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Heals a friendly target for 2739.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2321,"dieSides":419,"pointsPerLevel":7,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":48377,"rank":14,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Heals a friendly target for 3805.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3223,"dieSides":583,"pointsPerLevel":9.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":48378,"rank":15,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Heals a friendly target for 4428.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3750,"dieSides":679,"pointsPerLevel":11.399999618530273,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]}]},{"id":"wow335-druid-mangle","name":"Mangle","iconBasename":"ability_druid_mangle2","iconPath":"/assets/ui/spells/ability_druid_mangle2.png","sourceUnlockLevel":1,"talentNodeId":"talent-1796","ranks":[{"spellId":33917,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Mangle the target, inflicting damage and causing the target to take additional damage from bleed effects for the listed duration. This ability can be used in Cat Form or Dire Bear Form.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":33878,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":33876,"coefficient":0}]}]},{"id":"wow335-druid-mark-of-the-wild","name":"Mark of the Wild","iconBasename":"spell_nature_regeneration","iconPath":"/assets/ui/spells/spell_nature_regeneration.png","sourceUnlockLevel":1,"ranks":[{"spellId":1126,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 25 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":5232,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 65 and all attributes by 2 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0}]},{"spellId":6756,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 105 and all attributes by 4 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0}]},{"spellId":5234,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 150, all attributes by 6 and all resistances by 5 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":8907,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 195, all attributes by 8 and all resistances by 10 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":195,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":9884,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 240, all attributes by 10 and all resistances by 15 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":240,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":9885,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 285, all attributes by 12 and all resistances by 20 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":285,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":26990,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 340, all attributes by 14 and all resistances by 25 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":340,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":48469,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 750, all attributes by 37 and all resistances by 54 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-nature-s-swiftness","name":"Nature's Swiftness","iconBasename":"spell_nature_ravenform","iconPath":"/assets/ui/spells/spell_nature_ravenform.png","sourceUnlockLevel":1,"talentNodeId":"talent-831","ranks":[{"spellId":17116,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your next Nature spell with a base casting time less than 10 sec. becomes an instant cast spell.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-primal-fury","name":"Primal Fury","iconBasename":"ability_racial_cannibalize","iconPath":"/assets/ui/spells/ability_racial_cannibalize.png","sourceUnlockLevel":1,"talentNodeId":"talent-801","ranks":[{"spellId":37116,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Gives you a the listed amount% chance to gain an additional the listed amount Rage anytime you get a critical strike while in Bear and Dire Bear Form and your critical strikes from Cat Form abilities that add combo points have a the listed amount% chance to add an additional combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16958,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16952,"coefficient":0}]},{"spellId":37117,"rank":2,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Gives you a the listed amount% chance to gain an additional the listed amount Rage anytime you get a critical strike while in Bear and Dire Bear Form and your critical strikes from Cat Form abilities that add combo points have a the listed amount% chance to add an additional combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16961,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16954,"coefficient":0}]}]},{"id":"wow335-druid-swiftmend","name":"Swiftmend","iconBasename":"inv_relics_idolofrejuvenation","iconPath":"/assets/ui/spells/inv_relics_idolofrejuvenation.png","sourceUnlockLevel":1,"talentNodeId":"talent-844","ranks":[{"spellId":18562,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Consumes a Rejuvenation or Regrowth effect on a friendly target to instantly heal them an amount equal to 12 sec. of Rejuvenation or 18 sec. of Regrowth.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-tree-of-life","name":"Tree of Life","iconBasename":"ability_druid_treeoflife","iconPath":"/assets/ui/spells/ability_druid_treeoflife.png","sourceUnlockLevel":1,"talentNodeId":"talent-1791","ranks":[{"spellId":65139,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Reduces the mana cost of your healing over time spells by 1% and grants the ability to shapeshift into the Tree of Life. While in this form you increase healing received by 1% for all party and raid members within the listed amount yards, and you can only cast Restoration spells in addition to Innervate, Barkskin, Nature's Grasp and Thorns spells. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":33891,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":5420,"coefficient":0}]},{"spellId":33891,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Shapeshift into the Tree of Life. While in this form you increase healing received by 0% for all party and raid members within the listed amount yards, and you can only cast Restoration spells in addition to Innervate, Barkskin, Nature's Grasp and Thorns spells. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-wrath","name":"Wrath","iconBasename":"spell_nature_abolishmagic","iconPath":"/assets/ui/spells/spell_nature_abolishmagic.png","sourceUnlockLevel":1,"ranks":[{"spellId":5176,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Causes 19 Nature damage to the target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":17,"dieSides":3,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.12300000339746475}]},{"spellId":5177,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":12,"description":"Causes 36 Nature damage to the target.","castTimeMs":1700,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":32,"dieSides":5,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.23100000619888306}]},{"spellId":5178,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":20,"description":"Causes 57 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":49,"dieSides":9,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4429999887943268}]},{"spellId":5179,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":28,"description":"Causes 78 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":68,"dieSides":11,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":5180,"rank":5,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"Causes 148 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":130,"dieSides":19,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":6780,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":44,"description":"Causes 191 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":169,"dieSides":23,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":8905,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":52,"description":"Causes 241 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":215,"dieSides":27,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":9912,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":60,"description":"Causes 344 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":306,"dieSides":39,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":26984,"rank":9,"level":61,"sourceLevel":61,"maxScalingLevel":67,"description":"Causes 447 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":397,"dieSides":51,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":26985,"rank":10,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Causes 485 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":431,"dieSides":55,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":48459,"rank":11,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Causes 568 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":504,"dieSides":65,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":48461,"rank":12,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Causes 623 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":553,"dieSides":71,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]}]},{"id":"wow335-druid-moonfire","name":"Moonfire","iconBasename":"spell_nature_starfall","iconPath":"/assets/ui/spells/spell_nature_starfall.png","sourceUnlockLevel":4,"ranks":[{"spellId":8921,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Burns the enemy for 9 Arcane damage and then an additional the listed amount Arcane damage over 9 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.052000001072883606},{"index":1,"effectType":2,"auraType":0,"basePoints":7,"dieSides":3,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.05999999865889549}]},{"spellId":8924,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Burns the enemy for 17 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.08100000023841858},{"index":1,"effectType":2,"auraType":0,"basePoints":13,"dieSides":5,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09399999678134918}]},{"spellId":8925,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Burns the enemy for 31 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11100000143051147},{"index":1,"effectType":2,"auraType":0,"basePoints":25,"dieSides":7,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.12800000607967377}]},{"spellId":8926,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Burns the enemy for 48 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":40,"dieSides":9,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":8927,"rank":5,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Burns the enemy for 73 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":61,"dieSides":13,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":8928,"rank":6,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Burns the enemy for 97 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":81,"dieSides":17,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":8929,"rank":7,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Burns the enemy for 125 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":53,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":105,"dieSides":21,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":9833,"rank":8,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Burns the enemy for 154 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":66,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":130,"dieSides":25,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":9834,"rank":9,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Burns the enemy for 185 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":157,"dieSides":29,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":9835,"rank":10,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Burns the enemy for 221 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":96,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":189,"dieSides":33,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":26987,"rank":11,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Burns the enemy for 258 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":111,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":220,"dieSides":39,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":26988,"rank":12,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Burns the enemy for 357 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":305,"dieSides":53,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48462,"rank":13,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Burns the enemy for 407 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":171,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":347,"dieSides":61,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48463,"rank":14,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Burns the enemy for 476 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":406,"dieSides":71,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]}]},{"id":"wow335-druid-rejuvenation","name":"Rejuvenation","iconBasename":"spell_nature_rejuvenation","iconPath":"/assets/ui/spells/spell_nature_rejuvenation.png","sourceUnlockLevel":4,"ranks":[{"spellId":774,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":1058,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.23499999940395355},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":1430,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.3199999928474426},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":2090,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":2091,"rank":5,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":61,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":3627,"rank":6,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":76,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":8910,"rank":7,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":97,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":9839,"rank":8,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":122,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":9840,"rank":9,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":152,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":9841,"rank":10,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":189,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":25299,"rank":11,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":222,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":26981,"rank":12,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":233,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":26982,"rank":13,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":265,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":48440,"rank":14,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":298,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":48441,"rank":15,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":338,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-thorns","name":"Thorns","iconBasename":"spell_nature_thorns","iconPath":"/assets/ui/spells/spell_nature_thorns.png","sourceUnlockLevel":6,"ranks":[{"spellId":467,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 3 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":782,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 6 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1075,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 9 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8914,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 12 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9756,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 15 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9910,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 18 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26992,"rank":7,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 25 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53307,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 73 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":73,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-entangling-roots","name":"Entangling Roots","iconBasename":"spell_nature_stranglevines","iconPath":"/assets/ui/spells/spell_nature_stranglevines.png","sourceUnlockLevel":8,"ranks":[{"spellId":339,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 12 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.054999999701976776}]},{"spellId":1062,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 15 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09300000220537186}]},{"spellId":5195,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 18 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":5196,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 21 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":9852,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 24 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":9853,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 27 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":27000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":26989,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":77,"description":"Roots the target in place and causes the listed amount Nature damage over 27 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":27000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":39,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":53308,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":87,"description":"Roots the target in place and causes the listed amount Nature damage over 27 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":27000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":47,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]}]},{"id":"wow335-druid-bear-form","name":"Bear Form","iconBasename":"ability_racial_bearform","iconPath":"/assets/ui/spells/ability_racial_bearform.png","sourceUnlockLevel":10,"ranks":[{"spellId":5487,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":40,"description":"Shapeshift into bear form, increasing melee attack power by the listed amount, armor contribution from cloth and leather items by 0%, and Stamina by 0%. Also protects the caster from Polymorph effects and allows the use of various bear abilities. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-demoralizing-roar","name":"Demoralizing Roar","iconBasename":"ability_druid_demoralizingroar","iconPath":"/assets/ui/spells/ability_druid_demoralizingroar.png","sourceUnlockLevel":10,"ranks":[{"spellId":99,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":20,"description":"The druid roars, decreasing nearby enemies' melee attack power by 31. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-31,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1735,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":30,"description":"The druid roars, decreasing nearby enemies' melee attack power by 51. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-51,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9490,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":42,"description":"The druid roars, decreasing nearby enemies' melee attack power by 68. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-68,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9747,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":52,"description":"The druid roars, decreasing nearby enemies' melee attack power by 103. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-103,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9898,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":62,"description":"The druid roars, decreasing nearby enemies' melee attack power by 138. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-138,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26998,"rank":6,"level":62,"sourceLevel":62,"maxScalingLevel":70,"description":"The druid roars, decreasing nearby enemies' melee attack power by 220. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-220,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48559,"rank":7,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"The druid roars, decreasing nearby enemies' melee attack power by 299. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-299,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48560,"rank":8,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"The druid roars, decreasing nearby enemies' melee attack power by 408. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-408,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-growl","name":"Growl","iconBasename":"ability_physical_taunt","iconPath":"/assets/ui/spells/ability_physical_taunt.png","sourceUnlockLevel":10,"ranks":[{"spellId":6795,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Taunts the target to attack you, but has no effect if the target is already attacking you.","castTimeMs":0,"cooldownMs":8000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":114,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":11,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-maul","name":"Maul","iconBasename":"ability_druid_maul","iconPath":"/assets/ui/spells/ability_druid_maul.png","sourceUnlockLevel":10,"ranks":[{"spellId":6807,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 18 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6808,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 27 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6809,"rank":3,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 37 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8972,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 64 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9745,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 103 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":103,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9880,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 145 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":145,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9881,"rank":7,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 192 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":192,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":26996,"rank":8,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 290 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48479,"rank":9,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 472 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":472,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48480,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 578 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":578,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-nature-s-grasp","name":"Nature's Grasp","iconBasename":"spell_nature_natureswrath","iconPath":"/assets/ui/spells/spell_nature_natureswrath.png","sourceUnlockLevel":10,"ranks":[{"spellId":16689,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 1). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19975,"coefficient":1}]},{"spellId":16810,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 2). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19974,"coefficient":1}]},{"spellId":16811,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 3). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19973,"coefficient":1}]},{"spellId":16812,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 4). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19972,"coefficient":1}]},{"spellId":16813,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 5). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19971,"coefficient":1}]},{"spellId":17329,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 6). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19970,"coefficient":1}]},{"spellId":27009,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":77,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 7). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":27010,"coefficient":1}]},{"spellId":53312,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":87,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 8). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":53313,"coefficient":1}]}]},{"id":"wow335-druid-teleport-moonglade","name":"Teleport: Moonglade","iconBasename":"spell_arcane_teleportmoonglade","iconPath":"/assets/ui/spells/spell_arcane_teleportmoonglade.png","sourceUnlockLevel":10,"ranks":[{"spellId":18960,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Teleports the caster to the Moonglade.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":120,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-enrage","name":"Enrage","iconBasename":"ability_druid_enrage","iconPath":"/assets/ui/spells/ability_druid_enrage.png","sourceUnlockLevel":12,"ranks":[{"spellId":5229,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Generates the listed amount rage, and then generates an additional the listed amount rage over 10 sec, but reduces base armor by 27% in Bear Form and 16% in Dire Bear Form.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":24,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":94,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-regrowth","name":"Regrowth","iconBasename":"spell_nature_resistnature","iconPath":"/assets/ui/spells/spell_nature_resistnature.png","sourceUnlockLevel":12,"ranks":[{"spellId":8936,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":17,"description":"Heals a friendly target for 98 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":84,"dieSides":15,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":8,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.13199999928474426}]},{"spellId":8938,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":23,"description":"Heals a friendly target for 188 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":164,"dieSides":25,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4959999918937683},{"index":1,"effectType":6,"auraType":8,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.17499999701976776}]},{"spellId":8939,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Heals a friendly target for 274 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":240,"dieSides":35,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":8940,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Heals a friendly target for 360 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":318,"dieSides":43,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":49,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":8941,"rank":5,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Heals a friendly target for 457 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":405,"dieSides":53,"pointsPerLevel":4.099999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":61,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":9750,"rank":6,"level":42,"sourceLevel":42,"maxScalingLevel":47,"description":"Heals a friendly target for 575 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":511,"dieSides":65,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":78,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":9856,"rank":7,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Heals a friendly target for 724 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":646,"dieSides":79,"pointsPerLevel":5.300000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":9857,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Heals a friendly target for 905 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":809,"dieSides":97,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":9858,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 1119 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1003,"dieSides":117,"pointsPerLevel":6.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":152,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":26980,"rank":10,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Heals a friendly target for 1355 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1215,"dieSides":141,"pointsPerLevel":7.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":182,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":48442,"rank":11,"level":71,"sourceLevel":71,"maxScalingLevel":76,"description":"Heals a friendly target for 1908 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1710,"dieSides":199,"pointsPerLevel":10.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":256,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":48443,"rank":12,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"Heals a friendly target for 2494 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2234,"dieSides":261,"pointsPerLevel":7.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":335,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]}]},{"id":"wow335-druid-bash","name":"Bash","iconBasename":"ability_druid_bash","iconPath":"/assets/ui/spells/ability_druid_bash.png","sourceUnlockLevel":14,"ranks":[{"spellId":5211,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Stuns the target for 2 sec and interrupts non-player spellcasting for 2 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":2000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6798,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Stuns the target for 3 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8983,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Stuns the target for 4 sec and interrupts non-player spellcasting for 4 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-cure-poison","name":"Cure Poison","iconBasename":"spell_nature_nullifypoison","iconPath":"/assets/ui/spells/spell_nature_nullifypoison.png","sourceUnlockLevel":14,"ranks":[{"spellId":8946,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Cures 1 poison the listed amount on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-aquatic-form","name":"Aquatic Form","iconBasename":"ability_druid_aquaticform","iconPath":"/assets/ui/spells/ability_druid_aquaticform.png","sourceUnlockLevel":16,"ranks":[{"spellId":1066,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Shapeshift into aquatic form, increasing swim speed by 0% and allowing the druid to breathe underwater. Also protects the caster from Polymorph effects. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-swipe-bear","name":"Swipe (Bear)","iconBasename":"inv_misc_monsterclaw_03","iconPath":"/assets/ui/spells/inv_misc_monsterclaw_03.png","sourceUnlockLevel":16,"ranks":[{"spellId":779,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 9 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":780,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 13 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":769,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 19 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":19,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9754,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 37 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9908,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 54 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":26997,"rank":6,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 76 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":76,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48561,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 95 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":95,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48562,"rank":8,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 108 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":108,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-travel-form","name":"Travel Form","iconBasename":"ability_druid_travelform","iconPath":"/assets/ui/spells/ability_druid_travelform.png","sourceUnlockLevel":16,"ranks":[{"spellId":783,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Shapeshift into travel form, increasing movement speed by 0%. Also protects the caster from Polymorph effects. Only useable outdoors. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-faerie-fire","name":"Faerie Fire","iconBasename":"spell_nature_faeriefire","iconPath":"/assets/ui/spells/spell_nature_faeriefire.png","sourceUnlockLevel":18,"ranks":[{"spellId":770,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Decrease the armor of the target by 5% for 300 sec. While affected, the target cannot stealth or turn invisible.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":186,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-faerie-fire-feral","name":"Faerie Fire (Feral)","iconBasename":"spell_nature_faeriefire","iconPath":"/assets/ui/spells/spell_nature_faeriefire.png","sourceUnlockLevel":18,"ranks":[{"spellId":16857,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Decrease the armor of the target by 5% for 300 sec. While affected, the target cannot stealth or turn invisible. Deals the listed amountthe listed amount damage and additional threat when used in Bear Form or Dire Bear Form.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":186,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-hibernate","name":"Hibernate","iconBasename":"spell_nature_sleep","iconPath":"/assets/ui/spells/spell_nature_sleep.png","sourceUnlockLevel":18,"ranks":[{"spellId":2637,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Forces the enemy target to sleep for up to 20 sec. Any damage will awaken the target. Only one target can be forced to hibernate at a time. Only works on Beasts and Dragonkin.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18657,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Forces the enemy target to sleep for up to 30 sec. Any damage will awaken the target. Only one target can be forced to hibernate at a time. Only works on Beasts and Dragonkin.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18658,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Forces the enemy target to sleep for up to 40 sec. Any damage will awaken the target. Only one target can be forced to hibernate at a time. Only works on Beasts and Dragonkin.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-cat-form","name":"Cat Form","iconBasename":"ability_druid_catform","iconPath":"/assets/ui/spells/ability_druid_catform.png","sourceUnlockLevel":20,"ranks":[{"spellId":768,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Shapeshift into cat form, increasing melee attack power by 0 plus Agility. Also protects the caster from Polymorph effects and allows the use of various cat abilities. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-claw","name":"Claw","iconBasename":"ability_druid_rake","iconPath":"/assets/ui/spells/ability_druid_rake.png","sourceUnlockLevel":20,"ranks":[{"spellId":1082,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Claw the enemy, causing 27 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3029,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Claw the enemy, causing 39 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":39,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5201,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Claw the enemy, causing 57 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":57,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9849,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Claw the enemy, causing 88 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":88,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9850,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Claw the enemy, causing 115 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27000,"rank":6,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Claw the enemy, causing 190 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":190,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48569,"rank":7,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Claw the enemy, causing 300 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48570,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Claw the enemy, causing 370 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":370,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-insect-swarm","name":"Insect Swarm","iconBasename":"spell_nature_insectswarm","iconPath":"/assets/ui/spells/spell_nature_insectswarm.png","sourceUnlockLevel":20,"talentNodeId":"talent-788","ranks":[{"spellId":5570,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"The enemy target is swarmed by insects, decreasing their chance to hit by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24974,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":39,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24975,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":62,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24976,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24977,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":124,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27013,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":79,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":172,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48468,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":89,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":215,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-prowl","name":"Prowl","iconBasename":"ability_ambush","iconPath":"/assets/ui/spells/ability_ambush.png","sourceUnlockLevel":20,"ranks":[{"spellId":5215,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":39,"description":"Allows the Druid to prowl around, but reduces your movement speed by 40%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":16,"basePoints":100,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6783,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":59,"description":"Allows the Druid to prowl around, but reduces your movement speed by 35%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":16,"basePoints":200,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9913,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Allows the Druid to prowl around, but reduces your movement speed by 30%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":16,"basePoints":300,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-rebirth","name":"Rebirth","iconBasename":"spell_nature_reincarnation","iconPath":"/assets/ui/spells/spell_nature_reincarnation.png","sourceUnlockLevel":20,"ranks":[{"spellId":20484,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 400 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":700,"triggerSpellId":0,"coefficient":0}]},{"spellId":20739,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 750 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1200,"triggerSpellId":0,"coefficient":0}]},{"spellId":20742,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 1100 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1700,"triggerSpellId":0,"coefficient":0}]},{"spellId":20747,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 1600 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1600,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2200,"triggerSpellId":0,"coefficient":0}]},{"spellId":20748,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 2200 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":2200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2800,"triggerSpellId":0,"coefficient":0}]},{"spellId":26994,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 3200 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":3200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3200,"triggerSpellId":0,"coefficient":0}]},{"spellId":48477,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 6400 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":6400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4700,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-rip","name":"Rip","iconBasename":"ability_ghoulfrenzy","iconPath":"/assets/ui/spells/ability_ghoulfrenzy.png","sourceUnlockLevel":20,"ranks":[{"spellId":1079,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9492,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9493,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9752,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9894,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9896,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27008,"rank":7,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49799,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49800,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":36,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-starfire","name":"Starfire","iconBasename":"spell_arcane_starfire","iconPath":"/assets/ui/spells/spell_arcane_starfire.png","sourceUnlockLevel":20,"ranks":[{"spellId":2912,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Causes 149 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":121,"dieSides":29,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8949,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Causes 231 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":189,"dieSides":43,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8950,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":40,"description":"Causes 328 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":272,"dieSides":57,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8951,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Causes 442 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":370,"dieSides":73,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9875,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Causes 575 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":485,"dieSides":91,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9876,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"Causes 725 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":615,"dieSides":111,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25298,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Causes 817 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":693,"dieSides":125,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":26986,"rank":8,"level":67,"sourceLevel":67,"maxScalingLevel":71,"description":"Causes 964 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":818,"dieSides":147,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48464,"rank":9,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Causes 1006 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":854,"dieSides":153,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48465,"rank":10,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Causes 1212 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1028,"dieSides":185,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-survival-instincts","name":"Survival Instincts","iconBasename":"ability_druid_tigersroar","iconPath":"/assets/ui/spells/ability_druid_tigersroar.png","sourceUnlockLevel":20,"talentNodeId":"talent-1162","ranks":[{"spellId":61336,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"When activated, this ability temporarily grants you 30% of your maximum health for 20 sec while in Bear Form, Cat Form, or Dire Bear Form. After the effect expires, the health is lost.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-shred","name":"Shred","iconBasename":"spell_shadow_vampiricaura","iconPath":"/assets/ui/spells/spell_shadow_vampiricaura.png","sourceUnlockLevel":22,"ranks":[{"spellId":5221,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 54 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6800,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 72 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8992,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 99 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":44,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9829,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 144 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9830,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 180 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27001,"rank":6,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 236 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27002,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus the listed amount to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":180,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48571,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus the listed amount to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":251,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48572,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus the listed amount to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":296,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-soothe-animal","name":"Soothe Animal","iconBasename":"ability_hunter_beastsoothe","iconPath":"/assets/ui/spells/ability_hunter_beastsoothe.png","sourceUnlockLevel":22,"ranks":[{"spellId":2908,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Soothes the target beast, reducing the range at which it will attack you by 10 yards. Only affects Beast and Dragonkin targets level 40 or lower. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8955,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Soothes the target beast, reducing the range at which it will attack you by 10 yards. Only affects Beast and Dragonkin targets level 55 or lower. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9901,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Soothes the target beast, reducing the range at which it will attack you by 10 yards. Only affects Beast and Dragonkin targets level 70 or lower. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26995,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Soothes the target beast, reducing the range at which it will attack you by 10 yards. Only affects Beast and Dragonkin targets level 85 or lower. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-rake","name":"Rake","iconBasename":"ability_druid_disembowel","iconPath":"/assets/ui/spells/ability_druid_disembowel.png","sourceUnlockLevel":24,"ranks":[{"spellId":1822,"rank":1,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1823,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":26,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1824,"rank":3,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":46,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":69,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9904,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":99,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27003,"rank":5,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":138,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48573,"rank":6,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":139,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":297,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-remove-curse","name":"Remove Curse","iconBasename":"spell_holy_removecurse","iconPath":"/assets/ui/spells/spell_holy_removecurse.png","sourceUnlockLevel":24,"ranks":[{"spellId":2782,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Dispels 1 Curse from a friendly target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-tiger-s-fury","name":"Tiger's Fury","iconBasename":"ability_mount_jungletiger","iconPath":"/assets/ui/spells/ability_mount_jungletiger.png","sourceUnlockLevel":24,"ranks":[{"spellId":5217,"rank":1,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Increases damage done by 10 for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":13,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":6793,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Increases damage done by 20 for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":13,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":9845,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Increases damage done by 30 for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":13,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":9846,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Increases damage done by 40 for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":13,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-abolish-poison","name":"Abolish Poison","iconBasename":"spell_nature_nullifypoison_02","iconPath":"/assets/ui/spells/spell_nature_nullifypoison_02.png","sourceUnlockLevel":26,"ranks":[{"spellId":2893,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Attempts to cure 1 poison effect on the target, and 0 more poison effect every 3 seconds for 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":3137,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-dash","name":"Dash","iconBasename":"ability_druid_dash","iconPath":"/assets/ui/spells/ability_druid_dash.png","sourceUnlockLevel":26,"ranks":[{"spellId":1850,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Increases movement speed by 50% while in Cat Form for 15 sec. Does not break prowling.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9821,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Increases movement speed by 60% while in Cat Form for 15 sec. Does not break prowling.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33357,"rank":3,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Increases movement speed by 70% while in Cat Form for 15 sec. Does not break prowling.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-challenging-roar","name":"Challenging Roar","iconBasename":"ability_druid_challangingroar","iconPath":"/assets/ui/spells/ability_druid_challangingroar.png","sourceUnlockLevel":28,"ranks":[{"spellId":5209,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Forces all nearby enemies within the listed amount yards to focus attacks on you for 6 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":11,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-cower","name":"Cower","iconBasename":"ability_druid_cower","iconPath":"/assets/ui/spells/ability_druid_cower.png","sourceUnlockLevel":28,"ranks":[{"spellId":8998,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":38,"description":"Cower, causing no damage but lowering your threat a small amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-240,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9000,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":50,"description":"Cower, causing no damage but lowering your threat a medium amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-390,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9892,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":62,"description":"Cower, causing no damage but lowering your threat a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-600,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":31709,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Cower, causing no damage but lowering your threat a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-800,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27004,"rank":5,"level":69,"sourceLevel":69,"maxScalingLevel":75,"description":"Cower, causing no damage but lowering your threat a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-1170,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48575,"rank":6,"level":76,"sourceLevel":76,"maxScalingLevel":82,"description":"Cower, causing no damage but lowering your threat a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-3474,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-tranquility","name":"Tranquility","iconBasename":"spell_nature_tranquility","iconPath":"/assets/ui/spells/spell_nature_tranquility.png","sourceUnlockLevel":30,"ranks":[{"spellId":740,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"Heals all nearby group members for 351 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":351,"dieSides":1,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44203,"coefficient":0}]},{"spellId":8918,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Heals all nearby group members for 515 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":515,"dieSides":1,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44205,"coefficient":0}]},{"spellId":9862,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Heals all nearby group members for 765 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":765,"dieSides":1,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44206,"coefficient":0}]},{"spellId":9863,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Heals all nearby group members for 1097 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":1097,"dieSides":1,"pointsPerLevel":3.700000047683716,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44207,"coefficient":0}]},{"spellId":26983,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals all nearby group members for 1518 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":70,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":1518,"dieSides":1,"pointsPerLevel":4.5,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44208,"coefficient":0}]},{"spellId":48446,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals all nearby group members for 2598 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":70,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":2598,"dieSides":1,"pointsPerLevel":7.699999809265137,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":48444,"coefficient":0}]},{"spellId":48447,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals all nearby group members for 3035 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":70,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":3035,"dieSides":1,"pointsPerLevel":9,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":48445,"coefficient":0}]}]},{"id":"wow335-druid-ferocious-bite","name":"Ferocious Bite","iconBasename":"ability_druid_ferociousbite","iconPath":"/assets/ui/spells/ability_druid_ferociousbite.png","sourceUnlockLevel":32,"ranks":[{"spellId":22568,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":14,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22827,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":20,"dieSides":25,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22828,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":30,"dieSides":41,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22829,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":51,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":31018,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":52,"dieSides":61,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24248,"rank":6,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":57,"dieSides":67,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48576,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":98,"dieSides":113,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48577,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":120,"dieSides":141,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-ravage","name":"Ravage","iconBasename":"ability_druid_ravage","iconPath":"/assets/ui/spells/ability_druid_ravage.png","sourceUnlockLevel":32,"ranks":[{"spellId":6785,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6787,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":62,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9866,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":78,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9867,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27005,"rank":5,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":147,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48578,"rank":6,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":365,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48579,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":460,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-track-humanoids","name":"Track Humanoids","iconBasename":"ability_tracking","iconPath":"/assets/ui/spells/ability_tracking.png","sourceUnlockLevel":32,"ranks":[{"spellId":5225,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Shows the location of all nearby humanoids on the minimap. Only one type of thing can be tracked at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-frenzied-regeneration","name":"Frenzied Regeneration","iconBasename":"ability_bullrush","iconPath":"/assets/ui/spells/ability_bullrush.png","sourceUnlockLevel":36,"ranks":[{"spellId":22842,"rank":1,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Converts up to 10 rage per second into health for 10 sec. Each point of rage is converted into the listed amount% of max health.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":226,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-pounce","name":"Pounce","iconBasename":"ability_druid_supriseattack","iconPath":"/assets/ui/spells/ability_druid_supriseattack.png","sourceUnlockLevel":36,"ranks":[{"spellId":9005,"rank":1,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 3 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":9007,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9823,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 3 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":9824,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9827,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 3 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":9826,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27006,"rank":4,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 3 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":27007,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49803,"rank":5,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 3 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":49804,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-dire-bear-form","name":"Dire Bear Form","iconBasename":"ability_racial_bearform","iconPath":"/assets/ui/spells/ability_racial_bearform.png","sourceUnlockLevel":40,"ranks":[{"spellId":9634,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":100,"description":"Shapeshift into dire bear form, increasing melee attack power by the listed amount, armor contribution from cloth and leather items by 0%, and Stamina by 0%. Also protects the caster from Polymorph effects and allows the use of various bear abilities. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-hurricane","name":"Hurricane","iconBasename":"spell_nature_cyclone","iconPath":"/assets/ui/spells/spell_nature_cyclone.png","sourceUnlockLevel":40,"ranks":[{"spellId":16914,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Creates a violent storm in the target area causing 0 Nature damage to enemies every 1 sec, and increasing the time between attacks of enemies by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":0,"powerCost":0,"powerCostPercentage":91,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":33,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42231,"coefficient":0}]},{"spellId":42231,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Creates a violent storm in the target area causing 100 Nature damage to enemies every the listed interval sec, and increasing the time between attacks of enemies by the listed amount%. Lasts the listed duration. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]},{"spellId":17401,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Creates a violent storm in the target area causing 0 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":0,"powerCost":0,"powerCostPercentage":91,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":33,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42232,"coefficient":0}]},{"spellId":42232,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Creates a violent storm in the target area causing 142 Nature damage to enemies every the listed interval sec, and increasing the time between attacks by the listed amount%. Lasts the listed duration. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":142,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]},{"spellId":17402,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Creates a violent storm in the target area causing 0 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":0,"powerCost":0,"powerCostPercentage":91,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":33,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42233,"coefficient":0}]},{"spellId":42233,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Creates a violent storm in the target area causing 190 Nature damage to enemies every the listed interval sec, and increasing the time between attacks by the listed amount%. Lasts the listed duration. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":190,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]},{"spellId":27012,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Creates a violent storm in the target area causing 0 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":0,"powerCost":0,"powerCostPercentage":81,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":33,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42230,"coefficient":0}]},{"spellId":42230,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Creates a violent storm in the target area causing 303 Nature damage to enemies every the listed interval sec, and increasing the time between attacks by the listed amount%. Lasts the listed duration. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":303,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]},{"spellId":48466,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":86,"description":"Creates a violent storm in the target area causing 451 Nature damage to enemies every the listed interval sec, and increasing the time between attacks by the listed amount%. Lasts the listed duration. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":451,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]}]},{"id":"wow335-druid-innervate","name":"Innervate","iconBasename":"spell_nature_lightning","iconPath":"/assets/ui/spells/spell_nature_lightning.png","sourceUnlockLevel":40,"ranks":[{"spellId":29166,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Causes the target to regenerate mana equal to 225% of the casting Druid's base mana pool over 10 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":24,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-moonkin-form","name":"Moonkin Form","iconBasename":"spell_nature_forceofnature","iconPath":"/assets/ui/spells/spell_nature_forceofnature.png","sourceUnlockLevel":40,"talentNodeId":"talent-793","ranks":[{"spellId":24858,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Shapeshift into Moonkin Form. While in this form the armor contribution from items is increased by 0% and all party and raid members within the listed amount yards have their spell critical chance increased by 0%. Single target spell critical strikes in this form have a chance to instantly regenerate 0% of your total mana. The Moonkin can only cast Balance and Remove Curse spells while shapeshifted. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":24907,"coefficient":1}]}]},{"id":"wow335-druid-barkskin","name":"Barkskin","iconBasename":"spell_nature_stoneclawtotem","iconPath":"/assets/ui/spells/spell_nature_stoneclawtotem.png","sourceUnlockLevel":44,"ranks":[{"spellId":22812,"rank":0,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"The druid's skin becomes as tough as bark. All damage taken is reduced by 20%. While protected, damaging attacks will not cause spellcasting delays. This spell is usable while stunned, frozen, incapacitated, feared or asleep. Useable in all forms. Lasts 12 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":149,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50411,"coefficient":0}]}]},{"id":"wow335-druid-force-of-nature","name":"Force of Nature","iconBasename":"ability_druid_forceofnature","iconPath":"/assets/ui/spells/ability_druid_forceofnature.png","sourceUnlockLevel":50,"talentNodeId":"talent-1787","ranks":[{"spellId":33831,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons 3 treants to attack enemy targets for 30 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":8,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1964,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":226,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":2,"periodMs":200,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-gift-of-the-wild","name":"Gift of the Wild","iconBasename":"spell_nature_giftofthewild","iconPath":"/assets/ui/spells/spell_nature_giftofthewild.png","sourceUnlockLevel":50,"ranks":[{"spellId":21849,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Gives the Gift of the Wild to all party and raid members, increasing armor by 240, all attributes by 10 and all resistances by 15 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":240,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":21850,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives the Gift of the Wild to all party and raid members, increasing armor by 285, all attributes by 12 and all resistances by 20 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":285,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":26991,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Gives the Gift of the Wild to all party and raid members, increasing armor by 340, all attributes by 14 and all resistances by 25 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":340,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":48470,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Gives the Gift of the Wild to all party and raid members, increasing armor by 750, all attributes by 37 and all resistances by 54 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-mangle-bear","name":"Mangle (Bear)","iconBasename":"ability_druid_mangle2","iconPath":"/assets/ui/spells/ability_druid_mangle2.png","sourceUnlockLevel":50,"ranks":[{"spellId":33878,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33986,"rank":2,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33987,"rank":3,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":135,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48563,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":219,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48564,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":260,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-mangle-cat","name":"Mangle (Cat)","iconBasename":"ability_druid_mangle2","iconPath":"/assets/ui/spells/ability_druid_mangle2.png","sourceUnlockLevel":50,"ranks":[{"spellId":33876,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 99 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":99,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33982,"rank":2,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 128 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":128,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33983,"rank":3,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 165 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48565,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 239 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":239,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48566,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 283 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":283,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-typhoon","name":"Typhoon","iconBasename":"ability_druid_typhoon","iconPath":"/assets/ui/spells/ability_druid_typhoon.png","sourceUnlockLevel":50,"talentNodeId":"talent-1923","ranks":[{"spellId":50516,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"You summon a violent Typhoon that does 400 Nature damage when in contact with hostile targets, knocking them back and dazing them for the listed duration.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61391,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61391,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"You summon a violent Typhoon that does 400 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53223,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"You summon a violent Typhoon that does 550 Nature damage when in contact with hostile targets, knocking them back and dazing them for the listed duration.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61390,"coefficient":0}]},{"spellId":61390,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"You summon a violent Typhoon that does 550 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":550,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53225,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"You summon a violent Typhoon that does 735 Nature damage when in contact with hostile targets, knocking them back and dazing them for the listed duration.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":735,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61388,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61388,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"You summon a violent Typhoon that does 735 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":735,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53226,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"You summon a violent Typhoon that does 1010 Nature damage when in contact with hostile targets, knocking them back and dazing them for the listed duration.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1010,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61387,"coefficient":0}]},{"spellId":61387,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"You summon a violent Typhoon that does 1010 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":1010,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53227,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You summon a violent Typhoon that does 1190 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":1190,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61384,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You summon a violent Typhoon that does 1190 Nature damage when in contact with hostile targets, knocking them back and dazing them for the listed duration.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1190,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":53227,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-berserk","name":"Berserk","iconBasename":"ability_druid_berserk","iconPath":"/assets/ui/spells/ability_druid_berserk.png","sourceUnlockLevel":60,"talentNodeId":"talent-1927","ranks":[{"spellId":50334,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"When activated, this ability causes your Mangle (Bear) ability to hit up to 50 targets and have no cooldown, and reduces the energy cost of all your Cat Form abilities by 50%. Lasts 15 sec. You cannot use Tiger's Fury while Berserk is active. Clears the effect of Fear and makes you immune to Fear for the duration.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":107,"basePoints":-6000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-flight-form","name":"Flight Form","iconBasename":"ability_druid_flightform","iconPath":"/assets/ui/spells/ability_druid_flightform.png","sourceUnlockLevel":60,"ranks":[{"spellId":33943,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Shapeshift into flight form, increasing movement speed by 0% and allowing you to fly. Cannot use in combat. Can only use this form in Outland or Northrend. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":29,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":201,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-starfall","name":"Starfall","iconBasename":"ability_druid_starfall","iconPath":"/assets/ui/spells/ability_druid_starfall.png","sourceUnlockLevel":60,"talentNodeId":"talent-1926","ranks":[{"spellId":48505,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"You summon a flurry of stars from the sky on all targets within the listed amount yards of the caster, each dealing 0 Arcane damage. Also causes 0 Arcane damage to all other enemies within the listed amount yards of the enemy target. Maximum 20 stars. Lasts 10 sec. Shapeshifting into an animal form or mounting cancels the effect. Any effect which causes you to lose control of your character will suppress the starfall effect.","castTimeMs":0,"cooldownMs":90000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":39,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":50286,"coefficient":0.12700000405311584},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-wild-growth","name":"Wild Growth","iconBasename":"ability_druid_flourish","iconPath":"/assets/ui/spells/ability_druid_flourish.png","sourceUnlockLevel":60,"talentNodeId":"talent-1917","ranks":[{"spellId":48438,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for the listed amount over 7 sec. The amount healed is applied quickly at first, and slows down as the Wild Growth reaches its full duration.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11500000208616257},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53248,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for the listed amount over 7 sec. The amount healed is applied quickly at first, and slows down as the Wild Growth reaches its full duration.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11500000208616257},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53249,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for the listed amount over 7 sec. The amount healed is applied quickly at first, and slows down as the Wild Growth reaches its full duration.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":177,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11500000208616257},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53251,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for the listed amount over 7 sec. The amount healed is applied quickly at first, and slows down as the Wild Growth reaches its full duration.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":206,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11500000208616257},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-maim","name":"Maim","iconBasename":"ability_druid_mangle","iconPath":"/assets/ui/spells/ability_druid_mangle.png","sourceUnlockLevel":62,"ranks":[{"spellId":22570,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Finishing move that causes damage and stuns the target. Non-player victim spellcasting is also interrupted for 5 sec. Causes more damage and lasts longer per combo point: 1 point : the listed amountthe listed amountthe listed amountthe listed amount damage, 1 sec 2 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 2 sec 3 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 3 sec 4 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 4 sec 5 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 5 sec","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49802,"rank":2,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Finishing move that causes damage and stuns the target. Non-player victim spellcasting is also interrupted for 5 sec. Causes more damage and lasts longer per combo point: 1 point : the listed amountthe listed amountthe listed amountthe listed amount damage, 1 sec 2 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 2 sec 3 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 3 sec 4 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 4 sec 5 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 5 sec","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":66,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-lifebloom","name":"Lifebloom","iconBasename":"inv_misc_herb_felblossom","iconPath":"/assets/ui/spells/inv_misc_herb_felblossom.png","sourceUnlockLevel":64,"ranks":[{"spellId":33763,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":71,"description":"Heals the target for the listed amount over 7 sec. When Lifebloom completes its duration or is dispelled, the target instantly heals themself for 480 and the Druid regains half the cost of the spell. This effect can stack up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09520000219345093},{"index":1,"effectType":6,"auraType":4,"basePoints":480,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48450,"rank":2,"level":72,"sourceLevel":72,"maxScalingLevel":79,"description":"Heals the target for the listed amount over 7 sec. When Lifebloom completes its duration or is dispelled, the target instantly heals themself for 616 and the Druid regains half the cost of the spell. This effect can stack up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09520000219345093},{"index":1,"effectType":6,"auraType":4,"basePoints":616,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48451,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals the target for the listed amount over 7 sec. When Lifebloom completes its duration or is dispelled, the target instantly heals themself for 776 and the Druid regains half the cost of the spell. This effect can stack up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":53,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09520000219345093},{"index":1,"effectType":6,"auraType":4,"basePoints":776,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-lacerate","name":"Lacerate","iconBasename":"ability_druid_lacerate","iconPath":"/assets/ui/spells/ability_druid_lacerate.png","sourceUnlockLevel":66,"ranks":[{"spellId":33745,"rank":1,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Lacerates the enemy target, dealing 31 damage and making them bleed for the listed amount damage over 15 sec and causing a high amount of threat. Damage increased by attack power. This effect stacks up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48567,"rank":2,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Lacerates the enemy target, dealing 70 damage and making them bleed for the listed amount damage over 15 sec and causing a high amount of threat. Damage increased by attack power. This effect stacks up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":51,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48568,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Lacerates the enemy target, dealing 88 damage and making them bleed for the listed amount damage over 15 sec and causing a high amount of threat. Damage increased by attack power. This effect stacks up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":88,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-cyclone","name":"Cyclone","iconBasename":"spell_nature_earthbind","iconPath":"/assets/ui/spells/spell_nature_earthbind.png","sourceUnlockLevel":70,"ranks":[{"spellId":33786,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Tosses the enemy target into the air, preventing all action but making them invulnerable for up to 6 sec. Only one target can be affected by your Cyclone at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":118,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-swift-flight-form","name":"Swift Flight Form","iconBasename":"ability_druid_flightform","iconPath":"/assets/ui/spells/ability_druid_flightform.png","sourceUnlockLevel":70,"ranks":[{"spellId":40120,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Shapeshift into swift flight form, increasing movement speed by 0% and allowing you to fly. Cannot use in combat. Can only use this form in Outland or Northrend. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":27,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":201,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-swipe-cat","name":"Swipe (Cat)","iconBasename":"inv_misc_monsterclaw_03","iconPath":"/assets/ui/spells/inv_misc_monsterclaw_03.png","sourceUnlockLevel":71,"ranks":[{"spellId":62078,"rank":1,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 250% weapon damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-savage-roar","name":"Savage Roar","iconBasename":"ability_druid_skinteeth","iconPath":"/assets/ui/spells/ability_druid_skinteeth.png","sourceUnlockLevel":75,"ranks":[{"spellId":52610,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Finishing move that increases physical damage done by 30%. Only useable while in Cat Form. Lasts longer per combo point: 1 point : 14 seconds 2 points: 19 seconds 3 points: 24 seconds 4 points: 29 seconds 5 points: 34 seconds","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":34000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":4,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-nourish","name":"Nourish","iconBasename":"ability_druid_nourish","iconPath":"/assets/ui/spells/ability_druid_nourish.png","sourceUnlockLevel":80,"ranks":[{"spellId":50464,"rank":1,"level":80,"sourceLevel":80,"maxScalingLevel":85,"description":"Heals a friendly target for 2187. Heals for an additional 20% if you have a Rejuvenation, Regrowth, Lifebloom, or Wild Growth effect active on the target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1883,"dieSides":305,"pointsPerLevel":9.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.671999990940094},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}]}} +{"source":{"product":"World of Warcraft","build":"3.3.5a.12340","archive":"../wow335a/Data/enUS/patch-enUS.MPQ","spellTableRecords":46583,"generatedAt":"2026-10-01T03:10:43.111Z"},"classes":{"warrior":[{"id":"wow335-warrior-battle-shout","name":"Battle Shout","iconBasename":"ability_warrior_battleshout","iconPath":"/assets/ui/spells/ability_warrior_battleshout.png","sourceUnlockLevel":1,"ranks":[{"spellId":6673,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":11,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 15. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":15,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":15,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5242,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":21,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 35. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":35,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":35,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6192,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":31,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 55. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":55,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":55,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11549,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":41,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 85. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":85,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":85,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11550,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":51,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 130. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":130,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":130,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11551,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":61,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 185. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":185,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":185,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25289,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":68,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 232. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":232,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":232,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2048,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":76,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 305. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":305,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":305,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47436,"rank":9,"level":78,"sourceLevel":78,"maxScalingLevel":85,"description":"The warrior shouts, increasing attack power of all raid and party members within the listed amount yards by 548. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":548,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":548,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-battle-stance","name":"Battle Stance","iconBasename":"ability_warrior_offensivestance","iconPath":"/assets/ui/spells/ability_warrior_offensivestance.png","sourceUnlockLevel":1,"ranks":[{"spellId":2457,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"A balanced combat stance that increases the armor penetration of all of your attacks by 10%.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":280,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-execute","name":"Execute","iconBasename":"inv_sword_48","iconPath":"/assets/ui/spells/inv_sword_48.png","sourceUnlockLevel":1,"ranks":[{"spellId":5308,"rank":1,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":93,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20658,"rank":2,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":159,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20660,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":282,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20661,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":404,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20662,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":554,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25234,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":687,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25236,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":865,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47470,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1142,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47471,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing the listed amountthe listed amount damage and converting each extra point of rage into the listed amount additional damage (up to a maximum cost of 30 rage). Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1456,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20647,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Attempt to finish off a wounded foe, causing damage and converting each extra point of rage into additional damage. Only usable on enemies that have less than 20% health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":1,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-heroic-strike","name":"Heroic Strike","iconBasename":"ability_rogue_ambush","iconPath":"/assets/ui/spells/ability_rogue_ambush.png","sourceUnlockLevel":1,"ranks":[{"spellId":78,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 11 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":11,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":284,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 21 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":285,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 32 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":1608,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 44 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":44,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11564,"rank":5,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 60 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11565,"rank":6,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 93 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":93,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11566,"rank":7,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 136 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":136,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11567,"rank":8,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 178 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":178,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25286,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 201 and causes a high amount of threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":201,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":29707,"rank":10,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 234 and causes a high amount of threat. Causes the listed amount additional damage against Dazed targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":234,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":30324,"rank":11,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 317 and causes a high amount of threat. Causes the listed amount additional damage against Dazed targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":317,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47449,"rank":12,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 432 and causes a high amount of threat. Causes the listed amount additional damage against Dazed targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":432,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47450,"rank":13,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 495 and causes a high amount of threat. Causes the listed amount additional damage against Dazed targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":495,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-sweeping-strikes","name":"Sweeping Strikes","iconBasename":"ability_rogue_slicedice","iconPath":"/assets/ui/spells/ability_rogue_slicedice.png","sourceUnlockLevel":1,"talentNodeId":"talent-133","ranks":[{"spellId":12723,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Your next melee weapon swing strikes an additional nearby opponent.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26654,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Your next melee weapon swing strikes an additional nearby opponent.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":12328,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Your next the listed amount melee attacks strike an additional nearby opponent.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-charge","name":"Charge","iconBasename":"ability_warrior_charge","iconPath":"/assets/ui/spells/ability_warrior_charge.png","sourceUnlockLevel":4,"ranks":[{"spellId":100,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Charge an enemy, generate the listed amount rage, and stun it for 1.5 sec. Cannot be used in combat.","castTimeMs":0,"cooldownMs":15000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7922,"coefficient":1}]},{"spellId":6178,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Charge an enemy, generate the listed amount rage, and stun it for 1.5 sec. Cannot be used in combat.","castTimeMs":0,"cooldownMs":15000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7922,"coefficient":1}]},{"spellId":11578,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Charge an enemy, generate the listed amount rage, and stun it for 1.5 sec. Cannot be used in combat.","castTimeMs":0,"cooldownMs":15000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7922,"coefficient":1}]}]},{"id":"wow335-warrior-rend","name":"Rend","iconBasename":"ability_gouge","iconPath":"/assets/ui/spells/ability_gouge.png","sourceUnlockLevel":4,"ranks":[{"spellId":772,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((5WB+5wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6546,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((8WB+8wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6547,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((10WB+10wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6548,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((14WB+14wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11572,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((23WB+23wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":23,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11573,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((30WB+30wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11574,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((37WB+37wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25208,"rank":8,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((43WB+43wb)/2+the listed amount)} (based on weapon damage) over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":46845,"rank":9,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((63WB+63wb)/2+the listed amount)} (based on weapon damage) over 15 sec. If used while your target is above 75% health, Rend does 35% more damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":63,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47465,"rank":10,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Wounds the target causing them to bleed for the listed amount damage plus an additional the listed amount((76WB+76wb)/2+the listed amount)} (based on weapon damage) over 15 sec. If used while your target is above 75% health, Rend does 35% more damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":76,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-thunder-clap","name":"Thunder Clap","iconBasename":"spell_nature_thunderclap","iconPath":"/assets/ui/spells/spell_nature_thunderclap.png","sourceUnlockLevel":6,"ranks":[{"spellId":6343,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 10 sec and doing 15 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8198,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 14 sec and doing 34 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":14000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":34,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8204,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 18 sec and doing 55 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8205,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 22 sec and doing 82 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":22000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":82,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11580,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 26 sec and doing 123 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":26000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11581,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 30 sec and doing 154 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":154,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25264,"rank":7,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 30 sec and doing 184 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":184,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47501,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 30 sec and doing 247 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":247,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47502,"rank":9,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Blasts nearby enemies increasing the time between their attacks by 10% for 30 sec and doing 300 damage to them. Damage increased by attack power. This ability causes additional threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-hamstring","name":"Hamstring","iconBasename":"ability_shockwave","iconPath":"/assets/ui/spells/ability_shockwave.png","sourceUnlockLevel":8,"ranks":[{"spellId":1715,"rank":0,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Maims the enemy, reducing movement speed by 50% for 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-bloodrage","name":"Bloodrage","iconBasename":"ability_racial_bloodrage","iconPath":"/assets/ui/spells/ability_racial_bloodrage.png","sourceUnlockLevel":10,"ranks":[{"spellId":2687,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Generates the listed amount rage at the cost of health, and then generates an additional the listed amount rage over 10 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":30,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29131,"coefficient":0}]}]},{"id":"wow335-warrior-defensive-stance","name":"Defensive Stance","iconBasename":"ability_warrior_defensivestance","iconPath":"/assets/ui/spells/ability_warrior_defensivestance.png","sourceUnlockLevel":10,"ranks":[{"spellId":71,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"A defensive combat stance. Decreases damage taken by 10% and damage caused by 5%. Increases threat generated.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-sunder-armor","name":"Sunder Armor","iconBasename":"ability_warrior_sunder","iconPath":"/assets/ui/spells/ability_warrior_sunder.png","sourceUnlockLevel":10,"ranks":[{"spellId":7386,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Sunders the target's armor, reducing it by 4% per Sunder Armor and causes a high amount of threat. Threat increased by attack power. Can be applied up to 5 times. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":-4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":58567,"coefficient":0}]}]},{"id":"wow335-warrior-taunt","name":"Taunt","iconBasename":"spell_nature_reincarnation","iconPath":"/assets/ui/spells/spell_nature_reincarnation.png","sourceUnlockLevel":10,"ranks":[{"spellId":355,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Taunts the target to attack you, but has no effect if the target is already attacking you.","castTimeMs":0,"cooldownMs":8000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":114,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":11,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-overpower","name":"Overpower","iconBasename":"ability_meleedamage","iconPath":"/assets/ui/spells/ability_meleedamage.png","sourceUnlockLevel":12,"ranks":[{"spellId":7384,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Instantly overpower the enemy, causing weapon damage. Only useable after the target dodges. The Overpower cannot be blocked, dodged or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":1,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-shield-bash","name":"Shield Bash","iconBasename":"ability_warrior_shieldbash","iconPath":"/assets/ui/spells/ability_warrior_shieldbash.png","sourceUnlockLevel":12,"ranks":[{"spellId":72,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Bash the target with your shield dazing them and interrupting spellcasting, which prevents any spell in that school from being cast for 6 sec.","castTimeMs":0,"cooldownMs":12000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29703,"coefficient":0}]}]},{"id":"wow335-warrior-demoralizing-shout","name":"Demoralizing Shout","iconBasename":"ability_warrior_warcry","iconPath":"/assets/ui/spells/ability_warrior_warcry.png","sourceUnlockLevel":14,"ranks":[{"spellId":1160,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":24,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 35 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-35,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6190,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":34,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 55 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-55,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11554,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":44,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 70 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-70,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11555,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":54,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 105 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-105,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11556,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":64,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 140 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-140,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25202,"rank":6,"level":62,"sourceLevel":62,"maxScalingLevel":70,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 220 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-220,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25203,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":78,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 300 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-300,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47437,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":87,"description":"Reduces the melee attack power of all enemies within the listed amount yards by 410 for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-410,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-revenge","name":"Revenge","iconBasename":"ability_warrior_revenge","iconPath":"/assets/ui/spells/ability_warrior_revenge.png","sourceUnlockLevel":14,"ranks":[{"spellId":6572,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":89,"dieSides":19,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6574,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":129,"dieSides":29,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":7379,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":175,"dieSides":39,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11600,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":320,"dieSides":71,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11601,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":498,"dieSides":111,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25288,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":643,"dieSides":143,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25269,"rank":7,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":699,"dieSides":155,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":30357,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":855,"dieSides":191,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":57823,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Instantly counterattack an enemy for the listed amountthe listed amount to the listed amountthe listed amount damage. Revenge is only usable after the warrior blocks, dodges or parries an attack.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1454,"dieSides":323,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-mocking-blow","name":"Mocking Blow","iconBasename":"ability_warrior_punishingblow","iconPath":"/assets/ui/spells/ability_warrior_punishingblow.png","sourceUnlockLevel":16,"ranks":[{"spellId":694,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"A mocking attack that causes weapon damage, a moderate amount of threat and forces the target to focus attacks on you for 6 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":11,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":114,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-shield-block","name":"Shield Block","iconBasename":"ability_defend","iconPath":"/assets/ui/spells/ability_defend.png","sourceUnlockLevel":16,"ranks":[{"spellId":2565,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Increases your chance to block and block value by 100% for 10 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":150,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-disarm","name":"Disarm","iconBasename":"ability_warrior_disarm","iconPath":"/assets/ui/spells/ability_warrior_disarm.png","sourceUnlockLevel":18,"ranks":[{"spellId":676,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Disarm the enemy's main hand and ranged weapons for 10 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":67,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":278,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-cleave","name":"Cleave","iconBasename":"ability_warrior_cleave","iconPath":"/assets/ui/spells/ability_warrior_cleave.png","sourceUnlockLevel":20,"ranks":[{"spellId":845,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 15 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":7369,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 30 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11608,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 50 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11609,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 70 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20569,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 95 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":95,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25231,"rank":6,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 135 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":135,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47519,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 189 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":189,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47520,"rank":8,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"A sweeping attack that does your weapon damage plus 222 to the target and his nearest ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":222,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-last-stand","name":"Last Stand","iconBasename":"spell_holy_ashestoashes","iconPath":"/assets/ui/spells/spell_holy_ashestoashes.png","sourceUnlockLevel":20,"talentNodeId":"talent-153","ranks":[{"spellId":12975,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"When activated, this ability temporarily grants you 30% of your maximum health for 20 sec. After the effect expires, the health is lost.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-piercing-howl","name":"Piercing Howl","iconBasename":"spell_shadow_deathscream","iconPath":"/assets/ui/spells/spell_shadow_deathscream.png","sourceUnlockLevel":20,"talentNodeId":"talent-160","ranks":[{"spellId":12323,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Causes all enemies within the listed amount yards to be Dazed, reducing movement speed by 50% for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-retaliation","name":"Retaliation","iconBasename":"ability_warrior_challange","iconPath":"/assets/ui/spells/ability_warrior_challange.png","sourceUnlockLevel":20,"ranks":[{"spellId":20230,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Instantly counterattack any enemy that strikes you in melee for 12 sec. Melee attacks made from behind cannot be counterattacked. A maximum of the listed amount attacks will cause retaliation.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-intimidating-shout","name":"Intimidating Shout","iconBasename":"ability_golemthunderclap","iconPath":"/assets/ui/spells/ability_golemthunderclap.png","sourceUnlockLevel":22,"ranks":[{"spellId":5246,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"The warrior shouts, causing up to the listed amount enemies within the listed amount yards to cower in fear. The targeted enemy will be unable to move while cowering. Lasts 8 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":1,"powerCost":250,"powerCostPercentage":0,"rangeIndex":137,"rangeMin":0,"rangeMax":8,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20511,"coefficient":1},{"index":1,"effectType":6,"auraType":7,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-challenging-shout","name":"Challenging Shout","iconBasename":"ability_bullrush","iconPath":"/assets/ui/spells/ability_bullrush.png","sourceUnlockLevel":26,"ranks":[{"spellId":1161,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Forces all enemies within the listed amount yards to focus attacks on you for 6 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":50,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":11,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-shield-wall","name":"Shield Wall","iconBasename":"ability_warrior_shieldwall","iconPath":"/assets/ui/spells/ability_warrior_shieldwall.png","sourceUnlockLevel":28,"ranks":[{"spellId":871,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Reduces all damage taken by 60% for 12 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":0,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":87,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-berserker-stance","name":"Berserker Stance","iconBasename":"ability_racial_avatar","iconPath":"/assets/ui/spells/ability_racial_avatar.png","sourceUnlockLevel":30,"ranks":[{"spellId":2458,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"An aggressive stance. Critical hit chance is increased by 3% and all damage taken is increased by 5%.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":19,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-concussion-blow","name":"Concussion Blow","iconBasename":"ability_thunderbolt","iconPath":"/assets/ui/spells/ability_thunderbolt.png","sourceUnlockLevel":30,"talentNodeId":"talent-152","ranks":[{"spellId":12809,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Stuns the opponent for 5 sec and deals the listed amountthe listed amount damage (based on attack power).","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-death-wish","name":"Death Wish","iconBasename":"spell_shadow_deathpact","iconPath":"/assets/ui/spells/spell_shadow_deathpact.png","sourceUnlockLevel":30,"talentNodeId":"talent-165","ranks":[{"spellId":12292,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"When activated you become enraged, increasing your physical damage by 20% but increasing all damage taken by 5%. Lasts 30 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-intercept","name":"Intercept","iconBasename":"ability_rogue_sprint","iconPath":"/assets/ui/spells/ability_rogue_sprint.png","sourceUnlockLevel":30,"ranks":[{"spellId":20252,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Charge an enemy, causing the listed amountthe listed amount damage (based on attack power) and stunning it for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20253,"coefficient":1}]}]},{"id":"wow335-warrior-slam","name":"Slam","iconBasename":"ability_warrior_decisivestrike","iconPath":"/assets/ui/spells/ability_warrior_decisivestrike.png","sourceUnlockLevel":30,"ranks":[{"spellId":1464,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 32.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8820,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 43.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11604,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 68.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":68,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11605,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 87.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25241,"rank":5,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 105.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25242,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 140.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47474,"rank":7,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 220.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":220,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47475,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Slams the opponent, causing weapon damage plus 250.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-berserker-rage","name":"Berserker Rage","iconBasename":"spell_nature_ancestralguardian","iconPath":"/assets/ui/spells/spell_nature_ancestralguardian.png","sourceUnlockLevel":32,"ranks":[{"spellId":18499,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"The warrior enters a berserker rage, removing and granting immunity to Fear, Sap and Incapacitate effects and generating extra rage when taking damage. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-whirlwind","name":"Whirlwind","iconBasename":"ability_whirlwind","iconPath":"/assets/ui/spells/ability_whirlwind.png","sourceUnlockLevel":36,"ranks":[{"spellId":1680,"rank":0,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"In a whirlwind of steel you attack up to the listed amount enemies within the listed amount yards, causing weapon damage from both melee weapons to each enemy.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":250,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":44949,"coefficient":0}]}]},{"id":"wow335-warrior-pummel","name":"Pummel","iconBasename":"inv_gauntlets_04","iconPath":"/assets/ui/spells/inv_gauntlets_04.png","sourceUnlockLevel":38,"ranks":[{"spellId":6552,"rank":0,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Pummel the target, interrupting spellcasting and preventing any spell in that school from being cast for 4 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":4000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-bloodthirst","name":"Bloodthirst","iconBasename":"spell_nature_bloodlust","iconPath":"/assets/ui/spells/spell_nature_bloodlust.png","sourceUnlockLevel":40,"talentNodeId":"talent-167","ranks":[{"spellId":23880,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":23881,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack the target causing the listed amountthe listed amount damage. In addition, the next the listed amount successful melee attacks will restore 1% of max health. This effect lasts 8 sec. Damage is based on your attack power.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":23885,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack the target causing the listed amountthe listed amount damage. In addition, the next the listed amount successful melee attacks will restore 1% of max health. This effect lasts 8 sec. Damage is based on your attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":23880,"coefficient":1}]}]},{"id":"wow335-warrior-mortal-strike","name":"Mortal Strike","iconBasename":"ability_warrior_savageblow","iconPath":"/assets/ui/spells/ability_warrior_savageblow.png","sourceUnlockLevel":40,"talentNodeId":"talent-135","ranks":[{"spellId":12294,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 85 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":21551,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 110 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":21552,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 135 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":135,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":21553,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 160 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":160,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25248,"rank":5,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 185 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":30330,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 210 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":210,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47485,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 320 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":320,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47486,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A vicious strike that deals weapon damage plus 380 and wounds the target, reducing the effectiveness of any healing by 50% for 10 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":300,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":380,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-shield-slam","name":"Shield Slam","iconBasename":"inv_shield_05","iconPath":"/assets/ui/spells/inv_shield_05.png","sourceUnlockLevel":40,"ranks":[{"spellId":23922,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 308 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":294,"dieSides":15,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":23923,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 362 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":346,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":23924,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 416 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":396,"dieSides":21,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":23925,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 469 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":447,"dieSides":23,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25258,"rank":5,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 523 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":499,"dieSides":25,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":30356,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 577 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":549,"dieSides":29,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47487,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 879 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":837,"dieSides":43,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47488,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Slam the target with your shield, causing 1040 damage, modified by your shield block value, and dispels 1 magic effect on the target. Also causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":990,"dieSides":51,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-vigilance","name":"Vigilance","iconBasename":"ability_warrior_vigilance","iconPath":"/assets/ui/spells/ability_warrior_vigilance.png","sourceUnlockLevel":40,"talentNodeId":"talent-148","ranks":[{"spellId":50720,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Focus your protective gaze on a group or raid target, reducing their damage taken by 3% and transfers 10% of the threat they cause to you. In addition, each time they are hit by an attack your Taunt cooldown is refreshed. Lasts 1800 sec. This effect can only be on one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50725,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-devastate","name":"Devastate","iconBasename":"inv_sword_11","iconPath":"/assets/ui/spells/inv_sword_11.png","sourceUnlockLevel":50,"talentNodeId":"talent-1666","ranks":[{"spellId":20243,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 48 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":48,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30016,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 80 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30022,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 112 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":112,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47497,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 170 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47498,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Sunder the target's armor causing the Sunder Armor effect. In addition, causes 100% of weapon damage plus 202 for each application of Sunder Armor on the target. The Sunder Armor effect can stack up to the listed amount times.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":1,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":121,"auraType":0,"basePoints":202,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-heroic-fury","name":"Heroic Fury","iconBasename":"ability_heroicleap","iconPath":"/assets/ui/spells/ability_heroicleap.png","sourceUnlockLevel":50,"talentNodeId":"talent-1868","ranks":[{"spellId":60970,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Removes any Immobilization effects and refreshes the cooldown of your Intercept ability.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":100,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-recklessness","name":"Recklessness","iconBasename":"ability_criticalstrike","iconPath":"/assets/ui/spells/ability_criticalstrike.png","sourceUnlockLevel":50,"ranks":[{"spellId":1719,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Your next the listed amount special ability attacks have an additional 100% to critically hit but all damage taken is increased by 20%. Lasts 12 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-bladestorm","name":"Bladestorm","iconBasename":"ability_warrior_bladestorm","iconPath":"/assets/ui/spells/ability_warrior_bladestorm.png","sourceUnlockLevel":60,"talentNodeId":"talent-1863","ranks":[{"spellId":46924,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Instantly Whirlwind up to the listed amount nearby targets and for the next 6 sec you will perform a whirlwind attack every 1 sec. While under the effects of Bladestorm, you can move but cannot perform any other abilities but you do not feel pity or remorse or fear and you cannot be stopped unless killed.","castTimeMs":0,"cooldownMs":90000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":250,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":50622,"coefficient":0},{"index":1,"effectType":6,"auraType":147,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1733,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":263,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-shockwave","name":"Shockwave","iconBasename":"ability_warrior_shockwave","iconPath":"/assets/ui/spells/ability_warrior_shockwave.png","sourceUnlockLevel":60,"talentNodeId":"talent-1872","ranks":[{"spellId":46968,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Sends a wave of force in front of the warrior, causing the listed amountthe listed amount damage (based on attack power) and stunning all enemy targets within the listed amount yards in a frontal cone for 4 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-victory-rush","name":"Victory Rush","iconBasename":"ability_warrior_devastate","iconPath":"/assets/ui/spells/ability_warrior_devastate.png","sourceUnlockLevel":62,"ranks":[{"spellId":34428,"rank":0,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Instantly attack the target causing the listed amountthe listed amount damage. Can only be used within 20 sec after you kill an enemy that yields experience or honor. Damage is based on your attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-spell-reflection","name":"Spell Reflection","iconBasename":"ability_warrior_shieldreflection","iconPath":"/assets/ui/spells/ability_warrior_shieldreflection.png","sourceUnlockLevel":64,"ranks":[{"spellId":23920,"rank":0,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Raise your shield, reflecting the next spell cast on you. Lasts 5 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":5000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":28,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-commanding-shout","name":"Commanding Shout","iconBasename":"ability_warrior_rallyingcry","iconPath":"/assets/ui/spells/ability_warrior_rallyingcry.png","sourceUnlockLevel":68,"ranks":[{"spellId":469,"rank":1,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Increases maximum health of all party and raid members within the listed amount yards by 1080. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":230,"basePoints":1080,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47439,"rank":2,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Increases maximum health of all party and raid members within the listed amount yards by 1855. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":230,"basePoints":1855,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47440,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Increases maximum health of all party and raid members within the listed amount yards by 2255. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":230,"basePoints":2255,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-intervene","name":"Intervene","iconBasename":"ability_warrior_victoryrush","iconPath":"/assets/ui/spells/ability_warrior_victoryrush.png","sourceUnlockLevel":70,"ranks":[{"spellId":3411,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Run at high speed towards a party member, intercepting the next melee or ranged attack made against them as well as reducing their total threat by 10%.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":95,"rangeMin":8,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":96,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":111,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warrior-shattering-throw","name":"Shattering Throw","iconBasename":"ability_warrior_shatteringthrow","iconPath":"/assets/ui/spells/ability_warrior_shatteringthrow.png","sourceUnlockLevel":71,"ranks":[{"spellId":64380,"rank":0,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Throws your weapon at the enemy causing the listed amountthe listed amount damage (based on attack power), reducing the armor on the target by 20% for 10 sec or removing any invulnerabilities.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":64382,"rank":0,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Throws your weapon at the enemy causing the listed amountthe listed amount damage (based on attack power), reducing the armor on the target by 20% for 10 sec or removing any invulnerabilities.","castTimeMs":1500,"cooldownMs":300000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":250,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-enraged-regeneration","name":"Enraged Regeneration","iconBasename":"ability_warrior_focusedrage","iconPath":"/assets/ui/spells/ability_warrior_focusedrage.png","sourceUnlockLevel":75,"ranks":[{"spellId":55694,"rank":0,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"You regenerate the listed amount% of your total health over 10 sec. This ability requires an Enrage effect, consumes all Enrage effects and prevents any from affecting you for the full duration.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":20,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warrior-heroic-throw","name":"Heroic Throw","iconBasename":"inv_axe_66","iconPath":"/assets/ui/spells/inv_axe_66.png","sourceUnlockLevel":80,"ranks":[{"spellId":57755,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Throws your weapon at the enemy causing the listed amountthe listed amount damage (based on attack power). This ability causes high threat.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}],"paladin":[{"id":"wow335-paladin-aura-mastery","name":"Aura Mastery","iconBasename":"spell_holy_auramastery","iconPath":"/assets/ui/spells/spell_holy_auramastery.png","sourceUnlockLevel":1,"talentNodeId":"talent-1435","ranks":[{"spellId":31821,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Causes your Concentration Aura to make all affected targets immune to Silence and Interrupt effects and improve the effect of all other auras by 100%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":108,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-beacon-of-light","name":"Beacon of Light","iconBasename":"ability_paladin_beaconoflight","iconPath":"/assets/ui/spells/ability_paladin_beaconoflight.png","sourceUnlockLevel":1,"talentNodeId":"talent-2192","ranks":[{"spellId":53652,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 40 yard radius. Any heals you cast on those targets will also heal the Beacon for 100% of the amount healed. Only one target can be the Beacon of Light at a time. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53653,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 40 yard radius. Any heals you cast on those targets will also heal the Beacon for 100% of the amount healed. Only one target can be the Beacon of Light at a time. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53654,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 40 yard radius. Any heals you cast on those targets will also heal the Beacon for 100% of the amount healed. Only one target can be the Beacon of Light at a time. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53563,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 60 yard radius. Any heals you cast on those targets will also heal the Beacon for 100% of the amount healed. Only one target can be the Beacon of Light at a time. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":1500,"miscValue":0,"triggerSpellId":53651,"coefficient":0}]}]},{"id":"wow335-paladin-devotion-aura","name":"Devotion Aura","iconBasename":"spell_holy_devotionaura","iconPath":"/assets/ui/spells/spell_holy_devotionaura.png","sourceUnlockLevel":1,"ranks":[{"spellId":465,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":9,"description":"Gives 55 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10290,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":19,"description":"Gives 160 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":160,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":643,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"Gives 275 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10291,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"Gives 390 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":390,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":1032,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Gives 505 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":505,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10292,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Gives 620 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":620,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10293,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Gives 735 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":735,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":27149,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Gives 861 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":861,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":48941,"rank":9,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Gives 1015 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":1015,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":48942,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Gives 1205 additional armor to party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":22,"basePoints":1205,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-favor","name":"Divine Favor","iconBasename":"spell_holy_heal","iconPath":"/assets/ui/spells/spell_holy_heal.png","sourceUnlockLevel":1,"talentNodeId":"talent-1433","ranks":[{"spellId":20216,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, gives your next Flash of Light, Holy Light, or Holy Shock spell a 100% critical effect chance.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-illumination","name":"Divine Illumination","iconBasename":"spell_holy_divineillumination","iconPath":"/assets/ui/spells/spell_holy_divineillumination.png","sourceUnlockLevel":1,"talentNodeId":"talent-1747","ranks":[{"spellId":31842,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Reduces the mana cost of all spells by 50% for 15 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":72,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-sacrifice","name":"Divine Sacrifice","iconBasename":"spell_holy_powerwordbarrier","iconPath":"/assets/ui/spells/spell_holy_powerwordbarrier.png","sourceUnlockLevel":1,"talentNodeId":"talent-2280","ranks":[{"spellId":64205,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"30% of all damage taken by party or raid members within the listed amount yards is redirected to the Paladin (up to a maximum of 150% of the Paladin's health). Lasts 10 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":81,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-paladin-eye-for-an-eye","name":"Eye for an Eye","iconBasename":"spell_holy_eyeforaneye","iconPath":"/assets/ui/spells/spell_holy_eyeforaneye.png","sourceUnlockLevel":1,"passive":true,"ranks":[{"spellId":25997,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"All criticals against you cause a percentage of the damage taken to the attacker as well. The damage caused by Eye for an Eye will not exceed 50% of the Paladin's total health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-holy-light","name":"Holy Light","iconBasename":"spell_holy_holybolt","iconPath":"/assets/ui/spells/spell_holy_holybolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":635,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Heals a friendly target for 60.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":50,"dieSides":11,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.48100000619888306}]},{"spellId":639,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Heals a friendly target for 116.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":96,"dieSides":21,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7960000038146973}]},{"spellId":647,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Heals a friendly target for 239.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":203,"dieSides":37,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.2999999523162842}]},{"spellId":1026,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Heals a friendly target for 455.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":397,"dieSides":59,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":3472,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Heals a friendly target for 998.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":894,"dieSides":105,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":10328,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Heals a friendly target for 1349.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1209,"dieSides":141,"pointsPerLevel":4.599999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":10329,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Heals a friendly target for 1777.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1595,"dieSides":183,"pointsPerLevel":5.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":25292,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 2266.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2034,"dieSides":233,"pointsPerLevel":5.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":27135,"rank":10,"level":62,"sourceLevel":62,"maxScalingLevel":67,"description":"Heals a friendly target for 2486.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2232,"dieSides":255,"pointsPerLevel":6.400000095367432,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":27136,"rank":11,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals a friendly target for 3138.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2818,"dieSides":321,"pointsPerLevel":7,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":48781,"rank":12,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals a friendly target for 4677.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":4199,"dieSides":479,"pointsPerLevel":10.399999618530273,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]},{"spellId":48782,"rank":13,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals a friendly target for 5444.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":4888,"dieSides":557,"pointsPerLevel":12.100000381469727,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6790000200271606}]}]},{"id":"wow335-paladin-judgement-of-righteousness","name":"Judgement of Righteousness","iconBasename":"ability_thunderbolt","iconPath":"/assets/ui/spells/ability_thunderbolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":20187,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Fills the Paladin with holy spirit for 1800 sec, granting each melee attack an additional the listed amountthe listed amount(the listed amount(the listed amount,1),0.85*(1*1.2*1.03*1WS/100)+0.03*(1W+1w)/2-1,1.2*(1*1.2*1.03*1WS/100)+0.03*(1W+1w)/2+1)} Holy damage. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will cause 1 Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3199999928474426},{"index":2,"effectType":3,"auraType":0,"basePoints":108,"dieSides":1,"pointsPerLevel":18,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.057999998331069946}]}]},{"id":"wow335-paladin-righteous-fury","name":"Righteous Fury","iconBasename":"spell_holy_sealoffury","iconPath":"/assets/ui/spells/spell_holy_sealoffury.png","sourceUnlockLevel":1,"ranks":[{"spellId":25781,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25780,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Increases the threat generated by your Holy spells by 90%. Lasts 0.001 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":10,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-righteousness","name":"Seal of Righteousness","iconBasename":"ability_thunderbolt","iconPath":"/assets/ui/spells/ability_thunderbolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":20154,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":7,"description":"Fills the Paladin with holy spirit for 1800 sec, granting each melee attack the listed amount(0.022*the listed amount)} additional Holy damage. Only one Seal can be active on the Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0}]},{"spellId":21084,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":7,"description":"Fills the Paladin with holy spirit for 1800 sec, granting each melee attack the listed amount(0.022*the listed amount)} additional Holy damage. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will cause the listed amountthe listed amount Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":20187,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-blessing-of-might","name":"Blessing of Might","iconBasename":"spell_holy_fistofjustice","iconPath":"/assets/ui/spells/spell_holy_fistofjustice.png","sourceUnlockLevel":4,"ranks":[{"spellId":19740,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 20 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19834,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 35 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19835,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 55 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19836,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 85 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19837,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 130 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19838,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing attack power by 185 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25291,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":60,"description":"Places a Blessing on the friendly target, increasing attack power by 232 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27140,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Places a Blessing on the friendly target, increasing attack power by 306 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48931,"rank":9,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Places a Blessing on the friendly target, increasing attack power by 410 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48932,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Places a Blessing on the friendly target, increasing attack power by 550 for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":124,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-light","name":"Judgement of Light","iconBasename":"spell_holy_righteousfury","iconPath":"/assets/ui/spells/spell_holy_righteousfury.png","sourceUnlockLevel":4,"ranks":[{"spellId":20185,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Fills the Paladin with divine light for 1800 sec, giving each melee attack a chance to heal the Paladin for 0. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will judge an enemy for 20 sec, granting attacks made against the judged enemy a chance of healing the attacker for 2% of their maximum health. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20271,"rank":0,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Unleashes the energy of a Seal spell to judge an enemy for 20 sec, granting attacks made against the judged enemy a chance of healing the attacker for 2% of their maximum health. Refer to individual Seals for additional Judgement effect. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-protection","name":"Divine Protection","iconBasename":"spell_holy_restoration","iconPath":"/assets/ui/spells/spell_holy_restoration.png","sourceUnlockLevel":6,"ranks":[{"spellId":498,"rank":0,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Reduces all damage taken by 50% for 12 sec. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 120 sec. Cannot be used within 30 sec of using Avenging Wrath.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hammer-of-justice","name":"Hammer of Justice","iconBasename":"spell_holy_sealofmight","iconPath":"/assets/ui/spells/spell_holy_sealofmight.png","sourceUnlockLevel":8,"ranks":[{"spellId":853,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Stuns the target for 3 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5588,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Stuns the target for 4 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5589,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Stuns the target for 5 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10308,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Stuns the target for 6 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-purify","name":"Purify","iconBasename":"spell_holy_purify","iconPath":"/assets/ui/spells/spell_holy_purify.png","sourceUnlockLevel":8,"ranks":[{"spellId":1152,"rank":0,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Purifies the friendly target, removing 1 disease effect and 1 poison effect.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hand-of-protection","name":"Hand of Protection","iconBasename":"spell_holy_sealofprotection","iconPath":"/assets/ui/spells/spell_holy_sealofprotection.png","sourceUnlockLevel":10,"ranks":[{"spellId":1022,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"A targeted party or raid member is protected from all physical attacks for 6 sec, but during that time they cannot attack or use physical abilities. Players may only have one Hand on them per Paladin at any one time. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 120 sec. Cannot be targeted on players who have used Avenging Wrath within the last 30 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":25,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5599,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"A targeted party or raid member is protected from all physical attacks for 8 sec, but during that time they cannot attack or use physical abilities. Players may only have one Hand on them per Paladin at any one time. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 120 sec. Cannot be targeted on players who have used Avenging Wrath within the last 30 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":25,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10278,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"A targeted party or raid member is protected from all physical attacks for 10 sec, but during that time they cannot attack or use physical abilities. Players may only have one Hand on them per Paladin at any one time. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 120 sec. Cannot be targeted on players who have used Avenging Wrath within the last 30 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":25,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-lay-on-hands","name":"Lay on Hands","iconBasename":"spell_holy_layonhands","iconPath":"/assets/ui/spells/spell_holy_layonhands.png","sourceUnlockLevel":10,"ranks":[{"spellId":633,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2800,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health and restores 250 of their mana.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10310,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health and restores 550 of their mana.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27154,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health and restores 900 of their mana.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":900,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48788,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Heals a friendly target for an amount equal to the Paladin's maximum health and restores 1950 of their mana.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":67,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":1950,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-wisdom","name":"Judgement of Wisdom","iconBasename":"ability_paladin_judgementblue","iconPath":"/assets/ui/spells/ability_paladin_judgementblue.png","sourceUnlockLevel":12,"ranks":[{"spellId":20186,"rank":1,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Unleashes the energy of a Seal spell to judge an enemy, giving each attack a chance to restore 2% of the attacker's base mana. Refer to individual Seals for additional Judgement effect. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53408,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Unleashes the energy of a Seal spell to judge an enemy, giving each attack a chance to restore 2% of the attacker's base mana. Refer to individual Seals for additional Judgement effect. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-redemption","name":"Redemption","iconBasename":"spell_holy_resurrection","iconPath":"/assets/ui/spells/spell_holy_resurrection.png","sourceUnlockLevel":12,"ranks":[{"spellId":7328,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Brings a dead player back to life with 65 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":120,"triggerSpellId":0,"coefficient":1}]},{"spellId":10322,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Brings a dead player back to life with 150 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":260,"triggerSpellId":0,"coefficient":1}]},{"spellId":10324,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Brings a dead player back to life with 250 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":420,"triggerSpellId":0,"coefficient":1}]},{"spellId":20772,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Brings a dead player back to life with 400 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":600,"triggerSpellId":0,"coefficient":1}]},{"spellId":20773,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Brings a dead player back to life with 600 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":600,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":800,"triggerSpellId":0,"coefficient":1}]},{"spellId":48949,"rank":6,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Brings a dead player back to life with 1400 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1060,"triggerSpellId":0,"coefficient":1}]},{"spellId":48950,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Brings a dead player back to life with 1760 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1760,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1320,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-paladin-blessing-of-wisdom","name":"Blessing of Wisdom","iconBasename":"spell_holy_sealofwisdom","iconPath":"/assets/ui/spells/spell_holy_sealofwisdom.png","sourceUnlockLevel":14,"ranks":[{"spellId":19742,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 10 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19850,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 15 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19852,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 20 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19853,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 25 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":19854,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 30 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25290,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 33 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27142,"rank":7,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 41 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48935,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 73 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":73,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48936,"rank":9,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, restoring 92 mana every 5 seconds for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":92,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-righteous-defense","name":"Righteous Defense","iconBasename":"inv_shoulder_37","iconPath":"/assets/ui/spells/inv_shoulder_37.png","sourceUnlockLevel":14,"ranks":[{"spellId":31789,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Come to the defense of a friendly target, commanding up to 3 enemies attacking the target to attack the Paladin instead.","castTimeMs":0,"cooldownMs":8000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":31980,"coefficient":0}]}]},{"id":"wow335-paladin-hand-of-reckoning","name":"Hand of Reckoning","iconBasename":"spell_holy_unyieldingfaith","iconPath":"/assets/ui/spells/spell_holy_unyieldingfaith.png","sourceUnlockLevel":16,"ranks":[{"spellId":62124,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Taunts the target to attack you. If the target is not currently targeting you, causes the listed amountthe listed amount Holy damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":114,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":11,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-retribution-aura","name":"Retribution Aura","iconBasename":"spell_holy_auraoflight","iconPath":"/assets/ui/spells/spell_holy_auraoflight.png","sourceUnlockLevel":16,"ranks":[{"spellId":7294,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Causes 10 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10298,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Causes 18 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10299,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Causes 27 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10300,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Causes 37 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10301,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Causes 48 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":48,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27150,"rank":6,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Causes 62 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":62,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":54043,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Causes 112 Holy damage to any enemy that strikes a party or raid member within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":15,"basePoints":112,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.032999999821186066},{"index":1,"effectType":65,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":65,"auraType":193,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hand-of-freedom","name":"Hand of Freedom","iconBasename":"spell_holy_sealofvalor","iconPath":"/assets/ui/spells/spell_holy_sealofvalor.png","sourceUnlockLevel":18,"ranks":[{"spellId":1044,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Places a Hand on the friendly target, granting immunity to movement impairing effects for 6 sec. Players may only have one Hand on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-blessing-of-kings","name":"Blessing of Kings","iconBasename":"spell_magic_magearmor","iconPath":"/assets/ui/spells/spell_magic_magearmor.png","sourceUnlockLevel":20,"ranks":[{"spellId":20217,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, increasing total stats by 10% for 600 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":137,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":166,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-consecration","name":"Consecration","iconBasename":"spell_holy_innerfire","iconPath":"/assets/ui/spells/spell_holy_innerfire.png","sourceUnlockLevel":20,"ranks":[{"spellId":26573,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"Consecrates the land beneath the Paladin, doing the listed amount(9+0.04*9PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":20116,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"Consecrates the land beneath the Paladin, doing the listed amount(17+0.04*17PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":20922,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Consecrates the land beneath the Paladin, doing the listed amount(28+0.04*28PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":28,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":20923,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Consecrates the land beneath the Paladin, doing the listed amount(42+0.04*42PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":20924,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Consecrates the land beneath the Paladin, doing the listed amount(56+0.04*56PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":56,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":27173,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Consecrates the land beneath the Paladin, doing the listed amount(72+0.04*72PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":72,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":48818,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Consecrates the land beneath the Paladin, doing the listed amount(87+0.04*87PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]},{"spellId":48819,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Consecrates the land beneath the Paladin, doing the listed amount(113+0.04*113PH+0.04*the listed amount)} Holy damage over 8 sec to enemies who enter the area.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":3,"basePoints":113,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.03999999910593033}]}]},{"id":"wow335-paladin-exorcism","name":"Exorcism","iconBasename":"spell_holy_excorcism_02","iconPath":"/assets/ui/spells/spell_holy_excorcism_02.png","sourceUnlockLevel":20,"ranks":[{"spellId":879,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":96,"dieSides":15,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":5614,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":173,"dieSides":23,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":5615,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":250,"dieSides":33,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":10312,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":350,"dieSides":45,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":10313,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":452,"dieSides":55,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":10314,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":564,"dieSides":65,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":27138,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":687,"dieSides":79,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48800,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":787,"dieSides":91,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48801,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Causes the listed amountthe listed amount to the listed amountthe listed amount Holy damage to an enemy target. If the target is Undead or Demon, it will always critically hit.","castTimeMs":1500,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1028,"dieSides":119,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]}]},{"id":"wow335-paladin-flash-of-light","name":"Flash of Light","iconBasename":"spell_holy_flashheal","iconPath":"/assets/ui/spells/spell_holy_flashheal.png","sourceUnlockLevel":20,"ranks":[{"spellId":19750,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals a friendly target for 93. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":81,"dieSides":13,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19939,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Heals a friendly target for 144. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":124,"dieSides":21,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19940,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Heals a friendly target for 211. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":189,"dieSides":23,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19941,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":47,"description":"Heals a friendly target for 288. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":256,"dieSides":33,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19942,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Heals a friendly target for 390. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":346,"dieSides":45,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":19943,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Heals a friendly target for 499. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":445,"dieSides":55,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":27137,"rank":7,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Heals a friendly target for 658. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":588,"dieSides":71,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":48784,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Heals a friendly target for 764. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":682,"dieSides":83,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]},{"spellId":48785,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Heals a friendly target for 879. If the target has the Sacred Shield effect, they heal an additional 100% over 12 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":785,"dieSides":95,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0089999437332153}]}]},{"id":"wow335-paladin-repentance","name":"Repentance","iconBasename":"spell_holy_prayerofhealing","iconPath":"/assets/ui/spells/spell_holy_prayerofhealing.png","sourceUnlockLevel":20,"talentNodeId":"talent-1441","ranks":[{"spellId":20066,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Puts the enemy target in a state of meditation, incapacitating them for up to 60 sec. Any damage caused will awaken the target. Usable against Demons, Dragonkin, Giants, Humanoids and Undead.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-command","name":"Seal of Command","iconBasename":"ability_warrior_innerrage","iconPath":"/assets/ui/spells/ability_warrior_innerrage.png","sourceUnlockLevel":20,"talentNodeId":"talent-1481","ranks":[{"spellId":20375,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":28,"description":"All melee attacks deal the listed amount to the listed amount additional Holy damage. Lasts 1800 sec. Unleashing this Seal's energy will judge an enemy, instantly causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20424,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":20425,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-sense-undead","name":"Sense Undead","iconBasename":"spell_holy_senseundead","iconPath":"/assets/ui/spells/spell_holy_senseundead.png","sourceUnlockLevel":20,"ranks":[{"spellId":5502,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Shows the location of all nearby undead on the minimap until cancelled. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-summon-warhorse","name":"Summon Warhorse","iconBasename":"spell_nature_swiftness","iconPath":"/assets/ui/spells/spell_nature_swiftness.png","sourceUnlockLevel":20,"ranks":[{"spellId":34769,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a warhorse, which serves as a mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":20029,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-warhorse","name":"Warhorse","iconBasename":"spell_nature_swiftness","iconPath":"/assets/ui/spells/spell_nature_swiftness.png","sourceUnlockLevel":20,"ranks":[{"spellId":13819,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Warhorse, which serves as a mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":9158,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-concentration-aura","name":"Concentration Aura","iconBasename":"spell_holy_mindsooth","iconPath":"/assets/ui/spells/spell_holy_mindsooth.png","sourceUnlockLevel":22,"ranks":[{"spellId":19746,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"All party or raid members within the listed amount yards lose 35% less casting or channeling time when damaged. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":149,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-justice","name":"Judgement of Justice","iconBasename":"ability_paladin_judgementred","iconPath":"/assets/ui/spells/ability_paladin_judgementred.png","sourceUnlockLevel":22,"ranks":[{"spellId":20184,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Unleashing this Seal's energy will judge an enemy for 20 sec, preventing them from fleeing. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":92,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":191,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53407,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Unleashes the energy of a Seal spell to judge an enemy for 20 sec, preventing them from fleeing and limiting their movement speed. Refer to individual Seals for additional Judgement effect. Only one Judgement per Paladin can be active at any one time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-justice","name":"Seal of Justice","iconBasename":"spell_holy_sealofwrath","iconPath":"/assets/ui/spells/spell_holy_sealofwrath.png","sourceUnlockLevel":22,"ranks":[{"spellId":20164,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Fills the Paladin with the spirit of justice for 1800 sec, giving each melee attack a chance to stun for 2 sec. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20170,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-turn-evil","name":"Turn Evil","iconBasename":"spell_holy_turnundead","iconPath":"/assets/ui/spells/spell_holy_turnundead.png","sourceUnlockLevel":24,"ranks":[{"spellId":10326,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"The targeted undead or demon enemy will be compelled to flee for up to 20 sec. Damage caused may interrupt the effect. Only one target can be turned at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hand-of-salvation","name":"Hand of Salvation","iconBasename":"spell_holy_sealofsalvation","iconPath":"/assets/ui/spells/spell_holy_sealofsalvation.png","sourceUnlockLevel":26,"ranks":[{"spellId":1038,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Places a Hand on the party or raid member, reducing their total threat by 2% every 1 sec. for 10 sec. Players may only have one Hand on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":-2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":127,"triggerSpellId":53055,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-shadow-resistance-aura","name":"Shadow Resistance Aura","iconBasename":"spell_shadow_sealofkings","iconPath":"/assets/ui/spells/spell_shadow_sealofkings.png","sourceUnlockLevel":28,"ranks":[{"spellId":19876,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Gives 30 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":19895,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Gives 45 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":19896,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Gives 60 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":27151,"rank":4,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Gives 70 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":48943,"rank":5,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Gives 130 additional Shadow resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-blessing-of-sanctuary","name":"Blessing of Sanctuary","iconBasename":"spell_nature_lightningshield","iconPath":"/assets/ui/spells/spell_nature_lightningshield.png","sourceUnlockLevel":30,"talentNodeId":"talent-1431","ranks":[{"spellId":20911,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Places a Blessing on the friendly target, reducing damage taken from all sources by 3% for 600 sec and increasing stamina by 10%. In addition, when the target blocks, parries, or dodges a melee attack the target will gain 2% of maximum displayed mana. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-intervention","name":"Divine Intervention","iconBasename":"spell_nature_timestop","iconPath":"/assets/ui/spells/spell_nature_timestop.png","sourceUnlockLevel":30,"ranks":[{"spellId":19752,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"The paladin sacrifices the listed amount to remove the targeted party member from harm's way. Enemies will stop attacking the protected party member, who will be immune to all harmful attacks but will not be able to take any action for 180 sec.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":79,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19753,"coefficient":1},{"index":2,"effectType":1,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-light","name":"Seal of Light","iconBasename":"spell_holy_healingaura","iconPath":"/assets/ui/spells/spell_holy_healingaura.png","sourceUnlockLevel":30,"ranks":[{"spellId":20165,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Fills the Paladin with divine light for 1800 sec, giving each melee attack a chance to heal the Paladin for the listed amountthe listed amount Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20167,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-frost-resistance-aura","name":"Frost Resistance Aura","iconBasename":"spell_frost_wizardmark","iconPath":"/assets/ui/spells/spell_frost_wizardmark.png","sourceUnlockLevel":32,"ranks":[{"spellId":19888,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Gives 30 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":19897,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Gives 45 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":19898,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Gives 60 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":27152,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Gives 70 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":48945,"rank":5,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Gives 130 additional Frost resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-shield","name":"Divine Shield","iconBasename":"spell_holy_divineintervention","iconPath":"/assets/ui/spells/spell_holy_divineintervention.png","sourceUnlockLevel":34,"ranks":[{"spellId":642,"rank":0,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Protects the paladin from all damage and spells for 12 sec, but reduces all damage you deal by 50%. Once protected, the target cannot be protected by Divine Shield, Divine Protection or Hand of Protection again for 120 sec. Cannot be used within 30 sec. of using Avenging Wrath.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":39,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-fire-resistance-aura","name":"Fire Resistance Aura","iconBasename":"spell_fire_sealoffire","iconPath":"/assets/ui/spells/spell_fire_sealoffire.png","sourceUnlockLevel":36,"ranks":[{"spellId":19891,"rank":1,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Gives 30 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":19899,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Gives 45 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":19900,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives 60 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":27153,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Gives 70 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":48947,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Gives 130 additional Fire resistance to all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-wisdom","name":"Seal of Wisdom","iconBasename":"spell_holy_righteousnessaura","iconPath":"/assets/ui/spells/spell_holy_righteousnessaura.png","sourceUnlockLevel":38,"ranks":[{"spellId":20166,"rank":0,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Fills the Paladin with divine wisdom for 1800 sec, giving each melee attack a chance to restore 4% of the paladin's maximum mana. Only one Seal can be active on the Paladin at any one time. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":20168,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-charger","name":"Charger","iconBasename":"ability_mount_charger","iconPath":"/assets/ui/spells/ability_mount_charger.png","sourceUnlockLevel":40,"ranks":[{"spellId":23214,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Charger, which serves as a mount. This is a very fast mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14565,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-holy-shield","name":"Holy Shield","iconBasename":"spell_holy_blessingofprotection","iconPath":"/assets/ui/spells/spell_holy_blessingofprotection.png","sourceUnlockLevel":40,"talentNodeId":"talent-1430","ranks":[{"spellId":20925,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Increases chance to block by 30% for 10 sec and deals 79 Holy damage for each attack blocked while active. Each block expends a charge. the listed amount charges.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":43,"basePoints":79,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11699999868869781},{"index":2,"effectType":6,"auraType":189,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":27179,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Increases chance to block by 30% for 10 sec and deals 208 Holy damage for each attack blocked while active. Each block expends a charge. the listed amount charges.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":43,"basePoints":208,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11699999868869781},{"index":2,"effectType":6,"auraType":189,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":48951,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Increases chance to block by 30% for 10 sec and deals 235 Holy damage for each attack blocked while active. Each block expends a charge. the listed amount charges.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":43,"basePoints":235,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11699999868869781},{"index":2,"effectType":6,"auraType":189,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":48952,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Increases chance to block by 30% for 10 sec and deals 274 Holy damage for each attack blocked while active. Each block expends a charge. the listed amount charges.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":6,"auraType":51,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":43,"basePoints":274,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11699999868869781},{"index":2,"effectType":6,"auraType":189,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-holy-shock","name":"Holy Shock","iconBasename":"spell_holy_searinglight","iconPath":"/assets/ui/spells/spell_holy_searinglight.png","sourceUnlockLevel":40,"talentNodeId":"talent-1502","ranks":[{"spellId":20473,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 340 Holy damage to an enemy, or 519 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25912,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":47,"description":"Blasts the target with Holy energy, causing 340 Holy damage to an enemy, or 519 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":314,"dieSides":27,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25914,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":47,"description":"Blasts the target with Holy energy, causing 340 Holy damage to an enemy, or 519 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":481,"dieSides":39,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":20929,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 465 Holy damage to an enemy, or 696 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25911,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":55,"description":"Blasts the target with Holy energy, causing 465 Holy damage to an enemy, or 696 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":431,"dieSides":35,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25913,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":55,"description":"Blasts the target with Holy energy, causing 465 Holy damage to an enemy, or 696 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":644,"dieSides":53,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":20930,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 608 Holy damage to an enemy, or 915 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25902,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":63,"description":"Blasts the target with Holy energy, causing 608 Holy damage to an enemy, or 915 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":562,"dieSides":47,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25903,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":63,"description":"Blasts the target with Holy energy, causing 608 Holy damage to an enemy, or 915 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":845,"dieSides":71,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":27174,"rank":4,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 749 Holy damage to an enemy, or 1149 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27175,"rank":4,"level":64,"sourceLevel":64,"maxScalingLevel":69,"description":"Blasts the target with Holy energy, causing 749 Holy damage to an enemy, or 1149 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1061,"dieSides":89,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":27176,"rank":4,"level":64,"sourceLevel":64,"maxScalingLevel":69,"description":"Blasts the target with Holy energy, causing 749 Holy damage to an enemy, or 1149 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":693,"dieSides":57,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":33072,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 978 Holy damage to an enemy, or 1362 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":33073,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Blasts the target with Holy energy, causing 978 Holy damage to an enemy, or 1362 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":904,"dieSides":75,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":33074,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Blasts the target with Holy energy, causing 978 Holy damage to an enemy, or 1362 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1258,"dieSides":105,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48820,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Blasts the target with Holy energy, causing 1129 Holy damage to an enemy, or 2235 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2065,"dieSides":171,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48822,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Blasts the target with Holy energy, causing 1129 Holy damage to an enemy, or 2235 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1043,"dieSides":87,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48824,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1129 Holy damage to an enemy, or 2235 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48821,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Blasts the target with Holy energy, causing 1402 Holy damage to an enemy, or 2599 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2401,"dieSides":199,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48823,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Blasts the target with Holy energy, causing 1402 Holy damage to an enemy, or 2599 healing to an ally.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1296,"dieSides":107,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48825,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Blasts the target with Holy energy, causing 1402 Holy damage to an enemy, or 2599 healing to an ally.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":161,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-paladin-summon-charger","name":"Summon Charger","iconBasename":"ability_mount_charger","iconPath":"/assets/ui/spells/ability_mount_charger.png","sourceUnlockLevel":40,"ranks":[{"spellId":34767,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Charger, which serves as a mount. This is a very fast mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":20030,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-cleanse","name":"Cleanse","iconBasename":"spell_holy_renew","iconPath":"/assets/ui/spells/spell_holy_renew.png","sourceUnlockLevel":42,"ranks":[{"spellId":4987,"rank":0,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Cleanses a friendly target, removing 1 poison effect, 1 disease effect, and 1 magic effect.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hammer-of-wrath","name":"Hammer of Wrath","iconBasename":"ability_thunderclap","iconPath":"/assets/ui/spells/ability_thunderclap.png","sourceUnlockLevel":44,"ranks":[{"spellId":24275,"rank":1,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":351,"dieSides":37,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":24274,"rank":2,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":459,"dieSides":49,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":24239,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":570,"dieSides":59,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":27180,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":733,"dieSides":77,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48805,"rank":5,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":878,"dieSides":93,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48806,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Hurls a hammer that strikes an enemy for the listed amountthe listed amount to the listed amountthe listed amount Holy damage. Only usable on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1139,"dieSides":119,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]}]},{"id":"wow335-paladin-hand-of-sacrifice","name":"Hand of Sacrifice","iconBasename":"spell_holy_sealofsacrifice","iconPath":"/assets/ui/spells/spell_holy_sealofsacrifice.png","sourceUnlockLevel":46,"ranks":[{"spellId":6940,"rank":0,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Places a Hand on the party or raid member, transfering 30% damage taken to the caster. Lasts 12 sec or until the caster has transfered 100% of their maximum health. Players may only have one Hand on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":81,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-paladin-avenger-s-shield","name":"Avenger's Shield","iconBasename":"spell_holy_avengersshield","iconPath":"/assets/ui/spells/spell_holy_avengersshield.png","sourceUnlockLevel":50,"talentNodeId":"talent-1754","ranks":[{"spellId":31935,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":440,"dieSides":97,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":32699,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":601,"dieSides":133,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":32700,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":796,"dieSides":177,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48826,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":913,"dieSides":203,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48827,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Hurls a holy shield at the enemy, dealing the listed amountthe listed amount to the listed amountthe listed amount Holy damage, Dazing them and then jumping to additional nearby enemies. Affects the listed amount total targets. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1100,"dieSides":245,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09099999815225601},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-crusader-strike","name":"Crusader Strike","iconBasename":"spell_holy_crusaderstrike","iconPath":"/assets/ui/spells/spell_holy_crusaderstrike.png","sourceUnlockLevel":50,"talentNodeId":"talent-1823","ranks":[{"spellId":35395,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"An instant strike that causes 75% weapon damage.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":1,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-hammer-of-the-righteous","name":"Hammer of the Righteous","iconBasename":"ability_paladin_hammeroftherighteous","iconPath":"/assets/ui/spells/ability_paladin_hammeroftherighteous.png","sourceUnlockLevel":50,"talentNodeId":"talent-2196","ranks":[{"spellId":53595,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Hammer the current target and up to the listed amountthe listed amount additional nearby targets, causing 4 times your main hand damage per second as Holy damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-holy-wrath","name":"Holy Wrath","iconBasename":"spell_holy_excorcism","iconPath":"/assets/ui/spells/spell_holy_excorcism.png","sourceUnlockLevel":50,"ranks":[{"spellId":2812,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":54,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":399,"dieSides":73,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10318,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":551,"dieSides":99,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27139,"rank":3,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":777,"dieSides":137,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48816,"rank":4,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":857,"dieSides":151,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48817,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Sends bolts of holy power in all directions, causing the listed amountthe listed amount to the listed amountthe listed amount Holy damage and stunning all Undead and Demon targets within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1050,"dieSides":185,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.07000000029802322},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-greater-blessing-of-might","name":"Greater Blessing of Might","iconBasename":"spell_holy_greaterblessingofkings","iconPath":"/assets/ui/spells/spell_holy_greaterblessingofkings.png","sourceUnlockLevel":52,"ranks":[{"spellId":25782,"rank":1,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 185 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25916,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":60,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 232 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27141,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 306 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48933,"rank":4,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 410 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48934,"rank":5,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Might, increasing attack power by 550 for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":124,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-greater-blessing-of-wisdom","name":"Greater Blessing of Wisdom","iconBasename":"spell_holy_greaterblessingofwisdom","iconPath":"/assets/ui/spells/spell_holy_greaterblessingofwisdom.png","sourceUnlockLevel":54,"ranks":[{"spellId":25894,"rank":1,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 30 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25918,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 33 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27143,"rank":3,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 41 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48937,"rank":4,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 73 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":73,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48938,"rank":5,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Wisdom, restoring 92 mana every 5 seconds for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":85,"basePoints":92,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-storm","name":"Divine Storm","iconBasename":"ability_paladin_divinestorm","iconPath":"/assets/ui/spells/ability_paladin_divinestorm.png","sourceUnlockLevel":60,"talentNodeId":"talent-2150","ranks":[{"spellId":53385,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"An instant weapon attack that causes 110% of weapon damage to up to the listed amountthe listed amount enemies within the listed amount yards. The Divine Storm heals up to 3 party or raid members totaling 25% of the damage caused.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-greater-blessing-of-kings","name":"Greater Blessing of Kings","iconBasename":"spell_magic_greaterblessingofkings","iconPath":"/assets/ui/spells/spell_magic_greaterblessingofkings.png","sourceUnlockLevel":60,"ranks":[{"spellId":25898,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Kings, increasing total stats by 10% for 1800 sec. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":137,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":166,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-greater-blessing-of-sanctuary","name":"Greater Blessing of Sanctuary","iconBasename":"spell_holy_greaterblessingofsanctuary","iconPath":"/assets/ui/spells/spell_holy_greaterblessingofsanctuary.png","sourceUnlockLevel":60,"ranks":[{"spellId":25899,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives all members of the raid or group that share the same class with the target the Greater Blessing of Sanctuary, reducing damage taken from all sources by 3% for 1800 sec and increasing stamina by 10%. In addition, when the target blocks, parries, or dodges a melee attack the target will gain 2% of maximum displayed mana. Players may only have one Blessing on them per Paladin at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":61,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-light-s-beacon","name":"Light's Beacon","iconBasename":"ability_paladin_beaconoflight","iconPath":"/assets/ui/spells/ability_paladin_beaconoflight.png","sourceUnlockLevel":60,"ranks":[{"spellId":53651,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"The target becomes a Beacon of Light to all targets within a 60 yard radius. Any heals you cast on those targets will also heal the Beacon for 100% of the amount healed.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":2000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":14,"rangeMin":0,"rangeMax":60,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":60,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-crusader-aura","name":"Crusader Aura","iconBasename":"spell_holy_crusaderaura","iconPath":"/assets/ui/spells/spell_holy_crusaderaura.png","sourceUnlockLevel":62,"ranks":[{"spellId":32223,"rank":0,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Increases the mounted speed by 20% for all party and raid members within the listed amount yards. Players may only have one Aura on them per Paladin at any one time. This does not stack with other movement speed increasing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":172,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":65,"auraType":211,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":35,"auraType":210,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-blood","name":"Judgement of Blood","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":64,"ranks":[{"spellId":31898,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Unleashing this Seal's energy will judge an enemy, instantly causing Holy damage at the cost of health equal to 33% of the damage caused.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":26,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-vengeance","name":"Judgement of Vengeance","iconBasename":"spell_holy_sealofvengeance","iconPath":"/assets/ui/spells/spell_holy_sealofvengeance.png","sourceUnlockLevel":64,"ranks":[{"spellId":31804,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Deals the listed amountthe listed amount Holy damage to an enemy, increased by 10% for each application of Blood Corruption on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2199999988079071}]}]},{"id":"wow335-paladin-seal-of-vengeance","name":"Seal of Vengeance","iconBasename":"spell_holy_sealofvengeance","iconPath":"/assets/ui/spells/spell_holy_sealofvengeance.png","sourceUnlockLevel":64,"ranks":[{"spellId":31801,"rank":0,"level":64,"sourceLevel":64,"maxScalingLevel":68,"description":"Fills the Paladin with holy power, causing attacks to apply Holy Vengeance, which deals the listed amount(0.013*0PH+0.025*the listed amount)*5} additional Holy damage over 15 sec. Holy Vengeance can stack up to the listed amount times. Once stacked to the listed amount times, each of the Paladin's attacks also deals 33% weapon damage as additional Holy damage. Only one Seal can be active on the Paladin at any one time. Lasts 1800 sec. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy, increased by 10% for each application of Holy Vengeance on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":240,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":31804,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-judgement-of-corruption","name":"Judgement of Corruption","iconBasename":"spell_holy_sealofvengeance","iconPath":"/assets/ui/spells/spell_holy_sealofvengeance.png","sourceUnlockLevel":66,"ranks":[{"spellId":53733,"rank":1,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Deals the listed amountthe listed amount Holy damage to an enemy, increased by 10% for each application of Blood Corruption on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2199999988079071}]}]},{"id":"wow335-paladin-judgement-of-the-martyr","name":"Judgement of the Martyr","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":66,"ranks":[{"spellId":53726,"rank":1,"level":66,"sourceLevel":66,"maxScalingLevel":68,"description":"Unleashing this Seal's energy will judge an enemy, instantly causing Holy damage at the cost of health equal to 33% of the damage caused.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":26,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-seal-of-corruption","name":"Seal of Corruption","iconBasename":"spell_holy_sealofvengeance","iconPath":"/assets/ui/spells/spell_holy_sealofvengeance.png","sourceUnlockLevel":66,"ranks":[{"spellId":53736,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":68,"description":"Fills the Paladin with holy power, causing attacks to apply Blood Corruption, which deals the listed amount(0.013*0PH+0.025*the listed amount)*6} additional Holy damage over 15 sec. Once stacked to the listed amount times, each of the Paladins attacks also deals 33% weapon damage as additional Holy damage. Blood Corruption can stack up to the listed amount times. Only one Seal can be active on the Paladin at any one time. Lasts 1800 sec. Unleashing this Seal's energy will deal the listed amountthe listed amount Holy damage to an enemy, increased by 10% for each application of Blood Corruption on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":240,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":53733,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-avenging-wrath","name":"Avenging Wrath","iconBasename":"spell_holy_avenginewrath","iconPath":"/assets/ui/spells/spell_holy_avenginewrath.png","sourceUnlockLevel":70,"ranks":[{"spellId":31884,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Increases all damage and healing caused by 20% for 20 sec. Cannot be used within 30 sec of being the target of Divine Shield, Divine Protection, or Hand of Protection.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":136,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":108,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-divine-plea","name":"Divine Plea","iconBasename":"spell_holy_aspiration","iconPath":"/assets/ui/spells/spell_holy_aspiration.png","sourceUnlockLevel":71,"ranks":[{"spellId":54428,"rank":0,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"You gain the listed amount% of your total mana over 15 sec, but the amount healed by your Flash of Light, Holy Light, and Holy Shock spells is reduced by 50%.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":21,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-shield-of-righteousness","name":"Shield of Righteousness","iconBasename":"ability_paladin_shieldofvengeance","iconPath":"/assets/ui/spells/ability_paladin_shieldofvengeance.png","sourceUnlockLevel":75,"ranks":[{"spellId":53600,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Slam the target with your shield, causing Holy damage based on your block value plus an additional 390.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":390,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61411,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Slam the target with your shield, causing Holy damage based on your block value plus an additional 520.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":4,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":520,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-paladin-sacred-shield","name":"Sacred Shield","iconBasename":"ability_paladin_blessedmending","iconPath":"/assets/ui/spells/ability_paladin_blessedmending.png","sourceUnlockLevel":80,"ranks":[{"spellId":53601,"rank":1,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Each time the target takes damage they gain a Sacred Shield, absorbing 500 damage and increasing the paladin's chance to critically hit with Flash of Light by 50% for up to 6 sec. They cannot gain this effect more than once every 6 sec. Lasts 30 sec. This spell cannot be on more than one target at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":58597,"coefficient":0}]}]}],"hunter":[{"id":"wow335-hunter-auto-shot","name":"Auto Shot","iconBasename":"ability_whirlwind","iconPath":"/assets/ui/spells/ability_whirlwind.png","sourceUnlockLevel":1,"ranks":[{"spellId":75,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Automatically shoots the target until cancelled. Ranged attacks fired by a Hunter all have 15% increased attack speed.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-raptor-strike","name":"Raptor Strike","iconBasename":"ability_meleedamage","iconPath":"/assets/ui/spells/ability_meleedamage.png","sourceUnlockLevel":1,"ranks":[{"spellId":2973,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 5.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14260,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 11.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":11,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14261,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 21.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14262,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 34.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":34,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14263,"rank":5,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 50.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14264,"rank":6,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 80.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14265,"rank":7,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 110.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14266,"rank":8,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 140.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27014,"rank":9,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 170.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48995,"rank":10,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 275.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48996,"rank":11,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 335.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":335,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-readiness","name":"Readiness","iconBasename":"ability_hunter_readiness","iconPath":"/assets/ui/spells/ability_hunter_readiness.png","sourceUnlockLevel":1,"talentNodeId":"talent-1353","ranks":[{"spellId":23989,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, this ability immediately finishes the cooldown on your other Hunter abilities except Bestial Wrath.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-beasts","name":"Track Beasts","iconBasename":"ability_tracking","iconPath":"/assets/ui/spells/ability_tracking.png","sourceUnlockLevel":1,"ranks":[{"spellId":1494,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Shows the location of all nearby beasts on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-monkey","name":"Aspect of the Monkey","iconBasename":"ability_hunter_aspectofthemonkey","iconPath":"/assets/ui/spells/ability_hunter_aspectofthemonkey.png","sourceUnlockLevel":4,"ranks":[{"spellId":13163,"rank":0,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a monkey, increasing chance to dodge by 18%. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":49,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":60798,"coefficient":0}]}]},{"id":"wow335-hunter-serpent-sting","name":"Serpent Sting","iconBasename":"ability_hunter_quickshot","iconPath":"/assets/ui/spells/ability_hunter_quickshot.png","sourceUnlockLevel":4,"ranks":[{"spellId":1978,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13549,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":17,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13550,"rank":3,"level":18,"sourceLevel":18,"maxScalingLevel":25,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":16,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13551,"rank":4,"level":26,"sourceLevel":26,"maxScalingLevel":33,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":28,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13552,"rank":5,"level":34,"sourceLevel":34,"maxScalingLevel":41,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13553,"rank":6,"level":42,"sourceLevel":42,"maxScalingLevel":49,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":58,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13554,"rank":7,"level":50,"sourceLevel":50,"maxScalingLevel":57,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":77,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13555,"rank":8,"level":58,"sourceLevel":58,"maxScalingLevel":59,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":25295,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":111,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27016,"rank":10,"level":67,"sourceLevel":67,"maxScalingLevel":72,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":132,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":49000,"rank":11,"level":73,"sourceLevel":73,"maxScalingLevel":78,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":198,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":49001,"rank":12,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Stings the target, causing the listed amountthe listed amount Nature damage over 15 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":242,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-arcane-shot","name":"Arcane Shot","iconBasename":"ability_impalingbolt","iconPath":"/assets/ui/spells/ability_impalingbolt.png","sourceUnlockLevel":6,"ranks":[{"spellId":3044,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14281,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":19,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":23,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14282,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":27,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":36,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14283,"rank":4,"level":28,"sourceLevel":28,"maxScalingLevel":35,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14284,"rank":5,"level":36,"sourceLevel":36,"maxScalingLevel":43,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":91,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14285,"rank":6,"level":44,"sourceLevel":44,"maxScalingLevel":51,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14286,"rank":7,"level":52,"sourceLevel":52,"maxScalingLevel":59,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":158,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14287,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":67,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27019,"rank":9,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":273,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49044,"rank":10,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":402,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49045,"rank":11,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"An instant shot that causes the listed amountthe listed amount Arcane damage.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":492,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-hunter-s-mark","name":"Hunter's Mark","iconBasename":"ability_hunter_snipershot","iconPath":"/assets/ui/spells/ability_hunter_snipershot.png","sourceUnlockLevel":6,"ranks":[{"spellId":1130,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 20. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14323,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 45. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14324,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 75. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14325,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 110. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53338,"rank":5,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Places the Hunter's Mark on the target, increasing the ranged attack power of all attackers against that target by 500. In addition, the target of this ability can always be seen by the hunter whether it stealths or turns invisible. The target also appears on the mini-map. Lasts for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":68,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":127,"basePoints":500,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-concussive-shot","name":"Concussive Shot","iconBasename":"spell_frost_stun","iconPath":"/assets/ui/spells/spell_frost_stun.png","sourceUnlockLevel":8,"ranks":[{"spellId":5116,"rank":0,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Dazes the target, slowing movement speed by 50% for 4 sec.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-hawk","name":"Aspect of the Hawk","iconBasename":"spell_nature_ravenform","iconPath":"/assets/ui/spells/spell_nature_ravenform.png","sourceUnlockLevel":10,"ranks":[{"spellId":13165,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 20. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14318,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 35. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14319,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 50. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14320,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 70. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14321,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 90. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":14322,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 110. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":25296,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 120. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]},{"spellId":27044,"rank":8,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a hawk, increasing ranged attack power by 155. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":155,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0}]}]},{"id":"wow335-hunter-call-pet","name":"Call Pet","iconBasename":"ability_hunter_beastcall","iconPath":"/assets/ui/spells/ability_hunter_beastcall.png","sourceUnlockLevel":10,"ranks":[{"spellId":883,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Summons your pet to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-dismiss-pet","name":"Dismiss Pet","iconBasename":"spell_nature_spiritwolf","iconPath":"/assets/ui/spells/spell_nature_spiritwolf.png","sourceUnlockLevel":10,"ranks":[{"spellId":2641,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Dismiss your pet. Dismissing your pet will reduce its happiness by the listed amount","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":50000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":102,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":47531,"coefficient":0}]}]},{"id":"wow335-hunter-feed-pet","name":"Feed Pet","iconBasename":"ability_hunter_beasttraining","iconPath":"/assets/ui/spells/ability_hunter_beasttraining.png","sourceUnlockLevel":10,"ranks":[{"spellId":6991,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Feed your pet the selected item. Feeding your pet increases happiness. Using food close to the pet's level will have a better result.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":101,"auraType":0,"basePoints":35000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1539,"coefficient":0}]}]},{"id":"wow335-hunter-revive-pet","name":"Revive Pet","iconBasename":"ability_hunter_beastsoothe","iconPath":"/assets/ui/spells/ability_hunter_beastsoothe.png","sourceUnlockLevel":10,"ranks":[{"spellId":982,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Revive your pet, returning it to life with 15% of its base health.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":109,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-tame-beast","name":"Tame Beast","iconBasename":"ability_hunter_beasttaming","iconPath":"/assets/ui/spells/ability_hunter_beasttaming.png","sourceUnlockLevel":10,"ranks":[{"spellId":1515,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Begins taming a beast to be your companion. Your armor is reduced by 100% while you focus on taming the beast for 20 sec. If you lose the beast's attention for any reason, the taming process will fail. Once tamed, the beast will be very unhappy and disloyal. Try feeding the pet immediately to make it happy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":20000,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":20000,"miscValue":0,"triggerSpellId":13481,"coefficient":0},{"index":2,"effectType":6,"auraType":101,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":13481,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Begins taming a beast to be your companion. Your armor is reduced by 100% while you focus on taming the beast for 20 sec. If you lose the beast's attention for any reason, the taming process will fail. Once tamed, the beast will be very unhappy and disloyal. Try feeding the pet immediately to make it happy.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":55,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":77,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-track-humanoids","name":"Track Humanoids","iconBasename":"spell_holy_prayerofhealing","iconPath":"/assets/ui/spells/spell_holy_prayerofhealing.png","sourceUnlockLevel":10,"ranks":[{"spellId":19883,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Shows the location of all nearby humanoids on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-distracting-shot","name":"Distracting Shot","iconBasename":"spell_arcane_blink","iconPath":"/assets/ui/spells/spell_arcane_blink.png","sourceUnlockLevel":12,"ranks":[{"spellId":20736,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":19,"description":"Distracts the target to attack you, but has no effect if the target is already attacking you. Lasts 6 sec.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":11,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-mend-pet","name":"Mend Pet","iconBasename":"ability_hunter_mendpet","iconPath":"/assets/ui/spells/ability_hunter_mendpet.png","sourceUnlockLevel":12,"ranks":[{"spellId":136,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3111,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3661,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3662,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":13542,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":13543,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":280,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":13544,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":365,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27046,"rank":8,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":475,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48989,"rank":9,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":850,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48990,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Heals your pet for the listed amount health over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":1050,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-wing-clip","name":"Wing Clip","iconBasename":"ability_rogue_trip","iconPath":"/assets/ui/spells/ability_rogue_trip.png","sourceUnlockLevel":12,"ranks":[{"spellId":2974,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Maims the enemy, reducing the target's movement speed by 50% for 10 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-eagle-eye","name":"Eagle Eye","iconBasename":"ability_hunter_eagleeye","iconPath":"/assets/ui/spells/ability_hunter_eagleeye.png","sourceUnlockLevel":14,"ranks":[{"spellId":6197,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Zooms in the hunter's vision. Only usable outdoors. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":1,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":72,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-eyes-of-the-beast","name":"Eyes of the Beast","iconBasename":"ability_eyeoftheowl","iconPath":"/assets/ui/spells/ability_eyeoftheowl.png","sourceUnlockLevel":14,"ranks":[{"spellId":1002,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Take direct control of your pet and see through its eyes for 60 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":1,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":128,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":79,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-scare-beast","name":"Scare Beast","iconBasename":"ability_druid_cower","iconPath":"/assets/ui/spells/ability_druid_cower.png","sourceUnlockLevel":14,"ranks":[{"spellId":1513,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Scares a beast, causing it to run in fear for up to 10 sec. Damage caused may interrupt the effect. Only one beast can be feared at a time.","castTimeMs":1500,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14326,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Scares a beast, causing it to run in fear for up to 15 sec. Damage caused may interrupt the effect. Only one beast can be feared at a time.","castTimeMs":1500,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14327,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Scares a beast, causing it to run in fear for up to 20 sec. Damage caused may interrupt the effect. Only one beast can be feared at a time.","castTimeMs":1500,"cooldownMs":30000,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-scatter-shot","name":"Scatter Shot","iconBasename":"ability_golemstormbolt","iconPath":"/assets/ui/spells/ability_golemstormbolt.png","sourceUnlockLevel":15,"talentNodeId":"talent-1814","ranks":[{"spellId":19503,"rank":0,"level":15,"sourceLevel":15,"maxScalingLevel":0,"description":"A short-range shot that deals 50% weapon damage and disorients the target for 4 sec. Any damage caused will remove the effect. Turns off your attack when used.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":11,"rangeMin":0,"rangeMax":15,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":5,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":37506,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-cheetah","name":"Aspect of the Cheetah","iconBasename":"ability_mount_jungletiger","iconPath":"/assets/ui/spells/ability_mount_jungletiger.png","sourceUnlockLevel":16,"ranks":[{"spellId":5118,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a cheetah, increasing movement speed by 30%. If the hunter is struck, the listed amount will be dazed for 4 sec. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":15571,"coefficient":1}]}]},{"id":"wow335-hunter-immolation-trap","name":"Immolation Trap","iconBasename":"spell_fire_flameshock","iconPath":"/assets/ui/spells/spell_fire_flameshock.png","sourceUnlockLevel":16,"ranks":[{"spellId":13795,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":22,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164638,"triggerSpellId":0,"coefficient":0}]},{"spellId":13797,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":22,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14298,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time..","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14302,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164872,"triggerSpellId":0,"coefficient":0}]},{"spellId":14299,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":68,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14303,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164873,"triggerSpellId":0,"coefficient":0}]},{"spellId":14300,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":52,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":102,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14304,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":52,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164874,"triggerSpellId":0,"coefficient":0}]},{"spellId":14301,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":138,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14305,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164875,"triggerSpellId":0,"coefficient":0}]},{"spellId":27023,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":181030,"triggerSpellId":0,"coefficient":0}]},{"spellId":27024,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":197,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49053,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":308,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49055,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":189318,"triggerSpellId":0,"coefficient":0}]},{"spellId":49054,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":377,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49056,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Place a fire trap that will burn the first enemy to approach for the listed amountthe listed amount Fire damage over 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":189319,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-mongoose-bite","name":"Mongoose Bite","iconBasename":"ability_hunter_swiftstrike","iconPath":"/assets/ui/spells/ability_hunter_swiftstrike.png","sourceUnlockLevel":16,"ranks":[{"spellId":1495,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14269,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14270,"rank":3,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14271,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":36916,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":53339,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Attack the enemy for the listed amountthe listed amount damage.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":280,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-multi-shot","name":"Multi-Shot","iconBasename":"ability_upgrademoonglaive","iconPath":"/assets/ui/spells/ability_upgrademoonglaive.png","sourceUnlockLevel":18,"ranks":[{"spellId":2643,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14288,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 40 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14289,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 80 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":14290,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 120 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25294,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 150 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27021,"rank":6,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 205 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":205,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":49047,"rank":7,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 333 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":333,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":49048,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Fires several missiles, hitting the listed amount targets for an additional 408 damage.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":408,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-undead","name":"Track Undead","iconBasename":"spell_shadow_darksummoning","iconPath":"/assets/ui/spells/spell_shadow_darksummoning.png","sourceUnlockLevel":18,"ranks":[{"spellId":19884,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Shows the location of all nearby undead on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aimed-shot","name":"Aimed Shot","iconBasename":"inv_spear_07","iconPath":"/assets/ui/spells/inv_spear_07.png","sourceUnlockLevel":20,"talentNodeId":"talent-1345","ranks":[{"spellId":19434,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"An aimed shot that increases ranged damage by 5 and reduces healing done to that target by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27065,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"An aimed shot that increases ranged damage by 205 and reduces healing done to that target by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":205,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":49049,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"An aimed shot that increases ranged damage by 345 and reduces healing done to that target by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":345,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":49050,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"An aimed shot that increases ranged damage by 408 and reduces healing done to that target by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":408,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":118,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-viper","name":"Aspect of the Viper","iconBasename":"ability_hunter_aspectoftheviper","iconPath":"/assets/ui/spells/ability_hunter_aspectoftheviper.png","sourceUnlockLevel":20,"ranks":[{"spellId":34074,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"The hunter takes on the aspect of the viper, causing ranged and melee attacks to regenerate mana but reducing your total damage done by 50%. In addition, you gain 4% of maximum mana every 3 sec. Mana gained is based on the speed of your ranged weapon. Requires a ranged weapon. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":21,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":79,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-disengage","name":"Disengage","iconBasename":"ability_rogue_feint","iconPath":"/assets/ui/spells/ability_rogue_feint.png","sourceUnlockLevel":20,"ranks":[{"spellId":781,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"You attempt to disengage from combat, leaping backwards. Can only be used while in combat.","castTimeMs":0,"cooldownMs":25000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-freezing-trap","name":"Freezing Trap","iconBasename":"spell_frost_chainsofice","iconPath":"/assets/ui/spells/spell_frost_chainsofice.png","sourceUnlockLevel":20,"ranks":[{"spellId":1499,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Place a frost trap that freezes the first enemy that approaches, preventing all action for up to 10 sec. Any damage caused will break the ice. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":2561,"triggerSpellId":0,"coefficient":1}]},{"spellId":14310,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Place a frost trap that freezes the first enemy that approaches, preventing all action for up to 15 sec. Any damage caused will break the ice. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164876,"triggerSpellId":0,"coefficient":1}]},{"spellId":14311,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Place a frost trap that freezes the first enemy that approaches, preventing all action for up to 20 sec. Any damage caused will break the ice. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164877,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-scorpid-sting","name":"Scorpid Sting","iconBasename":"ability_hunter_criticalshot","iconPath":"/assets/ui/spells/ability_hunter_criticalshot.png","sourceUnlockLevel":22,"ranks":[{"spellId":3043,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Stings the target, reducing chance to hit with melee and ranged attacks by 3% for 20 sec. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-beast-lore","name":"Beast Lore","iconBasename":"ability_physical_taunt","iconPath":"/assets/ui/spells/ability_physical_taunt.png","sourceUnlockLevel":24,"ranks":[{"spellId":1462,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Gather information about the target beast. The tooltip will display damage, health, armor, any special resistances, and diet. In addition, Beast Lore will reveal whether or not the creature is tameable and what abilities the tamed creature has.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":121,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-hidden","name":"Track Hidden","iconBasename":"ability_stealth","iconPath":"/assets/ui/spells/ability_stealth.png","sourceUnlockLevel":24,"ranks":[{"spellId":19885,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Greatly increases stealth detection and shows hidden units within detection range on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":151,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":17,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-rapid-fire","name":"Rapid Fire","iconBasename":"ability_hunter_runningshot","iconPath":"/assets/ui/spells/ability_hunter_runningshot.png","sourceUnlockLevel":26,"ranks":[{"spellId":3045,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Increases ranged attack speed by 40% for 15 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":140,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-track-elementals","name":"Track Elementals","iconBasename":"spell_frost_summonwaterelemental","iconPath":"/assets/ui/spells/spell_frost_summonwaterelemental.png","sourceUnlockLevel":26,"ranks":[{"spellId":19880,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Shows the location of all nearby elementals on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-frost-trap","name":"Frost Trap","iconBasename":"spell_frost_freezingbreath","iconPath":"/assets/ui/spells/spell_frost_freezingbreath.png","sourceUnlockLevel":28,"ranks":[{"spellId":13809,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Place a frost trap that creates an ice slick around itself for 30 sec when the first enemy approaches it. All enemies within the listed amount yards will be slowed by 50% while in the area of effect. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164639,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-aspect-of-the-beast","name":"Aspect of the Beast","iconBasename":"ability_mount_pinktiger","iconPath":"/assets/ui/spells/ability_mount_pinktiger.png","sourceUnlockLevel":30,"ranks":[{"spellId":13161,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a beast, becoming untrackable and increasing melee attack power of the hunter and the hunter's pet by 10%. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":120,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":166,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-counterattack","name":"Counterattack","iconBasename":"ability_warrior_challange","iconPath":"/assets/ui/spells/ability_warrior_challange.png","sourceUnlockLevel":30,"talentNodeId":"talent-1312","ranks":[{"spellId":19306,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":48,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20909,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":84,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":20910,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":132,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27067,"rank":4,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":196,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48998,"rank":5,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":288,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48999,"rank":6,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals the listed amountthe listed amount damage and immobilizes the target for 5 sec. Counterattack cannot be blocked, dodged, or parried.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":342,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-feign-death","name":"Feign Death","iconBasename":"ability_rogue_feigndeath","iconPath":"/assets/ui/spells/ability_rogue_feigndeath.png","sourceUnlockLevel":30,"ranks":[{"spellId":5384,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Feign death which may trick enemies into ignoring you. Lasts up to 360 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":360000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":66,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-intimidation","name":"Intimidation","iconBasename":"ability_devour","iconPath":"/assets/ui/spells/ability_devour.png","sourceUnlockLevel":30,"talentNodeId":"talent-1387","ranks":[{"spellId":19577,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Command your pet to intimidate the target on the next successful melee attack, causing a high amount of threat and stunning the target for 3 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":24394,"coefficient":0}]}]},{"id":"wow335-hunter-silencing-shot","name":"Silencing Shot","iconBasename":"ability_theblackarrow","iconPath":"/assets/ui/spells/ability_theblackarrow.png","sourceUnlockLevel":30,"talentNodeId":"talent-1808","ranks":[{"spellId":34490,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"A shot that deals 50% weapon damage and Silences the target for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":27,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":9,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-flare","name":"Flare","iconBasename":"spell_fire_flare","iconPath":"/assets/ui/spells/spell_fire_flare.png","sourceUnlockLevel":32,"ranks":[{"spellId":1543,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Exposes all hidden and invisible enemies within the listed amount yards of the targeted area for 20 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":41,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":41,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":6,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-track-demons","name":"Track Demons","iconBasename":"spell_shadow_summonfelhunter","iconPath":"/assets/ui/spells/spell_shadow_summonfelhunter.png","sourceUnlockLevel":32,"ranks":[{"spellId":19878,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Shows the location of all nearby demons on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-explosive-trap","name":"Explosive Trap","iconBasename":"spell_fire_selfdestruct","iconPath":"/assets/ui/spells/spell_fire_selfdestruct.png","sourceUnlockLevel":34,"ranks":[{"spellId":13813,"rank":1,"level":34,"sourceLevel":34,"maxScalingLevel":40,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 20 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164839,"triggerSpellId":0,"coefficient":0}]},{"spellId":14316,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":50,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 20 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164879,"triggerSpellId":0,"coefficient":0}]},{"spellId":14317,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":60,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 20 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":164880,"triggerSpellId":0,"coefficient":0}]},{"spellId":27025,"rank":4,"level":61,"sourceLevel":61,"maxScalingLevel":67,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 20 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":181031,"triggerSpellId":0,"coefficient":0}]},{"spellId":49066,"rank":5,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 20 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":189321,"triggerSpellId":0,"coefficient":0}]},{"spellId":49067,"rank":6,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"Place a fire trap that explodes when an enemy approaches, causing the listed amountthe listed amount to the listed amountthe listed amount Fire damage and burning all enemies for the listed amount additional Fire damage over 20 sec to all within the listed amount yards. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":105,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":189322,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-viper-sting","name":"Viper Sting","iconBasename":"ability_hunter_aimedshot","iconPath":"/assets/ui/spells/ability_hunter_aimedshot.png","sourceUnlockLevel":36,"ranks":[{"spellId":3034,"rank":0,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Stings the target, draining the listed amount% mana over 8 sec (up to a maximum of the listed amount% of the caster's maximum mana), and energizing the Hunter equal to 300% of the amount drained. Only one Sting per Hunter can be active on any one target.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":64,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-pack","name":"Aspect of the Pack","iconBasename":"ability_mount_whitetiger","iconPath":"/assets/ui/spells/ability_mount_whitetiger.png","sourceUnlockLevel":40,"ranks":[{"spellId":13159,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"The hunter and raid members within the listed amount yards take on the aspects of a pack of cheetahs, increasing movement speed by 30%. If you are struck under the effect of this aspect, you will be dazed for 4 sec. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":31,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":65,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":15571,"coefficient":0}]}]},{"id":"wow335-hunter-bestial-wrath","name":"Bestial Wrath","iconBasename":"ability_druid_ferociousbite","iconPath":"/assets/ui/spells/ability_druid_ferociousbite.png","sourceUnlockLevel":40,"talentNodeId":"talent-1386","ranks":[{"spellId":19574,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Send your pet into a rage causing 50% additional damage for 18 sec. While enraged, the beast does not feel pity or remorse or fear and it cannot be stopped unless killed.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":61,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":79,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-giants","name":"Track Giants","iconBasename":"ability_racial_avatar","iconPath":"/assets/ui/spells/ability_racial_avatar.png","sourceUnlockLevel":40,"ranks":[{"spellId":19882,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Shows the location of all nearby giants on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-trueshot-aura","name":"Trueshot Aura","iconBasename":"ability_trueshot","iconPath":"/assets/ui/spells/ability_trueshot.png","sourceUnlockLevel":40,"talentNodeId":"talent-1361","ranks":[{"spellId":19506,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Increases the attack power of party and raid members within the listed amount yards by 10%. Lasts 0.001 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":167,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":45,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":65,"auraType":166,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":45,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-volley","name":"Volley","iconBasename":"ability_marksmanship","iconPath":"/assets/ui/spells/ability_marksmanship.png","sourceUnlockLevel":40,"ranks":[{"spellId":1510,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 52 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42243,"coefficient":0}]},{"spellId":42243,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 52 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":52,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14294,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 79 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42244,"coefficient":0}]},{"spellId":42244,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 79 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":79,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14295,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 105 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42245,"coefficient":0}]},{"spellId":42245,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 105 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27022,"rank":4,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 168 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42234,"coefficient":0}]},{"spellId":42234,"rank":4,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Continuously fires a volley of ammo at the target area, causing 168 Arcane damage to enemy targets within the listed amount yards every second for 6 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":168,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-wyvern-sting","name":"Wyvern Sting","iconBasename":"inv_spear_02","iconPath":"/assets/ui/spells/inv_spear_02.png","sourceUnlockLevel":40,"talentNodeId":"talent-1325","ranks":[{"spellId":19386,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24131,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24132,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24134,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24133,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24135,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27068,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27069,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":314,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49009,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":694,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49011,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49010,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":820,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.16699999570846558},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49012,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A stinging shot that puts the target to sleep for 30 sec. Any damage will cancel the effect. When the target wakes up, the Sting causes the listed amount Nature damage over 6 sec. Only one Sting per Hunter can be active on the target at a time.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":10,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-wild","name":"Aspect of the Wild","iconBasename":"spell_nature_protectionformnature","iconPath":"/assets/ui/spells/spell_nature_protectionformnature.png","sourceUnlockLevel":46,"ranks":[{"spellId":20043,"rank":1,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"The hunter, group and raid members within the listed amount yards take on the aspect of the wild, increasing Nature resistance by 45. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]},{"spellId":20190,"rank":2,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"The hunter, group and raid members within the listed amount yards take on the aspect of the wild, increasing Nature resistance by 60. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]},{"spellId":27045,"rank":3,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"The hunter, group and raid members within the listed amount yards take on the aspect of the wild, increasing Nature resistance by 70. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]},{"spellId":49071,"rank":4,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"The hunter, group and raid members within the listed amount yards take on the aspect of the wild, increasing Nature resistance by 130. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":65,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-black-arrow","name":"Black Arrow","iconBasename":"spell_shadow_painspike","iconPath":"/assets/ui/spells/spell_shadow_painspike.png","sourceUnlockLevel":50,"talentNodeId":"talent-1322","ranks":[{"spellId":3674,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":157,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63668,"rank":2,"level":57,"sourceLevel":57,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":188,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63669,"rank":3,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":241,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63670,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":296,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63671,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":448,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":63672,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Fires a Black Arrow at the target, increasing all damage done by you to the target by 6% and dealing the listed amountthe listed amount Shadow damage over 15 sec. Black Arrow shares a cooldown with Trap spells.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":553,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":271,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-steady-shot","name":"Steady Shot","iconBasename":"ability_hunter_steadyshot","iconPath":"/assets/ui/spells/ability_hunter_steadyshot.png","sourceUnlockLevel":50,"ranks":[{"spellId":56641,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A steady shot that causes unmodified weapon damage, plus ammo, plus the listed amountthe listed amount Causes an additional 175 against Dazed targets.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":175,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49051,"rank":3,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"A steady shot that causes unmodified weapon damage, plus ammo, plus the listed amountthe listed amount Causes an additional 175 against Dazed targets.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":198,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":175,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49052,"rank":4,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"A steady shot that causes unmodified weapon damage, plus ammo, plus the listed amountthe listed amount Causes an additional 175 against Dazed targets.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":252,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":175,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-the-beast-within","name":"The Beast Within","iconBasename":"ability_hunter_beastwithin","iconPath":"/assets/ui/spells/ability_hunter_beastwithin.png","sourceUnlockLevel":50,"passive":true,"ranks":[{"spellId":34471,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"When your pet is under the effects of Bestial Wrath, you also go into a rage causing 10% additional damage and reducing mana costs of all spells by 20% for 18 sec. While enraged, you do not feel pity or remorse or fear and you cannot be stopped unless killed.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":72,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":79,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-track-dragonkin","name":"Track Dragonkin","iconBasename":"inv_misc_head_dragon_01","iconPath":"/assets/ui/spells/inv_misc_head_dragon_01.png","sourceUnlockLevel":50,"ranks":[{"spellId":19879,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Shows the location of all nearby dragonkin on the minimap. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":168,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-chimera-shot","name":"Chimera Shot","iconBasename":"ability_hunter_chimerashot2","iconPath":"/assets/ui/spells/ability_hunter_chimerashot2.png","sourceUnlockLevel":60,"talentNodeId":"talent-2135","ranks":[{"spellId":53209,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"You deal 125% weapon damage, refreshing the current Sting on your target and triggering an effect: Serpent Sting - Instantly deals 40% of the damage done by your Serpent Sting. Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting. Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":121,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-explosive-shot","name":"Explosive Shot","iconBasename":"ability_hunter_explosiveshot","iconPath":"/assets/ui/spells/ability_hunter_explosiveshot.png","sourceUnlockLevel":60,"talentNodeId":"talent-2145","ranks":[{"spellId":53301,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"You fire an explosive charge into the enemy target, dealing the listed amountthe listed amountthe listed amountthe listed amount Fire damage. The charge will blast the target every second for an additional 2 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":2000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":226,"basePoints":144,"dieSides":29,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-tranquilizing-shot","name":"Tranquilizing Shot","iconBasename":"spell_nature_drowsy","iconPath":"/assets/ui/spells/spell_nature_drowsy.png","sourceUnlockLevel":60,"ranks":[{"spellId":19801,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Attempts to remove 1 Enrage and 1 Magic effect from an enemy target.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":114,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":9,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-kill-command","name":"Kill Command","iconBasename":"ability_hunter_killcommand","iconPath":"/assets/ui/spells/ability_hunter_killcommand.png","sourceUnlockLevel":66,"ranks":[{"spellId":34026,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Give the command to kill, increasing your pet's damage done from special attacks by the listed amount% for 30 sec. Each special attack done by the pet reduces the damage bonus by 20%.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-snake-trap","name":"Snake Trap","iconBasename":"ability_hunter_snaketrap","iconPath":"/assets/ui/spells/ability_hunter_snaketrap.png","sourceUnlockLevel":68,"ranks":[{"spellId":34600,"rank":0,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Place a trap that will release several venomous snakes to attack the first enemy to approach. The snakes will die after 15 sec. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":106,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":183957,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-hunter-misdirection","name":"Misdirection","iconBasename":"ability_hunter_misdirection","iconPath":"/assets/ui/spells/ability_hunter_misdirection.png","sourceUnlockLevel":70,"ranks":[{"spellId":34477,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Threat caused by your next the listed amount attacks is redirected to the target raid member. Caster and target can only be affected by one Misdirection spell at a time. Effect lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":35079,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":130,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-aspect-of-the-dragonhawk","name":"Aspect of the Dragonhawk","iconBasename":"ability_hunter_pet_dragonhawk","iconPath":"/assets/ui/spells/ability_hunter_pet_dragonhawk.png","sourceUnlockLevel":74,"ranks":[{"spellId":61846,"rank":1,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a dragonhawk, increasing ranged attack power by 230 and chance to dodge by 18%. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":230,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61847,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"The hunter takes on the aspects of a dragonhawk, increasing ranged attack power by 300 and chance to dodge by 18%. Only one Aspect can be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":124,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6150,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-kill-shot","name":"Kill Shot","iconBasename":"ability_hunter_assassinate2","iconPath":"/assets/ui/spells/ability_hunter_assassinate2.png","sourceUnlockLevel":75,"ranks":[{"spellId":61005,"rank":2,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"You attempt to finish the wounded target off, firing a long range attack dealing 200% weapon damage plus the listed amountthe listed amount Kill Shot can only be used on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":155,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":17,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61006,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"You attempt to finish the wounded target off, firing a long range attack dealing 200% weapon damage plus the listed amountthe listed amount Kill Shot can only be used on enemies that have 20% or less health.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":155,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":17,"auraType":0,"basePoints":325,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-call-stabled-pet","name":"Call Stabled Pet","iconBasename":"inv_box_petcarrier_01","iconPath":"/assets/ui/spells/inv_box_petcarrier_01.png","sourceUnlockLevel":80,"ranks":[{"spellId":62757,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Choose one of your stabled pets to replace your current pet. The selected pet busts out of its stable to join you no matter where you are. Cannot be used in combat.","castTimeMs":0,"cooldownMs":1800000,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":292,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-hunter-freezing-arrow","name":"Freezing Arrow","iconBasename":"spell_frost_chillingbolt","iconPath":"/assets/ui/spells/spell_frost_chillingbolt.png","sourceUnlockLevel":80,"ranks":[{"spellId":60192,"rank":1,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Fire a freezing arrow that places a Freezing Trap at the target location, freezing the first enemy that approaches, preventing all action for up to 20 sec. Any damage caused will break the ice. Trap will exist for 30 sec. Only one trap can be active at a time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":32,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":0,"triggerSpellId":60202,"coefficient":0}]}]}],"rogue":[{"id":"wow335-rogue-adrenaline-rush","name":"Adrenaline Rush","iconBasename":"spell_shadow_shadowworddominate","iconPath":"/assets/ui/spells/spell_shadow_shadowworddominate.png","sourceUnlockLevel":1,"talentNodeId":"talent-205","ranks":[{"spellId":13750,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Increases your Energy regeneration rate by 100% for 15 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":110,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-blade-flurry","name":"Blade Flurry","iconBasename":"ability_warrior_punishingblow","iconPath":"/assets/ui/spells/ability_warrior_punishingblow.png","sourceUnlockLevel":1,"talentNodeId":"talent-223","ranks":[{"spellId":13877,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Increases your attack speed by 20%. In addition, attacks strike an additional nearby opponent. Lasts 15 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-cold-blood","name":"Cold Blood","iconBasename":"spell_ice_lament","iconPath":"/assets/ui/spells/spell_ice_lament.png","sourceUnlockLevel":1,"talentNodeId":"talent-280","ranks":[{"spellId":14177,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, increases the critical strike chance of your next offensive ability by 100%.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-eviscerate","name":"Eviscerate","iconBasename":"ability_rogue_eviscerate","iconPath":"/assets/ui/spells/ability_rogue_eviscerate.png","sourceUnlockLevel":1,"ranks":[{"spellId":2098,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":5,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6760,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":3,"dieSides":9,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6761,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":6,"dieSides":15,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6762,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":10,"dieSides":21,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8623,"rank":5,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":15,"dieSides":31,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8624,"rank":6,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":22,"dieSides":45,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11299,"rank":7,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":34,"dieSides":69,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11300,"rank":8,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":48,"dieSides":97,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":31016,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":54,"dieSides":109,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26865,"rank":10,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":60,"dieSides":121,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48667,"rank":11,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":104,"dieSides":209,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48668,"rank":12,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point: 1 point : the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amountthe listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":127,"dieSides":255,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-ghostly-strike","name":"Ghostly Strike","iconBasename":"spell_shadow_curse","iconPath":"/assets/ui/spells/spell_shadow_curse.png","sourceUnlockLevel":1,"talentNodeId":"talent-303","ranks":[{"spellId":14278,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"A strike that deals 125% weapon damage and increases your chance to dodge by 15% for 7 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":20000,"gcdMs":1000,"durationMs":7000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":49,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-hunger-for-blood","name":"Hunger For Blood","iconBasename":"ability_rogue_hungerforblood","iconPath":"/assets/ui/spells/ability_rogue_hungerforblood.png","sourceUnlockLevel":1,"talentNodeId":"talent-2071","ranks":[{"spellId":51662,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Enrages you, increasing all damage caused by 15%. Requires a bleed effect to be active on the target. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":15,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-killing-spree","name":"Killing Spree","iconBasename":"ability_rogue_murderspree","iconPath":"/assets/ui/spells/ability_rogue_murderspree.png","sourceUnlockLevel":1,"talentNodeId":"talent-2076","ranks":[{"spellId":51690,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Step through the shadows from enemy to enemy within 10 yards, attacking an enemy every .5 secs with both weapons until 5 assaults are made, and increasing all damage done by 20% for the duration. Can hit the same target multiple times. Cannot hit invisible or stealthed targets.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1000,"durationMs":2000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":226,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":500,"miscValue":3,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":263,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-preparation","name":"Preparation","iconBasename":"spell_shadow_antishadow","iconPath":"/assets/ui/spells/spell_shadow_antishadow.png","sourceUnlockLevel":1,"talentNodeId":"talent-284","ranks":[{"spellId":14185,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, this ability immediately finishes the cooldown on your Evasion, Sprint, Vanish, Cold Blood and Shadowstep abilities.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-riposte","name":"Riposte","iconBasename":"ability_warrior_challange","iconPath":"/assets/ui/spells/ability_warrior_challange.png","sourceUnlockLevel":1,"talentNodeId":"talent-301","ranks":[{"spellId":14251,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"A strike that becomes active after parrying an opponent's attack. This attack deals 150% weapon damage and slows their melee attack speed by 20% for 30 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1000,"durationMs":30000,"channelDurationMs":0,"powerType":3,"powerCost":10,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-shadowstep","name":"Shadowstep","iconBasename":"ability_rogue_shadowstep","iconPath":"/assets/ui/spells/ability_rogue_shadowstep.png","sourceUnlockLevel":1,"talentNodeId":"talent-1714","ranks":[{"spellId":36554,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Attempts to step through the shadows and reappear behind your enemy and increases movement speed by 70% for 3 sec. The damage of your next ability is increased by 20% and the threat caused is reduced by 50%. Lasts 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":10,"powerCostPercentage":0,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36563,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":44373,"coefficient":0},{"index":2,"effectType":6,"auraType":31,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-sinister-strike","name":"Sinister Strike","iconBasename":"spell_shadow_ritualofsacrifice","iconPath":"/assets/ui/spells/spell_shadow_ritualofsacrifice.png","sourceUnlockLevel":1,"ranks":[{"spellId":1752,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"An instant strike that causes 3 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1757,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"An instant strike that causes 6 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1758,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"An instant strike that causes 10 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1759,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"An instant strike that causes 15 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1760,"rank":5,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"An instant strike that causes 22 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":22,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8621,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"An instant strike that causes 33 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11293,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"An instant strike that causes 52 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":52,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11294,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"An instant strike that causes 68 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":68,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26861,"rank":9,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"An instant strike that causes 80 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26862,"rank":10,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"An instant strike that causes 98 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48637,"rank":11,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"An instant strike that causes 150 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48638,"rank":12,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"An instant strike that causes 180 damage in addition to your normal weapon damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":180,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-stealth","name":"Stealth","iconBasename":"ability_stealth","iconPath":"/assets/ui/spells/ability_stealth.png","sourceUnlockLevel":1,"ranks":[{"spellId":1784,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":19,"description":"Allows the rogue to sneak around, but reduces your speed by 50%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":16,"basePoints":5,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1785,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":39,"description":"Allows the rogue to sneak around, but reduces your speed by 40%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":16,"basePoints":100,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1786,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":59,"description":"Allows the rogue to sneak around, but reduces your speed by 35%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":16,"basePoints":200,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1787,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Allows the rogue to sneak around, but reduces your speed by 30%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":16,"basePoints":300,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-backstab","name":"Backstab","iconBasename":"ability_backstab","iconPath":"/assets/ui/spells/ability_backstab.png","sourceUnlockLevel":4,"ranks":[{"spellId":53,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2589,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2590,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2591,"rank":4,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":46,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8721,"rank":5,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11279,"rank":6,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11280,"rank":7,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11281,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25300,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26863,"rank":10,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48656,"rank":11,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":255,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48657,"rank":12,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Backstab the target, causing 150% weapon damage plus the listed amount to the target. Must be behind the target. Requires a dagger in the main hand. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":310,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-pick-pocket","name":"Pick Pocket","iconBasename":"inv_misc_bag_11","iconPath":"/assets/ui/spells/inv_misc_bag_11.png","sourceUnlockLevel":4,"ranks":[{"spellId":921,"rank":0,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Pick the target's pocket.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":71,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-gouge","name":"Gouge","iconBasename":"ability_gouge","iconPath":"/assets/ui/spells/ability_gouge.png","sourceUnlockLevel":6,"ranks":[{"spellId":1776,"rank":0,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Causes the listed amountthe listed amount damage, incapacitating the opponent for 4 sec, and turns off your attack. Target must be facing you. Any damage caused will revive the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":4000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":14,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-evasion","name":"Evasion","iconBasename":"spell_shadow_shadowward","iconPath":"/assets/ui/spells/spell_shadow_shadowward.png","sourceUnlockLevel":8,"ranks":[{"spellId":5277,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"The rogue's dodge chance will increase by 50% for 15 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":49,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26669,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Increases the rogue's dodge chance by 50% and reduces the chance ranged attacks hit the rogue by 25%. Lasts 15 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":49,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":185,"basePoints":-25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-sap","name":"Sap","iconBasename":"ability_sap","iconPath":"/assets/ui/spells/ability_sap.png","sourceUnlockLevel":10,"ranks":[{"spellId":6770,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Incapacitates the target for up to 25 sec. Must be stealthed. Only works on Humanoids that are not in combat. Any damage caused will revive the target. Only 1 target may be sapped at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":25000,"channelDurationMs":0,"powerType":3,"powerCost":65,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2070,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Incapacitates the target for up to 35 sec. Must be stealthed. Only works on Humanoids that are not in combat. Any damage caused will revive the target. Only 1 target may be sapped at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":35000,"channelDurationMs":0,"powerType":3,"powerCost":65,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11297,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Incapacitates the target for up to 45 sec. Must be stealthed. Only works on Humanoids that are not in combat. Any damage caused will revive the target. Only 1 target may be sapped at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":45000,"channelDurationMs":0,"powerType":3,"powerCost":65,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":51724,"rank":4,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Incapacitates the target for up to 60 sec. Must be stealthed. Only works on Humanoids, Beasts, Demons and Dragonkin that are not in combat. Any damage caused will revive the target. Only 1 target may be sapped at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":3,"powerCost":65,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-slice-and-dice","name":"Slice and Dice","iconBasename":"ability_rogue_slicedice","iconPath":"/assets/ui/spells/ability_rogue_slicedice.png","sourceUnlockLevel":10,"ranks":[{"spellId":5171,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Finishing move that increases melee attack speed by 20%. Lasts longer per combo point: 1 point : 9 seconds 2 points: 12 seconds 3 points: 15 seconds 4 points: 18 seconds 5 points: 21 seconds","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":138,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6774,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Finishing move that increases melee attack speed by 40%. Lasts longer per combo point: 1 point : 9 seconds 2 points: 12 seconds 3 points: 15 seconds 4 points: 18 seconds 5 points: 21 seconds","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":138,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-sprint","name":"Sprint","iconBasename":"ability_rogue_sprint","iconPath":"/assets/ui/spells/ability_rogue_sprint.png","sourceUnlockLevel":10,"ranks":[{"spellId":2983,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Increases the rogue's movement speed by 50% for 15 sec. Does not break stealth.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8696,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Increases the rogue's movement speed by 60% for 15 sec. Does not break stealth.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11305,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Increases the rogue's movement speed by 70% for 15 sec. Does not break stealth.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-kick","name":"Kick","iconBasename":"ability_kick","iconPath":"/assets/ui/spells/ability_kick.png","sourceUnlockLevel":12,"ranks":[{"spellId":1766,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"A quick kick that interrupts spellcasting and prevents any spell in that school from being cast for 5 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":5000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-expose-armor","name":"Expose Armor","iconBasename":"ability_warrior_riposte","iconPath":"/assets/ui/spells/ability_warrior_riposte.png","sourceUnlockLevel":14,"ranks":[{"spellId":8647,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Finishing move that exposes the target, reducing armor by 20% and lasting longer per combo point: 1 point : 6 sec. 2 points: 12 sec. 3 points: 18 sec. 4 points: 24 sec. 5 points: 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":30000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":101,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-garrote","name":"Garrote","iconBasename":"ability_rogue_garrote","iconPath":"/assets/ui/spells/ability_rogue_garrote.png","sourceUnlockLevel":14,"ranks":[{"spellId":703,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(20+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8631,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(27+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8632,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(37+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8633,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(45+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11289,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(57+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":57,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11290,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Garrote the enemy, causing the listed amount(71+the listed amount)*6} damage over 18 sec, increased by your attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":71,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26839,"rank":7,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Garrote the enemy, silencing them for 3 sec and causing the listed amount(85+the listed amount)*6} damage over 18 sec, increased by attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1330,"coefficient":0}]},{"spellId":26884,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Garrote the enemy, silencing them for 3 sec causing the listed amount(102+the listed amount)*6} damage over 18 sec, increased by attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":102,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1330,"coefficient":0}]},{"spellId":48675,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Garrote the enemy, silencing them for 3 sec causing the listed amount(110+the listed amount)*6} damage over 18 sec, increased by attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1330,"coefficient":0}]},{"spellId":48676,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Garrote the enemy, silencing them for 3 sec causing the listed amount(119+the listed amount)*6} damage over 18 sec, increased by attack power. Must be stealthed and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":18000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":119,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1330,"coefficient":0}]}]},{"id":"wow335-rogue-feint","name":"Feint","iconBasename":"ability_rogue_feint","iconPath":"/assets/ui/spells/ability_rogue_feint.png","sourceUnlockLevel":16,"ranks":[{"spellId":1966,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":26,"description":"Performs a feint, causing no damage but lowering your threat by a small amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-150,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6768,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":38,"description":"Performs a feint, causing no damage but lowering your threat by a medium amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-240,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8637,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":50,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-390,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11303,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":62,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-600,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25302,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-800,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27448,"rank":6,"level":64,"sourceLevel":64,"maxScalingLevel":70,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-1050,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48658,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-1765,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48659,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Performs a feint, causing no damage but lowering your threat by a large amount, making the enemy less likely to attack you. In addition, reduces the damage you take from area of effect attacks by 50% for 6 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-2162,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":229,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-ambush","name":"Ambush","iconBasename":"ability_rogue_ambush","iconPath":"/assets/ui/spells/ability_rogue_ambush.png","sourceUnlockLevel":18,"ranks":[{"spellId":8676,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":28,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8724,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8725,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11267,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":74,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11268,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":92,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11269,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":116,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27441,"rank":7,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":134,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48689,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":185,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48690,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":280,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48691,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Ambush the target, causing 275% weapon damage plus the listed amount to the target. Must be stealthed and behind the target. Requires a dagger in the main hand. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":330,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-dismantle","name":"Dismantle","iconBasename":"ability_rogue_dismantle","iconPath":"/assets/ui/spells/ability_rogue_dismantle.png","sourceUnlockLevel":20,"ranks":[{"spellId":51722,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Disarm the enemy, removing all weapons, shield or other equipment carried for 10 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1000,"durationMs":10000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":278,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":254,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":67,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-premeditation","name":"Premeditation","iconBasename":"spell_shadow_possession","iconPath":"/assets/ui/spells/spell_shadow_possession.png","sourceUnlockLevel":20,"talentNodeId":"talent-381","ranks":[{"spellId":14183,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"When used, adds 2 combo points to your target. You must add to or use those combo points within 20 sec or the combo points are lost.","castTimeMs":0,"cooldownMs":20000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":148,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-rupture","name":"Rupture","iconBasename":"ability_rogue_rupture","iconPath":"/assets/ui/spells/ability_rogue_rupture.png","sourceUnlockLevel":20,"ranks":[{"spellId":1943,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(8+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(8+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(8+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(8+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(8+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8639,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(12+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(12+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(12+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(12+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8640,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(18+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(18+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(18+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(18+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(18+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11273,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(27+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(27+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(27+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(27+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(27+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11274,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(37+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(37+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(37+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(37+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(37+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11275,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(60+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(60+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(60+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(60+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(60+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26867,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(70+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(70+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(70+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(70+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(70+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48671,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(107+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(107+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(107+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(107+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(107+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":107,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48672,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Finishing move that causes damage over time, increased by your attack power. Lasts longer per combo point: 1 point : the listed amount(127+the listed amountthe listed amount)*4} damage over 8 secs 2 points: the listed amount(127+the listed amountthe listed amount)*5} damage over 10 secs 3 points: the listed amount(127+the listed amountthe listed amount)*6} damage over 12 secs 4 points: the listed amount(127+the listed amountthe listed amount)*7} damage over 14 secs 5 points: the listed amount(127+the listed amountthe listed amount)*8} damage over 16 secs","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":16000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":127,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-distract","name":"Distract","iconBasename":"ability_rogue_distract","iconPath":"/assets/ui/spells/ability_rogue_distract.png","sourceUnlockLevel":22,"ranks":[{"spellId":1725,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Throws a distraction, attracting the attention of all nearby monsters for 10 seconds. Does not break stealth.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":69,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-vanish","name":"Vanish","iconBasename":"ability_vanish","iconPath":"/assets/ui/spells/ability_vanish.png","sourceUnlockLevel":22,"ranks":[{"spellId":1856,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":41,"description":"Allows the rogue to vanish from sight, entering an improved stealth mode for 10 sec. Also breaks movement impairing effects.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":11327,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":18461,"coefficient":0},{"index":2,"effectType":79,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1857,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":61,"description":"Allows the rogue to vanish from sight, entering an improved stealth mode for 10 sec. Also breaks movement impairing effects. More effective than Vanish (Rank 1).","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":11329,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":18461,"coefficient":0},{"index":2,"effectType":79,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26889,"rank":3,"level":62,"sourceLevel":62,"maxScalingLevel":81,"description":"Allows the rogue to vanish from sight, entering an improved stealth mode for 10 sec. Also breaks movement impairing effects. More effective than Vanish (Rank 2).","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26888,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":18461,"coefficient":0},{"index":2,"effectType":79,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-cheap-shot","name":"Cheap Shot","iconBasename":"ability_cheapshot","iconPath":"/assets/ui/spells/ability_cheapshot.png","sourceUnlockLevel":26,"ranks":[{"spellId":1833,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Stuns the target for 4 sec. Must be stealthed. Awards 2 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":4000,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-disarm-trap","name":"Disarm Trap","iconBasename":"spell_shadow_grimward","iconPath":"/assets/ui/spells/spell_shadow_grimward.png","sourceUnlockLevel":30,"ranks":[{"spellId":1842,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Disarm a hostile trap.","castTimeMs":1000,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":33,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":23,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-hemorrhage","name":"Hemorrhage","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":30,"talentNodeId":"talent-681","ranks":[{"spellId":16511,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 13. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":17347,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 21. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":17348,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 29. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":26864,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 42. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":48660,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"An instant strike that deals 110% weapon damage and causes the target to hemorrhage, increasing any Physical damage dealt to the target by up to 75. Lasts the listed amount charges or 15 sec. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":14,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-kidney-shot","name":"Kidney Shot","iconBasename":"ability_rogue_kidneyshot","iconPath":"/assets/ui/spells/ability_rogue_kidneyshot.png","sourceUnlockLevel":30,"ranks":[{"spellId":408,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Finishing move that stuns the target. Lasts longer per combo point: 1 point : 1 second 2 points: 2 seconds 3 points: 3 seconds 4 points: 4 seconds 5 points: 5 seconds","castTimeMs":0,"cooldownMs":20000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8643,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Finishing move that stuns the target. Lasts longer per combo point: 1 point : 2 seconds 2 points: 3 seconds 3 points: 4 seconds 4 points: 5 seconds 5 points: 6 seconds","castTimeMs":0,"cooldownMs":20000,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-blind","name":"Blind","iconBasename":"spell_shadow_mindsteal","iconPath":"/assets/ui/spells/spell_shadow_mindsteal.png","sourceUnlockLevel":34,"ranks":[{"spellId":2094,"rank":0,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Blinds the target, causing it to wander disoriented for up to 10 sec. Any damage caused will remove the effect.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1000,"durationMs":10000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":5,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-mutilate","name":"Mutilate","iconBasename":"ability_rogue_shadowstrikes","iconPath":"/assets/ui/spells/ability_rogue_shadowstrikes.png","sourceUnlockLevel":40,"talentNodeId":"talent-1719","ranks":[{"spellId":1329,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 44 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":5374,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":27576,"coefficient":1}]},{"spellId":34411,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 63 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34414,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34415,"coefficient":1}]},{"spellId":34412,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 88 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34416,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34417,"coefficient":1}]},{"spellId":34413,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 101 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34419,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34418,"coefficient":1}]},{"spellId":48663,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 153 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48662,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48661,"coefficient":1}]},{"spellId":48666,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Instantly attacks with both weapons for an additional 181 with each weapon. Damage is increased by 20% against Poisoned targets. Awards 2 combo points.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":80,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48665,"coefficient":1},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48664,"coefficient":1}]}]},{"id":"wow335-rogue-shadow-dance","name":"Shadow Dance","iconBasename":"ability_rogue_shadowdance","iconPath":"/assets/ui/spells/ability_rogue_shadowdance.png","sourceUnlockLevel":60,"talentNodeId":"talent-2081","ranks":[{"spellId":51713,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Enter the Shadow Dance for 6 sec, allowing the use of Sap, Garrote, Ambush, Cheap Shot, Premeditation, Pickpocket and Disarm Trap regardless of being stealthed.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":275,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":13,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-envenom","name":"Envenom","iconBasename":"ability_rogue_disembowel","iconPath":"/assets/ui/spells/ability_rogue_disembowel.png","sourceUnlockLevel":62,"ranks":[{"spellId":32645,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":68,"description":"Finishing move that consumes your Deadly Poison doses on the target and deals instant poison damage. Following the Envenom attack you have an additional 15% chance to apply Deadly Poison and a 75% increased frequency of applying Instant Poison for 1 sec plus an additional 1 sec per combo point. One dose is consumed for each combo point: 1 dose: the listed amountthe listed amount damage 2 doses: the listed amountthe listed amount damage 3 doses: the listed amountthe listed amount damage 4 doses: the listed amountthe listed amount damage 5 doses: the listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":118,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":26,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":107,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]},{"spellId":32684,"rank":2,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Finishing move that consumes your Deadly Poison doses on the target and deals instant poison damage. Following the Envenom attack you have an additional 15% chance to apply Deadly Poison and a 75% increased frequency of applying Instant Poison for 1 sec plus an additional 1 sec per combo point. One dose is consumed for each combo point: 1 dose: the listed amountthe listed amount damage 2 doses: the listed amountthe listed amount damage 3 doses: the listed amountthe listed amount damage 4 doses: the listed amountthe listed amount damage 5 doses: the listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":148,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":26,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":107,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]},{"spellId":57992,"rank":3,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Finishing move that consumes your Deadly Poison doses on the target and deals instant poison damage. Following the Envenom attack you have an additional 15% chance to apply Deadly Poison and a 75% increased frequency of applying Instant Poison for 1 sec plus an additional 1 sec per combo point. One dose is consumed for each combo point: 1 dose: the listed amountthe listed amount damage 2 doses: the listed amountthe listed amount damage 3 doses: the listed amountthe listed amount damage 4 doses: the listed amountthe listed amount damage 5 doses: the listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":176,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":26,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":107,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]},{"spellId":57993,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Finishing move that consumes your Deadly Poison doses on the target and deals instant poison damage. Following the Envenom attack you have an additional 15% chance to apply Deadly Poison and a 75% increased frequency of applying Instant Poison for 1 sec plus an additional 1 sec per combo point. One dose is consumed for each combo point: 1 dose: the listed amountthe listed amount damage 2 doses: the listed amountthe listed amount damage 3 doses: the listed amountthe listed amount damage 4 doses: the listed amountthe listed amount damage 5 doses: the listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":216,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":26,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":107,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":18,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-deadly-throw","name":"Deadly Throw","iconBasename":"inv_throwingknife_06","iconPath":"/assets/ui/spells/inv_throwingknife_06.png","sourceUnlockLevel":64,"ranks":[{"spellId":26679,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Finishing move that reduces the movement of the target by 50% for 6 sec and causes increased thrown weapon damage: 1 point : the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":74,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":59,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48673,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Finishing move that reduces the movement of the target by 50% for 6 sec and causes increased thrown weapon damage: 1 point : the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":74,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":81,"dieSides":23,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48674,"rank":3,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Finishing move that reduces the movement of the target by 50% for 6 sec and causes increased thrown weapon damage: 1 point : the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 2 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 3 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 4 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage 5 points: the listed amount(the listed amount)+the listed amount - the listed amount(the listed amount)+the listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":74,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":126,"dieSides":37,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-cloak-of-shadows","name":"Cloak of Shadows","iconBasename":"spell_shadow_nethercloak","iconPath":"/assets/ui/spells/spell_shadow_nethercloak.png","sourceUnlockLevel":66,"ranks":[{"spellId":31224,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Instantly removes all existing harmful spell effects and increases your chance to resist all spells by 90% for 5 sec. Does not remove effects that prevent you from using Cloak of Shadows.","castTimeMs":0,"cooldownMs":90000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":186,"basePoints":-90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":35729,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-shiv","name":"Shiv","iconBasename":"inv_throwingknife_04","iconPath":"/assets/ui/spells/inv_throwingknife_04.png","sourceUnlockLevel":70,"ranks":[{"spellId":5938,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Performs an instant off-hand weapon attack that automatically applies the poison from your off-hand weapon to the target. Slower weapons require more Energy. Neither Shiv nor the poison it applies can be a critical strike. Awards 1 combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-rogue-tricks-of-the-trade","name":"Tricks of the Trade","iconBasename":"ability_rogue_tricksofthetrade","iconPath":"/assets/ui/spells/ability_rogue_tricksofthetrade.png","sourceUnlockLevel":75,"ranks":[{"spellId":57933,"rank":0,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"The current party or raid member becomes the target of your Tricks of the Trade. The threat caused by your next attack and all actions taken for 6 sec afterwards will be transferred to the target. In addition, all damage caused by the target is increased by 15% during this time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":57934,"rank":0,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"The current party or raid member becomes the target of your Tricks of the Trade. The threat caused by your next damaging attack and all actions taken for 6 sec afterwards will be transferred to the target. In addition, all damage caused by the target is increased by 15% during this time.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":30000,"channelDurationMs":0,"powerType":3,"powerCost":15,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":130,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-rogue-fan-of-knives","name":"Fan of Knives","iconBasename":"ability_rogue_fanofknives","iconPath":"/assets/ui/spells/ability_rogue_fanofknives.png","sourceUnlockLevel":80,"ranks":[{"spellId":51723,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Instantly throw both weapons at all targets within the listed amount yards, causing the listed amount% weapon damage with daggers, and 100% weapon damage with all other weapons.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}],"priest":[{"id":"wow335-priest-inner-focus","name":"Inner Focus","iconBasename":"spell_frost_windwalkon","iconPath":"/assets/ui/spells/spell_frost_windwalkon.png","sourceUnlockLevel":1,"talentNodeId":"talent-348","ranks":[{"spellId":14751,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When activated, reduces the mana cost of your next spell by 100% and increases its critical effect chance by 25% if it is capable of a critical effect.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":107,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-lesser-heal","name":"Lesser Heal","iconBasename":"spell_holy_lesserheal","iconPath":"/assets/ui/spells/spell_holy_lesserheal.png","sourceUnlockLevel":1,"ranks":[{"spellId":2050,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":3,"description":"Heal your target for 56.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":46,"dieSides":11,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.23100000619888306}]},{"spellId":2052,"rank":2,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Heal your target for 85.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":71,"dieSides":15,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4309999942779541}]},{"spellId":2053,"rank":3,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Heal your target for 157.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":135,"dieSides":23,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8389999866485596}]}]},{"id":"wow335-priest-pain-suppression","name":"Pain Suppression","iconBasename":"spell_holy_painsupression","iconPath":"/assets/ui/spells/spell_holy_painsupression.png","sourceUnlockLevel":1,"talentNodeId":"talent-1774","ranks":[{"spellId":33206,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Instantly reduces a friendly target's threat by 5%, reduces all damage taken by 40% and increases resistance to Dispel mechanics by 65% for 8 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":87,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":235,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-power-word-fortitude","name":"Power Word: Fortitude","iconBasename":"spell_holy_wordfortitude","iconPath":"/assets/ui/spells/spell_holy_wordfortitude.png","sourceUnlockLevel":1,"ranks":[{"spellId":1243,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":10,"description":"Power infuses the target, increasing their Stamina by 3 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":1244,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":22,"description":"Power infuses the target, increasing their Stamina by 8 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":1245,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":34,"description":"Power infuses the target, increasing their Stamina by 20 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":2791,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":46,"description":"Power infuses the target, increasing their Stamina by 32 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":10937,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":58,"description":"Power infuses the target, increasing their Stamina by 43 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":10938,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Power infuses the target, increasing their Stamina by 54 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":25389,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Power infuses the target increasing their Stamina by 79 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":79,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":48161,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Power infuses the target increasing their Stamina by 165 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-psychic-horror","name":"Psychic Horror","iconBasename":"spell_shadow_psychichorrors","iconPath":"/assets/ui/spells/spell_shadow_psychichorrors.png","sourceUnlockLevel":1,"talentNodeId":"talent-1908","ranks":[{"spellId":64044,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"You terrify the target, causing them to tremble in horror for 3 sec and drop their main hand and ranged weapons for 10 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":64058,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-shadowform","name":"Shadowform","iconBasename":"spell_shadow_shadowform","iconPath":"/assets/ui/spells/spell_shadow_shadowform.png","sourceUnlockLevel":1,"talentNodeId":"talent-521","ranks":[{"spellId":15473,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Assume a Shadowform, increasing your Shadow damage by 15%, reducing all damage done to you by 15% and threat generated by 30%. However, you may not cast Holy spells while in this form except Cure Disease and Abolish Disease. Grants the periodic damage from your Shadow Word: Pain, Devouring Plague, and Vampiric Touch spells the ability to critically hit for 100% increased damage.","castTimeMs":0,"cooldownMs":1500,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":28,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":79,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":-15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-silence","name":"Silence","iconBasename":"spell_shadow_impphaseshift","iconPath":"/assets/ui/spells/spell_shadow_impphaseshift.png","sourceUnlockLevel":1,"talentNodeId":"talent-541","ranks":[{"spellId":15487,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Silences the target, preventing them from casting spells for 5 sec.","castTimeMs":0,"cooldownMs":45000,"gcdMs":0,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":225,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":27,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-smite","name":"Smite","iconBasename":"spell_holy_holysmite","iconPath":"/assets/ui/spells/spell_holy_holysmite.png","sourceUnlockLevel":1,"ranks":[{"spellId":585,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":6,"description":"Smite an enemy for 17 Holy damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":13,"dieSides":5,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.12300000339746475}]},{"spellId":591,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Smite an enemy for 31 Holy damage.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":25,"dieSides":7,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2709999978542328}]},{"spellId":598,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Smite an enemy for 62 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":54,"dieSides":9,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5540000200271606}]},{"spellId":984,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Smite an enemy for 105 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":91,"dieSides":15,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":1004,"rank":5,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Smite an enemy for 170 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":150,"dieSides":21,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":6060,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Smite an enemy for 240 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":212,"dieSides":29,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":10933,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Smite an enemy for 323 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":287,"dieSides":37,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":10934,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Smite an enemy for 415 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":371,"dieSides":45,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":25363,"rank":9,"level":61,"sourceLevel":61,"maxScalingLevel":66,"description":"Smite an enemy for 453 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":405,"dieSides":49,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":25364,"rank":10,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Smite an enemy for 611 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":545,"dieSides":67,"pointsPerLevel":4.099999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":48122,"rank":11,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Smite an enemy for 676 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":604,"dieSides":73,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":48123,"rank":12,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Smite an enemy for 793 Holy damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":707,"dieSides":87,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]}]},{"id":"wow335-priest-vampiric-embrace","name":"Vampiric Embrace","iconBasename":"spell_shadow_unsummonbuilding","iconPath":"/assets/ui/spells/spell_shadow_unsummonbuilding.png","sourceUnlockLevel":1,"talentNodeId":"talent-484","ranks":[{"spellId":15286,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Afflicts your target with Shadow energy that causes you to be healed for 15% and other party members to be healed for the listed amount% of any Shadow spell damage you deal for 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-priest-vampiric-touch","name":"Vampiric Touch","iconBasename":"spell_holy_stoicism","iconPath":"/assets/ui/spells/spell_holy_stoicism.png","sourceUnlockLevel":1,"talentNodeId":"talent-1779","ranks":[{"spellId":34914,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":34916,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":34917,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48159,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":147,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48160,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Causes the listed amount Shadow damage over 15 sec to your target and causes up to 10 party or raid members to gain 1% of their maximum mana per 5 sec when you deal damage from Mind Blast. In addition, if the Vampiric Touch is dispelled it will cause the listed amount damage to the afflicted target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":2,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":34919,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Causes Shadow damage to your target and causes all party members to gain mana equal to a percentage of any Shadow spell damage you deal.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":30,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-shadow-word-pain","name":"Shadow Word: Pain","iconBasename":"spell_shadow_shadowwordpain","iconPath":"/assets/ui/spells/spell_shadow_shadowwordpain.png","sourceUnlockLevel":4,"ranks":[{"spellId":589,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":594,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":17,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":970,"rank":3,"level":18,"sourceLevel":18,"maxScalingLevel":25,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":992,"rank":4,"level":26,"sourceLevel":26,"maxScalingLevel":33,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2767,"rank":5,"level":34,"sourceLevel":34,"maxScalingLevel":41,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10892,"rank":6,"level":42,"sourceLevel":42,"maxScalingLevel":49,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":77,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10893,"rank":7,"level":50,"sourceLevel":50,"maxScalingLevel":57,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":101,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10894,"rank":8,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":128,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25367,"rank":9,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":151,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25368,"rank":10,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":186,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48124,"rank":11,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":196,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48125,"rank":12,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"A word of darkness that causes the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":230,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-power-word-shield","name":"Power Word: Shield","iconBasename":"spell_holy_powerwordshield","iconPath":"/assets/ui/spells/spell_holy_powerwordshield.png","sourceUnlockLevel":6,"ranks":[{"spellId":17,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Draws on the soul of the party member to shield them, absorbing 44 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":44,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":592,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":17,"description":"Draws on the soul of the party member to shield them, absorbing 88 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":88,"dieSides":1,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":600,"rank":3,"level":18,"sourceLevel":18,"maxScalingLevel":23,"description":"Draws on the soul of the party member to shield them, absorbing 158 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":158,"dieSides":1,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":3747,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Draws on the soul of the party member to shield them, absorbing 234 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":234,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":6065,"rank":5,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Draws on the soul of the party member to shield them, absorbing 301 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":301,"dieSides":1,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":6066,"rank":6,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Draws on the soul of the party member to shield them, absorbing 381 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":381,"dieSides":1,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10898,"rank":7,"level":42,"sourceLevel":42,"maxScalingLevel":47,"description":"Draws on the soul of the party member to shield them, absorbing 484 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":484,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10899,"rank":8,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Draws on the soul of the party member to shield them, absorbing 605 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":605,"dieSides":1,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10900,"rank":9,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Draws on the soul of the party member to shield them, absorbing 763 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":763,"dieSides":1,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10901,"rank":10,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Draws on the soul of the party member to shield them, absorbing 942 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":942,"dieSides":1,"pointsPerLevel":4.300000190734863,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":25217,"rank":11,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Draws on the soul of the party member to shield them, absorbing 1125 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1125,"dieSides":1,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":25218,"rank":12,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Draws on the soul of the party member to shield them, absorbing 1265 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1265,"dieSides":1,"pointsPerLevel":5.099999904632568,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":48065,"rank":13,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Draws on the soul of the party member to shield them, absorbing 1920 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1920,"dieSides":1,"pointsPerLevel":7.699999809265137,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":48066,"rank":14,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Draws on the soul of the party member to shield them, absorbing 2230 damage. Lasts 30 sec. While the shield holds, spellcasting will not be interrupted by damage. Once shielded, the target cannot be shielded again for 15 sec.","castTimeMs":0,"cooldownMs":4000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":2230,"dieSides":1,"pointsPerLevel":9,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-fade","name":"Fade","iconBasename":"spell_magic_lesserinvisibilty","iconPath":"/assets/ui/spells/spell_magic_lesserinvisibilty.png","sourceUnlockLevel":8,"ranks":[{"spellId":586,"rank":0,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Fade out, temporarily reducing all your threat for 10 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":103,"basePoints":-90000000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-renew","name":"Renew","iconBasename":"spell_holy_renew","iconPath":"/assets/ui/spells/spell_holy_renew.png","sourceUnlockLevel":8,"ranks":[{"spellId":139,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":13,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.2070000022649765},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6074,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.29100000858306885},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6075,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":22,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":124,"triggerSpellId":0,"coefficient":0}]},{"spellId":6076,"rank":4,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":49,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6077,"rank":5,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":63,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6078,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10927,"rank":7,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":102,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10928,"rank":8,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10929,"rank":9,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":162,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25315,"rank":10,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":194,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25221,"rank":11,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":202,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25222,"rank":12,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":222,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48067,"rank":13,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":247,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48068,"rank":14,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":280,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-holy-concentration","name":"Holy Concentration","iconBasename":"spell_holy_fanaticism","iconPath":"/assets/ui/spells/spell_holy_fanaticism.png","sourceUnlockLevel":10,"passive":true,"ranks":[{"spellId":34754,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Your mana regeneration from spirit is increased by 16% for 8 sec after you critically heal with Flash Heal, Greater Heal, Binding Heal or Empowered Renew.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":110,"basePoints":16,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mind-blast","name":"Mind Blast","iconBasename":"spell_shadow_unholyfrenzy","iconPath":"/assets/ui/spells/spell_shadow_unholyfrenzy.png","sourceUnlockLevel":10,"ranks":[{"spellId":8092,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Blasts the target for 43 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":39,"dieSides":5,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2680000066757202}]},{"spellId":8102,"rank":2,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Blasts the target for 78 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":72,"dieSides":7,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.36399999260902405}]},{"spellId":8103,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Blasts the target for 120 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":112,"dieSides":9,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8104,"rank":4,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Blasts the target for 177 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":167,"dieSides":11,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8105,"rank":5,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Blasts the target for 231 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":217,"dieSides":15,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8106,"rank":6,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Blasts the target for 297 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":279,"dieSides":19,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10945,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Blasts the target for 366 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":346,"dieSides":21,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10946,"rank":8,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Blasts the target for 449 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":425,"dieSides":25,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10947,"rank":9,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Blasts the target for 531 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":503,"dieSides":29,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25372,"rank":10,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Blasts the target for 587 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":557,"dieSides":31,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":25375,"rank":11,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Blasts the target for 748 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":708,"dieSides":41,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48126,"rank":12,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Blasts the target for 883 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":837,"dieSides":47,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48127,"rank":13,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Blasts the target for 1048 Shadow damage.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":992,"dieSides":57,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-priest-resurrection","name":"Resurrection","iconBasename":"spell_holy_resurrection","iconPath":"/assets/ui/spells/spell_holy_resurrection.png","sourceUnlockLevel":10,"ranks":[{"spellId":2006,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Brings a dead player back to life with 70 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":135,"triggerSpellId":0,"coefficient":1}]},{"spellId":2010,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Brings a dead player back to life with 160 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":160,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":1}]},{"spellId":10880,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Brings a dead player back to life with 300 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":520,"triggerSpellId":0,"coefficient":1}]},{"spellId":10881,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Brings a dead player back to life with 500 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":500,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":750,"triggerSpellId":0,"coefficient":1}]},{"spellId":20770,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Brings a dead player back to life with 750 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1000,"triggerSpellId":0,"coefficient":1}]},{"spellId":25435,"rank":6,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Brings a dead player back to life with 1100 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1150,"triggerSpellId":0,"coefficient":1}]},{"spellId":48171,"rank":7,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Brings a dead player back to life with 2200 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":60,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":2200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1650,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-priest-inner-fire","name":"Inner Fire","iconBasename":"spell_holy_innerfire","iconPath":"/assets/ui/spells/spell_holy_innerfire.png","sourceUnlockLevel":12,"ranks":[{"spellId":588,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 315. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":315,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":7128,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 495. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":495,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":602,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 720. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":720,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":1006,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 945. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":945,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10951,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 1170. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":10952,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 1395. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1395,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":25431,"rank":7,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 1580. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1580,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":48040,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 1800 and spell power by 95. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":135,"basePoints":95,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":95,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":48168,"rank":9,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"A burst of Holy energy fills the caster, increasing armor by 2440 and spell power by 120. Each melee or ranged damage hit against the priest will remove one charge. Lasts 1800 sec or until the listed amount charges are used.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":2440,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":135,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-cure-disease","name":"Cure Disease","iconBasename":"spell_holy_nullifydisease","iconPath":"/assets/ui/spells/spell_holy_nullifydisease.png","sourceUnlockLevel":14,"ranks":[{"spellId":528,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Removes 1 the listed amount from the friendly target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-psychic-scream","name":"Psychic Scream","iconBasename":"spell_shadow_psychicscream","iconPath":"/assets/ui/spells/spell_shadow_psychicscream.png","sourceUnlockLevel":14,"ranks":[{"spellId":8122,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"The caster lets out a psychic scream, causing the listed amount enemies within the listed amount yards to flee for 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8124,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"The caster lets out a psychic scream, causing the listed amount enemies within the listed amount yards to flee for 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":10888,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"The caster lets out a psychic scream, causing the listed amount enemies within the listed amount yards to flee for 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":10890,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"The caster lets out a psychic scream, causing the listed amount enemies within the listed amount yards to flee for 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-priest-heal","name":"Heal","iconBasename":"spell_holy_heal","iconPath":"/assets/ui/spells/spell_holy_heal.png","sourceUnlockLevel":16,"ranks":[{"spellId":2054,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Heal your target for 341.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":295,"dieSides":47,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.371000051498413}]},{"spellId":2055,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Heal your target for 491.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":429,"dieSides":63,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":6063,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Heal your target for 642.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":566,"dieSides":77,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":6064,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Heal your target for 804.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":712,"dieSides":93,"pointsPerLevel":4.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]}]},{"id":"wow335-priest-dispel-magic","name":"Dispel Magic","iconBasename":"spell_holy_dispelmagic","iconPath":"/assets/ui/spells/spell_holy_dispelmagic.png","sourceUnlockLevel":18,"ranks":[{"spellId":527,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Dispels magic on the target, removing 1 harmful the listed amount from a friend or 1 beneficial the listed amount from an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":160,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":988,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Dispels magic on the target, removing 2 harmful the listed amount from a friend or 2 beneficial the listed amount from an enemy.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":160,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-desperate-prayer","name":"Desperate Prayer","iconBasename":"spell_holy_restoration","iconPath":"/assets/ui/spells/spell_holy_restoration.png","sourceUnlockLevel":20,"talentNodeId":"talent-442","ranks":[{"spellId":19236,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":26,"description":"Instantly heals the caster for 325.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":263,"dieSides":63,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19238,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Instantly heals the caster for 543.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":447,"dieSides":97,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19240,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":40,"description":"Instantly heals the caster for 708.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":588,"dieSides":121,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19241,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Instantly heals the caster for 994.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":834,"dieSides":161,"pointsPerLevel":6.400000095367432,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19242,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Instantly heals the caster for 1305.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1101,"dieSides":205,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":19243,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Instantly heals the caster for 1562.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1324,"dieSides":239,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":25437,"rank":7,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Instantly heals the caster for 1887.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1601,"dieSides":287,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48172,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Instantly heals the caster for 3669.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3111,"dieSides":559,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48173,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Instantly heals the caster for 4384.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3716,"dieSides":669,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]}]},{"id":"wow335-priest-devouring-plague","name":"Devouring Plague","iconBasename":"spell_shadow_devouringplague","iconPath":"/assets/ui/spells/spell_shadow_devouringplague.png","sourceUnlockLevel":20,"ranks":[{"spellId":2944,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":19,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19276,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":34,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19277,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19278,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":68,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19279,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":89,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":19280,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":113,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":25467,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":136,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":48299,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":143,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]},{"spellId":48300,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Afflicts the target with a disease that causes the listed amount Shadow damage over 24 sec. 15% of damage caused by the Devouring Plague heals the caster. This spell can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":172,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.1850000023841858}]}]},{"id":"wow335-priest-fear-ward","name":"Fear Ward","iconBasename":"spell_holy_excorcism","iconPath":"/assets/ui/spells/spell_holy_excorcism.png","sourceUnlockLevel":20,"ranks":[{"spellId":6346,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Wards the friendly target against Fear. The next Fear effect used against the target will fail, using up the ward. Lasts 180 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-flash-heal","name":"Flash Heal","iconBasename":"spell_holy_flashheal","iconPath":"/assets/ui/spells/spell_holy_flashheal.png","sourceUnlockLevel":20,"ranks":[{"spellId":2061,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals a friendly target for 237.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":193,"dieSides":45,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":9472,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Heals a friendly target for 314.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":258,"dieSides":57,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":9473,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Heals a friendly target for 393.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":327,"dieSides":67,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":9474,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Heals a friendly target for 478.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":400,"dieSides":79,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10915,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Heals a friendly target for 616.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":518,"dieSides":99,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10916,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Heals a friendly target for 764.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":644,"dieSides":121,"pointsPerLevel":3.700000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10917,"rank":7,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Heals a friendly target for 958.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":812,"dieSides":147,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":25233,"rank":8,"level":61,"sourceLevel":61,"maxScalingLevel":65,"description":"Heals a friendly target for 1059.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":913,"dieSides":147,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":25235,"rank":9,"level":67,"sourceLevel":67,"maxScalingLevel":71,"description":"Heals a friendly target for 1279.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1101,"dieSides":179,"pointsPerLevel":5.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48070,"rank":10,"level":73,"sourceLevel":73,"maxScalingLevel":78,"description":"Heals a friendly target for 1832.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1578,"dieSides":255,"pointsPerLevel":8,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48071,"rank":11,"level":79,"sourceLevel":79,"maxScalingLevel":84,"description":"Heals a friendly target for 2193.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1887,"dieSides":307,"pointsPerLevel":9.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]}]},{"id":"wow335-priest-holy-fire","name":"Holy Fire","iconBasename":"spell_holy_searinglight","iconPath":"/assets/ui/spells/spell_holy_searinglight.png","sourceUnlockLevel":20,"ranks":[{"spellId":14914,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":24,"description":"Consumes the enemy in Holy flames that cause 128 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":102,"dieSides":27,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15262,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":30,"description":"Consumes the enemy in Holy flames that cause 173 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":137,"dieSides":37,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15263,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"Consumes the enemy in Holy flames that cause 252 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":200,"dieSides":53,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15264,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Consumes the enemy in Holy flames that cause 339 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":267,"dieSides":73,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15265,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Consumes the enemy in Holy flames that cause 440 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":348,"dieSides":93,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15266,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":54,"description":"Consumes the enemy in Holy flames that cause 546 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":430,"dieSides":117,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15267,"rank":7,"level":54,"sourceLevel":54,"maxScalingLevel":60,"description":"Consumes the enemy in Holy flames that cause 671 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":529,"dieSides":143,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":16,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":15261,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Consumes the enemy in Holy flames that cause 811 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":639,"dieSides":173,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":25384,"rank":9,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Consumes the enemy in Holy flames that cause 895 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":705,"dieSides":191,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":48134,"rank":10,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Consumes the enemy in Holy flames that cause 928 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":732,"dieSides":197,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]},{"spellId":48135,"rank":11,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Consumes the enemy in Holy flames that cause 1130 Holy damage and an additional the listed amount Holy damage over 7 sec.","castTimeMs":2000,"cooldownMs":10000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":890,"dieSides":241,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":6,"auraType":3,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.024000000208616257}]}]},{"id":"wow335-priest-holy-nova","name":"Holy Nova","iconBasename":"spell_holy_holynova","iconPath":"/assets/ui/spells/spell_holy_holynova.png","sourceUnlockLevel":20,"ranks":[{"spellId":15237,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":26,"description":"Causes an explosion of holy light around the caster, causing 32 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 60. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":28,"dieSides":5,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":23455,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":26,"description":"Causes an explosion of holy light around the caster, causing 32 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 60. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":52,"dieSides":9,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":15430,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":34,"description":"Causes an explosion of holy light around the caster, causing 58 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 98. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":50,"dieSides":9,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":23458,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":34,"description":"Causes an explosion of holy light around the caster, causing 58 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 98. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":86,"dieSides":13,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":15431,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Causes an explosion of holy light around the caster, causing 88 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 139. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":76,"dieSides":13,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":23459,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Causes an explosion of holy light around the caster, causing 88 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 139. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":121,"dieSides":19,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":27799,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":50,"description":"Causes an explosion of holy light around the caster, causing 122 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 187. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":106,"dieSides":17,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":27803,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":50,"description":"Causes an explosion of holy light around the caster, causing 122 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 187. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":161,"dieSides":27,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":27800,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":58,"description":"Causes an explosion of holy light around the caster, causing 162 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 271. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":140,"dieSides":23,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":27804,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":58,"description":"Causes an explosion of holy light around the caster, causing 162 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 271. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":235,"dieSides":37,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":27801,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Causes an explosion of holy light around the caster, causing 209 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 350. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":181,"dieSides":29,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":27805,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Causes an explosion of holy light around the caster, causing 209 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 350. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":302,"dieSides":49,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":25329,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":74,"description":"Causes an explosion of holy light around the caster, causing 280 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 446. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":384,"dieSides":63,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":25331,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":74,"description":"Causes an explosion of holy light around the caster, causing 280 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 446. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":242,"dieSides":39,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":48075,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Causes an explosion of holy light around the caster, causing 387 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 709. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":611,"dieSides":99,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":48077,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Causes an explosion of holy light around the caster, causing 387 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 709. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":333,"dieSides":55,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]},{"spellId":48076,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Causes an explosion of holy light around the caster, causing 462 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 827. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":713,"dieSides":115,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":20,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.30300000309944153}]},{"spellId":48078,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Causes an explosion of holy light around the caster, causing 462 Holy damage to all enemy targets within the listed amount yards and healing all party members within the listed amount yards for 827. These effects cause no threat.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":398,"dieSides":65,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16099999845027924}]}]},{"id":"wow335-priest-mind-flay","name":"Mind Flay","iconBasename":"spell_shadow_siphonmana","iconPath":"/assets/ui/spells/spell_shadow_siphonmana.png","sourceUnlockLevel":20,"talentNodeId":"talent-501","ranks":[{"spellId":15407,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":28,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 15%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":227,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17311,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":36,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":36,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17312,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":44,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":53,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17313,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":52,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":74,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17314,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":60,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":94,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18807,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":68,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":121,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25387,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48155,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":164,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48156,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Assault the target's mind with Shadow energy, causing the listed amount Shadow damage over 3 sec and slowing their movement speed by 50%.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":227,"basePoints":196,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58381,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mind-soothe","name":"Mind Soothe","iconBasename":"spell_holy_mindsooth","iconPath":"/assets/ui/spells/spell_holy_mindsooth.png","sourceUnlockLevel":20,"ranks":[{"spellId":453,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Soothes the target, reducing the range at which it will attack you by 10 yards. Only affects Humanoid targets. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-shackle-undead","name":"Shackle Undead","iconBasename":"spell_nature_slow","iconPath":"/assets/ui/spells/spell_nature_slow.png","sourceUnlockLevel":20,"ranks":[{"spellId":9484,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Shackles the target undead enemy for up to 30 sec. The shackled unit is unable to move, attack or cast spells. Any damage caused will release the target. Only one target can be shackled at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9485,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Shackles the target undead enemy for up to 40 sec. The shackled unit is unable to move, attack or cast spells. Any damage caused will release the target. Only one target can be shackled at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10955,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Shackles the target undead enemy for up to 50 sec. The shackled unit is unable to move, attack or cast spells. Any damage caused will release the target. Only one target can be shackled at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mind-vision","name":"Mind Vision","iconBasename":"spell_holy_mindvision","iconPath":"/assets/ui/spells/spell_holy_mindvision.png","sourceUnlockLevel":22,"ranks":[{"spellId":2096,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Allows the caster to see through the target's eyes for 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":1,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":68,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10909,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Allows the caster to see through the target's eyes for 60 sec. Will not work if the target is in another instance or on another continent.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":1,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":68,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mana-burn","name":"Mana Burn","iconBasename":"spell_shadow_manaburn","iconPath":"/assets/ui/spells/spell_shadow_manaburn.png","sourceUnlockLevel":24,"ranks":[{"spellId":8129,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Destroy 13% of the target's mana (up to a maximum of the listed amount% of your own maximum mana). For each mana destroyed in this way, the target takes 0.5 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":62,"auraType":0,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-divine-spirit","name":"Divine Spirit","iconBasename":"spell_holy_divinespirit","iconPath":"/assets/ui/spells/spell_holy_divinespirit.png","sourceUnlockLevel":30,"ranks":[{"spellId":14752,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":40,"description":"Holy power infuses the target, increasing their Spirit by 17 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14818,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":50,"description":"Holy power infuses the target, increasing their Spirit by 23 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":23,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":14819,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":60,"description":"Holy power infuses the target, increasing their Spirit by 33 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27841,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Holy power infuses the target, increasing their Spirit by 40 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25312,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Holy power infuses the target, increasing their Spirit by 50 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48073,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Holy power infuses the target, increasing their Spirit by 80 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-mind-control","name":"Mind Control","iconBasename":"spell_shadow_shadowworddominate","iconPath":"/assets/ui/spells/spell_shadow_shadowworddominate.png","sourceUnlockLevel":30,"ranks":[{"spellId":605,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Controls a humanoid mind up to level 32, but increases the time between its attacks by 25%. Lasts up to 60 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":2,"basePoints":32,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":138,"basePoints":-25,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-prayer-of-healing","name":"Prayer of Healing","iconBasename":"spell_holy_prayerofhealing02","iconPath":"/assets/ui/spells/spell_holy_prayerofhealing02.png","sourceUnlockLevel":30,"ranks":[{"spellId":596,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 321.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":301,"dieSides":21,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":996,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 472.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":444,"dieSides":29,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":10960,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 695.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":657,"dieSides":39,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":10961,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 991.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":939,"dieSides":53,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":25316,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 1053.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":997,"dieSides":57,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":25308,"rank":6,"level":68,"sourceLevel":68,"maxScalingLevel":75,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 1316.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1246,"dieSides":71,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]},{"spellId":48072,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":82,"description":"A powerful prayer heals the friendly target's party members within the listed amount yards for 2209.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2091,"dieSides":119,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":37,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5260000228881836}]}]},{"id":"wow335-priest-shadow-protection","name":"Shadow Protection","iconBasename":"spell_shadow_antishadow","iconPath":"/assets/ui/spells/spell_shadow_antishadow.png","sourceUnlockLevel":30,"ranks":[{"spellId":976,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 30 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":10957,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 45 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":10958,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 60 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":25433,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 70 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":48169,"rank":5,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Increases the target's resistance to Shadow spells by 130 for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-abolish-disease","name":"Abolish Disease","iconBasename":"spell_nature_nullifydisease","iconPath":"/assets/ui/spells/spell_nature_nullifydisease.png","sourceUnlockLevel":32,"ranks":[{"spellId":552,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Attempts to cure 1 disease effect on the target, and 1 more disease effect every 3 seconds for 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":10872,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-levitate","name":"Levitate","iconBasename":"spell_holy_layonhands","iconPath":"/assets/ui/spells/spell_holy_layonhands.png","sourceUnlockLevel":34,"ranks":[{"spellId":1706,"rank":0,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Allows the friendly party or raid target to levitate, floating a few feet above the ground. While levitating, the target will fall at a reduced speed and travel over water. Any damage will cancel the effect. Lasts 120 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":105,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":106,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":104,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-greater-heal","name":"Greater Heal","iconBasename":"spell_holy_greaterheal","iconPath":"/assets/ui/spells/spell_holy_greaterheal.png","sourceUnlockLevel":40,"ranks":[{"spellId":2060,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"A slow casting spell that heals a single target for 1013.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":899,"dieSides":115,"pointsPerLevel":5.099999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10963,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"A slow casting spell that heals a single target for 1289.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1149,"dieSides":141,"pointsPerLevel":5.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10964,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"A slow casting spell that heals a single target for 1609.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1437,"dieSides":173,"pointsPerLevel":6.599999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10965,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"A slow casting spell that heals a single target for 2006.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1798,"dieSides":209,"pointsPerLevel":7.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25314,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"A slow casting spell that heals a single target for 2194.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1966,"dieSides":229,"pointsPerLevel":8.100000381469727,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25210,"rank":6,"level":63,"sourceLevel":63,"maxScalingLevel":67,"description":"A slow casting spell that heals a single target for 2410.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2074,"dieSides":337,"pointsPerLevel":8.399999618530273,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25213,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"A slow casting spell that heals a single target for 2784.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2396,"dieSides":389,"pointsPerLevel":9.300000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":48062,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"A slow casting spell that heals a single target for 3945.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3395,"dieSides":551,"pointsPerLevel":13.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":48063,"rank":9,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"A slow casting spell that heals a single target for 4590.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3950,"dieSides":641,"pointsPerLevel":15.399999618530273,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]}]},{"id":"wow335-priest-lightwell","name":"Lightwell","iconBasename":"spell_holy_summonlightwell","iconPath":"/assets/ui/spells/spell_holy_summonlightwell.png","sourceUnlockLevel":40,"talentNodeId":"talent-1637","ranks":[{"spellId":724,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 6 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31897,"triggerSpellId":0,"coefficient":0}]},{"spellId":27870,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 6 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31896,"triggerSpellId":0,"coefficient":0}]},{"spellId":27871,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 6 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31895,"triggerSpellId":0,"coefficient":0}]},{"spellId":28275,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 6 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31894,"triggerSpellId":0,"coefficient":0}]},{"spellId":48086,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 6 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31893,"triggerSpellId":0,"coefficient":0}]},{"spellId":48087,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Creates a Holy Lightwell. Members of your raid or party can click the Lightwell to restore the listed amount health over 6 sec. Attacks done to you equal to 30% of your total health will cancel the effect. Lightwell lasts for 180 sec or 10 charges.","castTimeMs":500,"cooldownMs":180000,"gcdMs":1500,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31883,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-power-infusion","name":"Power Infusion","iconBasename":"spell_holy_powerinfusion","iconPath":"/assets/ui/spells/spell_holy_powerinfusion.png","sourceUnlockLevel":40,"talentNodeId":"talent-322","ranks":[{"spellId":10060,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Infuses the target with power, increasing spell casting speed by 20% and reducing the mana cost of all spells by 20%. Lasts 15 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":65,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":72,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-prayer-of-fortitude","name":"Prayer of Fortitude","iconBasename":"spell_holy_prayeroffortitude","iconPath":"/assets/ui/spells/spell_holy_prayeroffortitude.png","sourceUnlockLevel":48,"ranks":[{"spellId":21562,"rank":1,"level":48,"sourceLevel":48,"maxScalingLevel":58,"description":"Power infuses all party and raid members, increasing their Stamina by 43 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":21564,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Power infuses all party and raid members, increasing their Stamina by 54 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":25392,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Power infuses all party and raid members, increasing their Stamina by 79 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":69,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":79,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":48162,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Power infuses all party and raid members, increasing their Stamina by 165 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":69,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-circle-of-healing","name":"Circle of Healing","iconBasename":"spell_holy_circleofrenewal","iconPath":"/assets/ui/spells/spell_holy_circleofrenewal.png","sourceUnlockLevel":50,"talentNodeId":"talent-1815","ranks":[{"spellId":34861,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":54,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 379.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":343,"dieSides":37,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":34863,"rank":2,"level":56,"sourceLevel":56,"maxScalingLevel":60,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 445.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":403,"dieSides":43,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":34864,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 506.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":458,"dieSides":49,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":34865,"rank":4,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 572.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":518,"dieSides":55,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":34866,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 632.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":572,"dieSides":61,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":48088,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 911.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":825,"dieSides":87,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]},{"spellId":48089,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for 1058.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":958,"dieSides":101,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803}]}]},{"id":"wow335-priest-prayer-of-shadow-protection","name":"Prayer of Shadow Protection","iconBasename":"spell_holy_prayerofshadowprotection","iconPath":"/assets/ui/spells/spell_holy_prayerofshadowprotection.png","sourceUnlockLevel":56,"ranks":[{"spellId":27683,"rank":1,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Power infuses the target's party and raid members, increasing their Shadow resistance by 60 for 1200 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1200000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":70,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":39374,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Power infuses the target's party and raid members, increasing their Shadow resistance by 70 for 1200 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1200000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":62,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":48170,"rank":3,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Power infuses the target's party and raid members, increasing their Shadow resistance by 130 for 1200 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1200000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":62,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":143,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-dispersion","name":"Dispersion","iconBasename":"spell_shadow_dispersion","iconPath":"/assets/ui/spells/spell_shadow_dispersion.png","sourceUnlockLevel":60,"talentNodeId":"talent-1910","ranks":[{"spellId":47585,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"You disperse into pure Shadow energy, reducing all damage taken by 90%. You are unable to attack or cast spells, but you regenerate 6% mana every 1 sec for 6 sec. Dispersion can be cast while stunned, feared or silenced and clears all snare and movement impairing effects when cast, and makes you immune to them while dispersed.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":87,"basePoints":-90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31913,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":60,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-guardian-spirit","name":"Guardian Spirit","iconBasename":"spell_holy_guardianspirit","iconPath":"/assets/ui/spells/spell_holy_guardianspirit.png","sourceUnlockLevel":60,"talentNodeId":"talent-1911","ranks":[{"spellId":47788,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Calls upon a guardian spirit to watch over the friendly target. The spirit increases the healing received by the target by 40%, and also prevents the target from dying by sacrificing itself. This sacrifice terminates the effect but heals the target of 50% of their maximum health. Lasts 10 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":69,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-penance","name":"Penance","iconBasename":"spell_holy_penance","iconPath":"/assets/ui/spells/spell_holy_penance.png","sourceUnlockLevel":60,"talentNodeId":"talent-1897","ranks":[{"spellId":47540,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Launches a volley of holy light at the target, causing 240 Holy damage to an enemy, or 756 healing to an ally instantly and every 1 sec for 2 sec.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":160,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-prayer-of-spirit","name":"Prayer of Spirit","iconBasename":"spell_holy_prayerofspirit","iconPath":"/assets/ui/spells/spell_holy_prayerofspirit.png","sourceUnlockLevel":60,"ranks":[{"spellId":27681,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Power infuses the target's party and raid members, increasing their Spirit by 40 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":13,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":135,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":32999,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Power infuses the target's party and raid members, increasing their Spirit by 50 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":69,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":13,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":135,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":48074,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Power infuses the target's party and raid members, increasing their Spirit by 80 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":69,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":13,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":135,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-priest-shadow-word-death","name":"Shadow Word: Death","iconBasename":"spell_shadow_demonicfortitude","iconPath":"/assets/ui/spells/spell_shadow_demonicfortitude.png","sourceUnlockLevel":62,"ranks":[{"spellId":32379,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":69,"description":"A word of dark binding that inflicts 522 Shadow damage to the target. If the target is not killed by Shadow Word: Death, the caster takes damage equal to the damage inflicted upon the target.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":450,"dieSides":73,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":32996,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"A word of dark binding that inflicts 664 Shadow damage to the target. If the target is not killed by Shadow Word: Death, the caster takes damage equal to the damage inflicted upon the target.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":572,"dieSides":93,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48157,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"A word of dark binding that inflicts 741 Shadow damage to the target. If the target is not killed by Shadow Word: Death, the caster takes damage equal to the damage inflicted upon the target.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":639,"dieSides":103,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":48158,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"A word of dark binding that inflicts 870 Shadow damage to the target. If the target is not killed by Shadow Word: Death, the caster takes damage equal to the damage inflicted upon the target.","castTimeMs":0,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":750,"dieSides":121,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-priest-binding-heal","name":"Binding Heal","iconBasename":"spell_holy_blindingheal","iconPath":"/assets/ui/spells/spell_holy_blindingheal.png","sourceUnlockLevel":64,"ranks":[{"spellId":32546,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":71,"description":"Heals a friendly target and the caster for 1338. Low threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1042,"dieSides":297,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508},{"index":1,"effectType":10,"auraType":0,"basePoints":1042,"dieSides":297,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48119,"rank":2,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Heals a friendly target and the caster for 2081. Low threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1619,"dieSides":463,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508},{"index":1,"effectType":10,"auraType":0,"basePoints":1619,"dieSides":463,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":48120,"rank":3,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Heals a friendly target and the caster for 2508. Low threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1952,"dieSides":557,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508},{"index":1,"effectType":10,"auraType":0,"basePoints":1952,"dieSides":557,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]}]},{"id":"wow335-priest-shadowfiend","name":"Shadowfiend","iconBasename":"spell_shadow_shadowfiend","iconPath":"/assets/ui/spells/spell_shadow_shadowfiend.png","sourceUnlockLevel":66,"ranks":[{"spellId":34433,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Creates a shadowy fiend to attack the target. Caster receives 5% mana when the Shadowfiend attacks. Damage taken by area of effect attacks is reduced. Lasts 15 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":19668,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41967,"coefficient":0}]}]},{"id":"wow335-priest-prayer-of-mending","name":"Prayer of Mending","iconBasename":"spell_holy_prayerofmendingtga","iconPath":"/assets/ui/spells/spell_holy_prayerofmendingtga.png","sourceUnlockLevel":68,"ranks":[{"spellId":33076,"rank":1,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Places a spell on the target that heals them for 800 the next time they take damage. When the heal occurs, Prayer of Mending jumps to a party or raid member within the listed amount yards. Jumps up to the listed amount times and lasts 30 sec after each jump. This spell can only be placed on one target at a time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":142,"auraType":0,"basePoints":800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41635,"coefficient":0.8069999814033508},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41637,"coefficient":0}]},{"spellId":48112,"rank":2,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Places a spell on the target that heals them for 905 the next time they take damage. When the heal occurs, Prayer of Mending jumps to a party or raid member within the listed amount yards. Jumps up to the listed amount times and lasts 30 sec after each jump. This spell can only be placed on one target at a time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":142,"auraType":0,"basePoints":905,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48110,"coefficient":0.8069999814033508},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41637,"coefficient":0}]},{"spellId":48113,"rank":3,"level":79,"sourceLevel":79,"maxScalingLevel":84,"description":"Places a spell on the target that heals them for 1043 the next time they take damage. When the heal occurs, Prayer of Mending jumps to a party or raid member within the listed amount yards. Jumps up to the listed amount times and lasts 30 sec after each jump. This spell can only be placed on one target at a time.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":142,"auraType":0,"basePoints":1043,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":48111,"coefficient":0.8069999814033508},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":41637,"coefficient":0}]}]},{"id":"wow335-priest-mass-dispel","name":"Mass Dispel","iconBasename":"spell_arcane_massdispel","iconPath":"/assets/ui/spells/spell_arcane_massdispel.png","sourceUnlockLevel":70,"ranks":[{"spellId":32375,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Dispels magic in a the listed amount yard radius, removing 1 harmful the listed amount from each friendly target and 1 beneficial the listed amount from each enemy target. Affects a maximum of the listed amount friendly targets and the listed amount enemy targets. This dispel is potent enough to remove Magic effects that are normally undispellable.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":31,"implicitTargetB":0,"radius":15,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":32592,"coefficient":0}]}]},{"id":"wow335-priest-mind-sear","name":"Mind Sear","iconBasename":"spell_shadow_mindshear","iconPath":"/assets/ui/spells/spell_shadow_mindshear.png","sourceUnlockLevel":75,"ranks":[{"spellId":48045,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Causes an explosion of shadow magic around the enemy target, causing 197 Shadow damage every the listed amount sec for 5 sec to all enemies within the listed amount yards around the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":49821,"coefficient":0}]}]},{"id":"wow335-priest-divine-hymn","name":"Divine Hymn","iconBasename":"spell_holy_divinehymn","iconPath":"/assets/ui/spells/spell_holy_divinehymn.png","sourceUnlockLevel":80,"ranks":[{"spellId":64843,"rank":1,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You recite a Holy hymn, summoning the power of the Divine to assist you in your time of need. Heals 3 nearby lowest health friendly party or raid targets for 3342 every 2 sec for 8 sec, and increases healing done to them by 10% for 8 sec. Maximum of the listed amount heals. The Priest must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":63,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":64844,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":64844,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You recite a Holy hymn, summoning the power of the Divine to assist you in your time of need. Heals 3 nearby lowest health friendly party or raid targets for 3342 every 2 sec for 8 sec, and increases healing done to them by 10% for 8 sec. Maximum of the listed amount heals. The Priest must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3024,"dieSides":319,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":30,"radius":40,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5640000104904175},{"index":1,"effectType":6,"auraType":118,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":30,"radius":40,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]}],"death-knight":[{"id":"wow335-death-knight-blood-gorged","name":"Blood Gorged","iconBasename":"spell_nature_reincarnation","iconPath":"/assets/ui/spells/spell_nature_reincarnation.png","sourceUnlockLevel":1,"talentNodeId":"talent-2034","ranks":[{"spellId":61154,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 2% more damage. In addition, your attacks ignore up to 2% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50096,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61274,"coefficient":0}]},{"spellId":61155,"rank":2,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 4% more damage. In addition, your attacks ignore up to 4% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50108,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61275,"coefficient":0}]},{"spellId":61156,"rank":3,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 6% more damage. In addition, your attacks ignore up to 6% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50109,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61276,"coefficient":0}]},{"spellId":61157,"rank":4,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 8% more damage. In addition, your attacks ignore up to 8% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50110,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61277,"coefficient":0}]},{"spellId":61158,"rank":5,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When you are above 75% health, you deal 10% more damage. In addition, your attacks ignore up to 10% of your opponent's armor at all times.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50111,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61278,"coefficient":0}]}]},{"id":"wow335-death-knight-bone-shield","name":"Bone Shield","iconBasename":"inv_chest_leather_13","iconPath":"/assets/ui/spells/inv_chest_leather_13.png","sourceUnlockLevel":1,"talentNodeId":"talent-2007","ranks":[{"spellId":49222,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"The Death Knight is surrounded by 4 whirling bones. While at least 1 bone remains, the listed amount takes 20% less damage from all sources and deals 2% more damage with all attacks, spells and abilities. Each damaging attack that lands consumes 1 bone. Lasts 300 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":87,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":79,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-on-a-pale-horse","name":"On a Pale Horse","iconBasename":"spell_deathknight_summondeathcharger","iconPath":"/assets/ui/spells/spell_deathknight_summondeathcharger.png","sourceUnlockLevel":1,"talentNodeId":"talent-2039","ranks":[{"spellId":49146,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"You become as hard to stop as death itself. The duration of all Stun and Fear effects used against you is reduced by 10%, and your mounted speed is increased by 10%. This does not stack with other movement speed increasing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":51983,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":51969,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":51267,"rank":2,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"You become as hard to stop as death itself. The duration of all Stun and Fear effects used against you is reduced by 20%, and your mounted speed is increased by 20%. This does not stack with other movement speed increasing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":51986,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":51970,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-unbreakable-armor","name":"Unbreakable Armor","iconBasename":"inv_armor_helm_plate_naxxramas_raidwarrior_c_01","iconPath":"/assets/ui/spells/inv_armor_helm_plate_naxxramas_raidwarrior_c_01.png","sourceUnlockLevel":1,"talentNodeId":"talent-1979","ranks":[{"spellId":51271,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Reinforces your armor with a thick coat of ice, reducing damage from all attacks by the listed amountthe listed amount and increasing your Strength by 25% for 20 sec. The amount of damage reduced increases as your armor increases.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":137,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-vampiric-blood","name":"Vampiric Blood","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":1,"talentNodeId":"talent-2019","ranks":[{"spellId":55233,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Temporarily grants the Death Knight 15% of maximum health and increases the amount of health generated through spells and effects by 35% for 20 sec. After the effect expires, the health is lost.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":118,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":34,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-will-of-the-necropolis","name":"Will of the Necropolis","iconBasename":"ability_creature_cursed_02","iconPath":"/assets/ui/spells/ability_creature_cursed_02.png","sourceUnlockLevel":1,"talentNodeId":"talent-1959","ranks":[{"spellId":49189,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Damage that would take you below 35% health or taken while you are at 35% health is reduced by 5%. This effect cannot occur more often than once every 15 sec and cannot be triggered by damage which deals less than 5% of your health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":52284,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":50149,"rank":2,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Damage that would take you below 35% health or taken while you are at 35% health is reduced by 10%. This effect cannot occur more often than once every 15 sec and cannot be triggered by damage which deals less than 5% of your health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":52285,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":50150,"rank":3,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Damage that would take you below 35% health or taken while you are at 35% health is reduced by 15%. This effect cannot occur more often than once every 15 sec and cannot be triggered by damage which deals less than 5% of your health.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":52286,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-ghoul-frenzy","name":"Ghoul Frenzy","iconBasename":"ability_ghoulfrenzy","iconPath":"/assets/ui/spells/ability_ghoulfrenzy.png","sourceUnlockLevel":26,"talentNodeId":"talent-2085","ranks":[{"spellId":63560,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Grants your pet 25% haste for 30 sec and heals it for the listed amount% of its health over the duration.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":9,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":20,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-acherus-deathcharger","name":"Acherus Deathcharger","iconBasename":"spell_deathknight_summondeathcharger","iconPath":"/assets/ui/spells/spell_deathknight_summondeathcharger.png","sourceUnlockLevel":55,"ranks":[{"spellId":48778,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Summons and dismisses your rideable Acherus Deathcharger. This is a very fast mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":28302,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-anti-magic-zone","name":"Anti-Magic Zone","iconBasename":"spell_deathknight_antimagiczone","iconPath":"/assets/ui/spells/spell_deathknight_antimagiczone.png","sourceUnlockLevel":55,"talentNodeId":"talent-2221","ranks":[{"spellId":51052,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Places a large, stationary Anti-Magic Zone that reduces spell damage done to party or raid members inside it by 75%. The Anti-Magic Zone lasts for 10 sec or until it absorbs the listed amountthe listed amount spell damage.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":10000,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":18,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":28306,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-blood-presence","name":"Blood Presence","iconBasename":"spell_deathknight_bloodpresence","iconPath":"/assets/ui/spells/spell_deathknight_bloodpresence.png","sourceUnlockLevel":55,"ranks":[{"spellId":48266,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Strengthens the Death Knight with the presence of blood, increasing damage by 15% and healing the Death Knight by 4% of damage dealt. Only one Presence may be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":10,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-blood-strike","name":"Blood Strike","iconBasename":"spell_deathknight_deathstrike","iconPath":"/assets/ui/spells/spell_deathknight_deathstrike.png","sourceUnlockLevel":55,"ranks":[{"spellId":45902,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Instantly strike the enemy, causing 40% weapon damage plus the listed amount, total damage increased by the listed amount% for each of your diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":260,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-corpse-explosion","name":"Corpse Explosion","iconBasename":"ability_creature_disease_02","iconPath":"/assets/ui/spells/ability_creature_disease_02.png","sourceUnlockLevel":55,"talentNodeId":"talent-1985","ranks":[{"spellId":49158,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Cause a corpse to explode for 166 Shadow damage to all enemies within the listed amount yards. Will use a nearby corpse if the target is not a corpse. Does not affect mechanical or elemental corpses.","castTimeMs":0,"cooldownMs":5000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":166,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":50444,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":8,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-dancing-rune-weapon","name":"Dancing Rune Weapon","iconBasename":"inv_sword_07","iconPath":"/assets/ui/spells/inv_sword_07.png","sourceUnlockLevel":55,"talentNodeId":"talent-1961","ranks":[{"spellId":49028,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":80,"description":"Summons a second rune weapon that fights on its own for 12 sec, doing the same attacks as the Death Knight but for 50% reduced damage.","castTimeMs":0,"cooldownMs":90000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":6,"powerCost":600,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":64,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":27893,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":50707,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":1206,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-death-coil","name":"Death Coil","iconBasename":"spell_shadow_deathcoil","iconPath":"/assets/ui/spells/spell_shadow_deathcoil.png","sourceUnlockLevel":55,"ranks":[{"spellId":47541,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 167 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":167,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49892,"rank":2,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 208 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":208,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49893,"rank":3,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 275 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":275,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49894,"rank":4,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 381 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":381,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49895,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing 443 Shadow damage to an enemy target or healing the listed amount damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":443,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47632,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing Shadow damage to an enemy target or healing damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":600,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47633,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Fire a blast of unholy energy, causing Shadow damage to an enemy target or healing damage from a friendly Undead target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":160,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":900,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-death-grip","name":"Death Grip","iconBasename":"spell_deathknight_strangulate","iconPath":"/assets/ui/spells/spell_deathknight_strangulate.png","sourceUnlockLevel":55,"ranks":[{"spellId":49576,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Harness the unholy energy that surrounds and binds all matter, drawing the target toward the death knight and forcing the enemy to attack the death knight for 3 sec.","castTimeMs":0,"cooldownMs":35000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-deathchill","name":"Deathchill","iconBasename":"spell_shadow_soulleech_2","iconPath":"/assets/ui/spells/spell_shadow_soulleech_2.png","sourceUnlockLevel":55,"talentNodeId":"talent-1980","ranks":[{"spellId":49796,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"When activated, makes your next Icy Touch, Howling Blast, Frost Strike or Obliterate a critical hit if used within 30 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-frost-strike","name":"Frost Strike","iconBasename":"spell_deathknight_empowerruneblade2","iconPath":"/assets/ui/spells/spell_deathknight_empowerruneblade2.png","sourceUnlockLevel":55,"talentNodeId":"talent-1975","ranks":[{"spellId":49143,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Instantly strike the enemy, causing 55% weapon damage plus the listed amount as Frost damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-heart-strike","name":"Heart Strike","iconBasename":"inv_weapon_shortblade_40","iconPath":"/assets/ui/spells/inv_weapon_shortblade_40.png","sourceUnlockLevel":55,"talentNodeId":"talent-1957","ranks":[{"spellId":55050,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Instantly strike the target and his nearest ally, causing 50% weapon damage plus the listed amount, total damage increased by 10% for each of your diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-howling-blast","name":"Howling Blast","iconBasename":"spell_frost_arcticwinds","iconPath":"/assets/ui/spells/spell_frost_arcticwinds.png","sourceUnlockLevel":55,"talentNodeId":"talent-1989","ranks":[{"spellId":49184,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Blast the target with a frigid wind dealing 214 Frost damage to all enemies within 10 yards.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":198,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-hungering-cold","name":"Hungering Cold","iconBasename":"inv_staff_15","iconPath":"/assets/ui/spells/inv_staff_15.png","sourceUnlockLevel":55,"talentNodeId":"talent-1999","ranks":[{"spellId":49203,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Purges the earth around the Death Knight of all heat. Enemies within the listed amount yards are trapped in ice, preventing them from performing any action for 10 sec and infecting them with Frost Fever. Enemies are considered Frozen, but any damage other than diseases will break the ice.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":18,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-hysteria","name":"Hysteria","iconBasename":"spell_deathknight_bladedarmor","iconPath":"/assets/ui/spells/spell_deathknight_bladedarmor.png","sourceUnlockLevel":55,"talentNodeId":"talent-1954","ranks":[{"spellId":49016,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Induces a friendly unit into a killing frenzy for 30 sec. The target is Enraged, which increases their physical damage by 20%, but causes them to lose health equal to 1% of their maximum health every second.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":79,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":226,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-icy-touch","name":"Icy Touch","iconBasename":"spell_deathknight_icetouch","iconPath":"/assets/ui/spells/spell_deathknight_icetouch.png","sourceUnlockLevel":55,"ranks":[{"spellId":45477,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Chills the target for 137 to 137 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 14% for 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":127,"dieSides":11,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49896,"rank":2,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Chills the target for 156 to 156 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 14% for 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":144,"dieSides":13,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49903,"rank":3,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Chills the target for 173 to 173 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 14% for 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":161,"dieSides":13,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49904,"rank":4,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Chills the target for 203 to 203 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 14% for 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":187,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49909,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Chills the target for 245 to 245 Frost damage and infects them with Frost Fever, a disease that deals periodic damage and reduces melee and ranged attack speed by 14% for 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":227,"dieSides":19,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55095,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-lichborne","name":"Lichborne","iconBasename":"spell_shadow_raisedead","iconPath":"/assets/ui/spells/spell_shadow_raisedead.png","sourceUnlockLevel":55,"talentNodeId":"talent-2215","ranks":[{"spellId":49039,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Draw upon unholy energy to become undead for 10 sec. While undead, you are immune to Charm, Fear and Sleep effects.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-mark-of-blood","name":"Mark of Blood","iconBasename":"ability_hunter_rapidkilling","iconPath":"/assets/ui/spells/ability_hunter_rapidkilling.png","sourceUnlockLevel":55,"talentNodeId":"talent-1949","ranks":[{"spellId":49005,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Place a Mark of Blood on an enemy. Whenever the marked enemy deals damage to a target, that target is healed for 4% of its maximum health. Lasts for 20 sec or up to the listed amount hits.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-plague-strike","name":"Plague Strike","iconBasename":"spell_deathknight_empowerruneblade","iconPath":"/assets/ui/spells/spell_deathknight_empowerruneblade.png","sourceUnlockLevel":55,"ranks":[{"spellId":45462,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49917,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":151,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49918,"rank":3,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":178,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49919,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":216,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49920,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":314,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]},{"spellId":49921,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A vicious strike that deals 50% weapon damage plus the listed amount and infects the target with Blood Plague, a disease dealing Shadow damage over time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":378,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":55078,"coefficient":0}]}]},{"id":"wow335-death-knight-rune-tap","name":"Rune Tap","iconBasename":"spell_deathknight_runetap","iconPath":"/assets/ui/spells/spell_deathknight_runetap.png","sourceUnlockLevel":55,"talentNodeId":"talent-1941","ranks":[{"spellId":48982,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"Converts 1 Blood Rune into 10% of your maximum health.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":136,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-scourge-strike","name":"Scourge Strike","iconBasename":"spell_deathknight_scourgestrike","iconPath":"/assets/ui/spells/spell_deathknight_scourgestrike.png","sourceUnlockLevel":55,"talentNodeId":"talent-2216","ranks":[{"spellId":55090,"rank":1,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"An unholy strike that deals 40% of weapon damage as Shadow damage plus the listed amount, total damage increased 10% per each of your diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":270,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-summon-gargoyle","name":"Summon Gargoyle","iconBasename":"ability_hunter_pet_bat","iconPath":"/assets/ui/spells/ability_hunter_pet_bat.png","sourceUnlockLevel":55,"talentNodeId":"talent-2000","ranks":[{"spellId":49206,"rank":0,"level":55,"sourceLevel":55,"maxScalingLevel":0,"description":"A Gargoyle flies into the area and bombards the target with Nature damage modified by the Death Knight's attack power. Persists for 30 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":6,"powerCost":600,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":27829,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":226,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61777,"coefficient":0}]}]},{"id":"wow335-death-knight-death-strike","name":"Death Strike","iconBasename":"spell_deathknight_butcher2","iconPath":"/assets/ui/spells/spell_deathknight_butcher2.png","sourceUnlockLevel":56,"ranks":[{"spellId":49998,"rank":1,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":112,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":406,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49999,"rank":2,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":498,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":45463,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":630,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49923,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1118,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49924,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"A deadly attack that deals 75% weapon damage plus the listed amount and heals the Death Knight for the listed amount% of the listed amount maximum health for each of the listed amount diseases on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":297,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":1310,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-pestilence","name":"Pestilence","iconBasename":"spell_shadow_plaguecloud","iconPath":"/assets/ui/spells/spell_shadow_plaguecloud.png","sourceUnlockLevel":56,"ranks":[{"spellId":50842,"rank":0,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Spreads existing Blood Plague and Frost Fever infections from your target to all other enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-raise-dead","name":"Raise Dead","iconBasename":"spell_shadow_animatedead","iconPath":"/assets/ui/spells/spell_shadow_animatedead.png","sourceUnlockLevel":56,"ranks":[{"spellId":46584,"rank":0,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Raises a Ghoul to fight by your side. If no humanoid corpse that yields experience or honor is available, you must supply Corpse Dust to complete the spell. You can have a maximum of one Ghoul at a time. Lasts 60 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":46585,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":8,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":52150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-frost-presence","name":"Frost Presence","iconBasename":"spell_deathknight_frostpresence","iconPath":"/assets/ui/spells/spell_deathknight_frostpresence.png","sourceUnlockLevel":57,"ranks":[{"spellId":48263,"rank":0,"level":57,"sourceLevel":57,"maxScalingLevel":0,"description":"The death knight takes on the presence of frost, increasing Stamina by 6%, armor contribution from cloth, leather, mail and plate items by 60%, and reducing damage taken by 5%. Increases threat generated. Only one Presence may be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":142,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":10,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-mind-freeze","name":"Mind Freeze","iconBasename":"spell_deathknight_mindfreeze","iconPath":"/assets/ui/spells/spell_deathknight_mindfreeze.png","sourceUnlockLevel":57,"ranks":[{"spellId":47528,"rank":0,"level":57,"sourceLevel":57,"maxScalingLevel":0,"description":"Smash the target's mind with cold, interrupting spellcasting and preventing any spell in that school from being cast for 4 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":4000,"channelDurationMs":0,"powerType":6,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-blood-boil","name":"Blood Boil","iconBasename":"spell_deathknight_bloodboil","iconPath":"/assets/ui/spells/spell_deathknight_bloodboil.png","sourceUnlockLevel":58,"ranks":[{"spellId":48721,"rank":1,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Boils the blood of all enemies within the listed amount yards, dealing 107 Shadow damage. Deals additional damage to targets infected with Blood Plague or Frost Fever.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":89,"dieSides":19,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49939,"rank":2,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Boils the blood of all enemies within the listed amount yards, dealing 140 Shadow damage. Deals additional damage to targets infected with Blood Plague or Frost Fever.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":116,"dieSides":25,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49940,"rank":3,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Boils the blood of all enemies within the listed amount yards, dealing 181 Shadow damage. Deals additional damage to targets infected with Blood Plague or Frost Fever.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":149,"dieSides":33,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49941,"rank":4,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Boils the blood of all enemies within the listed amount yards, dealing 220 Shadow damage. Deals additional damage to targets infected with Blood Plague or Frost Fever.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":180,"dieSides":41,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-chains-of-ice","name":"Chains of Ice","iconBasename":"spell_frost_chainsofice","iconPath":"/assets/ui/spells/spell_frost_chainsofice.png","sourceUnlockLevel":58,"ranks":[{"spellId":45524,"rank":0,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Shackles the target with frozen chains, reducing their movement by 95%. The target regains 10% of their movement each second for 10 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":47805,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-strangulate","name":"Strangulate","iconBasename":"spell_shadow_soulleech_3","iconPath":"/assets/ui/spells/spell_shadow_soulleech_3.png","sourceUnlockLevel":59,"ranks":[{"spellId":47476,"rank":0,"level":59,"sourceLevel":59,"maxScalingLevel":0,"description":"Strangulates an enemy, silencing them for 5 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":27,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":9,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-death-and-decay","name":"Death and Decay","iconBasename":"spell_shadow_deathanddecay","iconPath":"/assets/ui/spells/spell_shadow_deathanddecay.png","sourceUnlockLevel":60,"ranks":[{"spellId":43265,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Corrupts the ground targeted by the Death Knight, causing 26 Shadow damage every sec that targets remain in the area for 10 sec. This ability produces a high amount of threat.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":226,"basePoints":26,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49936,"rank":2,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Corrupts the ground targeted by the Death Knight, causing 34 Shadow damage every sec that targets remain in the area for 10 sec. This ability produces a high amount of threat.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":226,"basePoints":34,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":10,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49937,"rank":3,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Corrupts the ground targeted by the Death Knight, causing 49 Shadow damage every sec that targets remain in the area for 10 sec. This ability produces a high amount of threat.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":226,"basePoints":49,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49938,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Corrupts the ground targeted by the Death Knight, causing 62 Shadow damage every sec that targets remain in the area for 10 sec. This ability produces a high amount of threat.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":226,"basePoints":62,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":10,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-obliterate","name":"Obliterate","iconBasename":"spell_deathknight_classicon","iconPath":"/assets/ui/spells/spell_deathknight_classicon.png","sourceUnlockLevel":61,"ranks":[{"spellId":49020,"rank":1,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"A brutal instant attack that deals 80% weapon damage plus the listed amount, total damage increased the listed amount% per each of your diseases on the target, but consumes the diseases.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":121,"auraType":0,"basePoints":248,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":31,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":3,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-icebound-fortitude","name":"Icebound Fortitude","iconBasename":"spell_deathknight_iceboundfortitude","iconPath":"/assets/ui/spells/spell_deathknight_iceboundfortitude.png","sourceUnlockLevel":62,"ranks":[{"spellId":48792,"rank":0,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"The Death Knight freezes the listed amount blood to become immune to Stun effects and reduce all damage taken by 20% plus additional damage reduction based on Defense for 12 sec.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":12000,"channelDurationMs":0,"powerType":6,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-blood-tap","name":"Blood Tap","iconBasename":"spell_deathknight_bloodtap","iconPath":"/assets/ui/spells/spell_deathknight_bloodtap.png","sourceUnlockLevel":64,"ranks":[{"spellId":45529,"rank":0,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Immediately activates a Blood Rune and converts it into a Death Rune for the next 20 sec. Death Runes count as a Blood, Frost or Unholy Rune.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":146,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":249,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":30,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-death-pact","name":"Death Pact","iconBasename":"spell_shadow_deathpact","iconPath":"/assets/ui/spells/spell_shadow_deathpact.png","sourceUnlockLevel":66,"ranks":[{"spellId":48743,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Sacrifices an undead minion, healing the Death Knight for 40% of the listed amount maximum health. This heal cannot be a critical.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":6,"powerCost":400,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":1,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":31,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":10,"auraType":0,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-anti-magic-shell","name":"Anti-Magic Shell","iconBasename":"spell_shadow_antimagicshell","iconPath":"/assets/ui/spells/spell_shadow_antimagicshell.png","sourceUnlockLevel":68,"ranks":[{"spellId":48707,"rank":0,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Surrounds the Death Knight in an Anti-Magic Shell, absorbing 75% of the damage dealt by harmful spells (up to a maximum of 50% of the Death Knight's health) and preventing application of harmful magical effects. Damage absorbed by Anti-Magic Shell energizes the Death Knight with additional runic power. Lasts 5 sec.","castTimeMs":0,"cooldownMs":45000,"gcdMs":0,"durationMs":5000,"channelDurationMs":0,"powerType":6,"powerCost":200,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":267,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-unholy-presence","name":"Unholy Presence","iconBasename":"spell_deathknight_unholypresence","iconPath":"/assets/ui/spells/spell_deathknight_unholypresence.png","sourceUnlockLevel":70,"ranks":[{"spellId":48265,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Infuses the death knight with unholy fury, increasing attack speed by 15%, movement speed by 15% and reducing the global cooldown on all abilities by the listed amount sec. Only one Presence may be active at a time.","castTimeMs":0,"cooldownMs":1000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":107,"basePoints":-500,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":21,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":10,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-death-knight-empower-rune-weapon","name":"Empower Rune Weapon","iconBasename":"inv_sword_62","iconPath":"/assets/ui/spells/inv_sword_62.png","sourceUnlockLevel":75,"ranks":[{"spellId":47568,"rank":0,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Empower your rune weapon, immediately activating all your runes and generating 25 runic power.","castTimeMs":0,"cooldownMs":300000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":146,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":146,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":53258,"coefficient":0}]}]},{"id":"wow335-death-knight-army-of-the-dead","name":"Army of the Dead","iconBasename":"spell_deathknight_armyofthedead","iconPath":"/assets/ui/spells/spell_deathknight_armyofthedead.png","sourceUnlockLevel":80,"ranks":[{"spellId":42650,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons an entire legion of Ghouls to fight for the Death Knight. The Ghouls will swarm the area, taunting and fighting anything they can. While channelling Army of the Dead, the Death Knight takes less damage equal to the listed amount Dodge plus Parry chance.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":6000,"powerType":5,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":750,"miscValue":0,"triggerSpellId":42651,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}],"shaman":[{"id":"wow335-shaman-dual-wield","name":"Dual Wield","iconBasename":"ability_dualwield","iconPath":"/assets/ui/spells/ability_dualwield.png","sourceUnlockLevel":1,"talentNodeId":"talent-1690","ranks":[{"spellId":30798,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Allows one-hand and off-hand weapons to be equipped in the off-hand.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":674,"coefficient":1}]}]},{"id":"wow335-shaman-earth-shield","name":"Earth Shield","iconBasename":"spell_nature_skinofearth","iconPath":"/assets/ui/spells/spell_nature_skinofearth.png","sourceUnlockLevel":1,"talentNodeId":"talent-1698","ranks":[{"spellId":974,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 150. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":32593,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 205. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":205,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":32594,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 270. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":270,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":49283,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 300. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":49284,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Protects the target with an earthen shield, reducing casting or channeling time lost when damaged by 30% and causing attacks to heal the shielded target for 337. This effect can only occur once every few seconds. the listed amount charges. Lasts 600 sec. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":337,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":149,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":379,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Protects the target with an earthen shield, giving a chance of ignoring spell interruption when damaged and causing attacks to heal the shielded target. This effect can only occur once every few seconds. Limited charges. Earth Shield can only be placed on one target at a time and only one Elemental Shield can be active on a target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-elemental-mastery","name":"Elemental Mastery","iconBasename":"spell_nature_wispheal","iconPath":"/assets/ui/spells/spell_nature_wispheal.png","sourceUnlockLevel":1,"talentNodeId":"talent-573","ranks":[{"spellId":16166,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your next Lightning Bolt, Chain Lightning or Lava Burst spell becomes an instant cast spell. In addition, your Fire, Frost, and Nature damage spells have a 15% increased critical strike chance for 15 sec. Elemental Mastery shares a cooldown with Nature's Swiftness.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":64701,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-healing-wave","name":"Healing Wave","iconBasename":"spell_nature_magicimmunity","iconPath":"/assets/ui/spells/spell_nature_magicimmunity.png","sourceUnlockLevel":1,"ranks":[{"spellId":331,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Heals a friendly target for 44.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":34,"dieSides":11,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.23100000619888306}]},{"spellId":332,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Heals a friendly target for 78.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":64,"dieSides":15,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5099999904632568}]},{"spellId":547,"rank":3,"level":12,"sourceLevel":12,"maxScalingLevel":17,"description":"Heals a friendly target for 155.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":129,"dieSides":27,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.9399999976158142}]},{"spellId":913,"rank":4,"level":18,"sourceLevel":18,"maxScalingLevel":23,"description":"Heals a friendly target for 316.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":268,"dieSides":49,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.4910000562667847}]},{"spellId":939,"rank":5,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Heals a friendly target for 440.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":376,"dieSides":65,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":959,"rank":6,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Heals a friendly target for 622.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":536,"dieSides":87,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":8005,"rank":7,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Heals a friendly target for 854.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":740,"dieSides":115,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10395,"rank":8,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Heals a friendly target for 1167.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1017,"dieSides":151,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":10396,"rank":9,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Heals a friendly target for 1561.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1367,"dieSides":195,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25357,"rank":10,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 1850.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1620,"dieSides":231,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25391,"rank":11,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Heals a friendly target for 1969.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1725,"dieSides":245,"pointsPerLevel":6.300000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":25396,"rank":12,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals a friendly target for 2436.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2134,"dieSides":303,"pointsPerLevel":7.099999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":49272,"rank":13,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals a friendly target for 2996.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2624,"dieSides":373,"pointsPerLevel":8,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":49273,"rank":14,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals a friendly target for 3466.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3034,"dieSides":433,"pointsPerLevel":9,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]}]},{"id":"wow335-shaman-lightning-bolt","name":"Lightning Bolt","iconBasename":"spell_nature_lightning","iconPath":"/assets/ui/spells/spell_nature_lightning.png","sourceUnlockLevel":1,"ranks":[{"spellId":403,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":6,"description":"Casts a bolt of lightning at the target for 15 Nature damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":13,"dieSides":3,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.125}]},{"spellId":529,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":13,"description":"Casts a bolt of lightning at the target for 30 Nature damage.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":26,"dieSides":5,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.31700000166893005}]},{"spellId":548,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Casts a bolt of lightning at the target for 53 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":9,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5609999895095825}]},{"spellId":915,"rank":4,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Casts a bolt of lightning at the target for 95 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":83,"dieSides":13,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":943,"rank":5,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Casts a bolt of lightning at the target for 143 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":125,"dieSides":19,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":6041,"rank":6,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Casts a bolt of lightning at the target for 194 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":172,"dieSides":23,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":10391,"rank":7,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Casts a bolt of lightning at the target for 255 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":227,"dieSides":29,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":10392,"rank":8,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Casts a bolt of lightning at the target for 316 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":282,"dieSides":35,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":15207,"rank":9,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Casts a bolt of lightning at the target for 389 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":347,"dieSides":43,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":15208,"rank":10,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Casts a bolt of lightning at the target for 467 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":419,"dieSides":49,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":25448,"rank":11,"level":62,"sourceLevel":62,"maxScalingLevel":66,"description":"Casts a bolt of lightning at the target for 565 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":495,"dieSides":71,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":25449,"rank":12,"level":67,"sourceLevel":67,"maxScalingLevel":71,"description":"Casts a bolt of lightning at the target for 643 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":563,"dieSides":81,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":49237,"rank":13,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Casts a bolt of lightning at the target for 679 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":595,"dieSides":85,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":49239,"rank":13,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Casts a bolt of lightning at the target for 339 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":297,"dieSides":43,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3569999933242798}]},{"spellId":49238,"rank":14,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Casts a bolt of lightning at the target for 815 Nature damage.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":715,"dieSides":101,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":49240,"rank":14,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Casts a bolt of lightning at the target for 407 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":357,"dieSides":51,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3569999933242798}]}]},{"id":"wow335-shaman-nature-s-swiftness","name":"Nature's Swiftness","iconBasename":"spell_nature_ravenform","iconPath":"/assets/ui/spells/spell_nature_ravenform.png","sourceUnlockLevel":1,"talentNodeId":"talent-591","ranks":[{"spellId":16188,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your next Nature spell with a base casting time less than 10 sec. becomes an instant cast spell. Nature's Swiftness shares a cooldown with Elemental Mastery.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-rockbiter-weapon","name":"Rockbiter Weapon","iconBasename":"spell_nature_rockbiter","iconPath":"/assets/ui/spells/spell_nature_rockbiter.png","sourceUnlockLevel":1,"ranks":[{"spellId":8017,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":6,"description":"Imbue the Shaman's weapon, increasing its damage per second by 2. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":3,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":1,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8018,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":14,"description":"Imbue the Shaman's weapon, increasing its damage per second by 4. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":3,"auraType":0,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":1,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8019,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":22,"description":"Imbue the Shaman's weapon, increasing its damage per second by 6. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":3,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":1,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10399,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":32,"description":"Imbue the Shaman's weapon, increasing its damage per second by 9. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":3,"auraType":0,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":1,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-spirit-weapons","name":"Spirit Weapons","iconBasename":"ability_parry","iconPath":"/assets/ui/spells/ability_parry.png","sourceUnlockLevel":1,"talentNodeId":"talent-616","ranks":[{"spellId":16268,"rank":0,"level":0,"sourceLevel":1,"maxScalingLevel":0,"description":"Gives a chance to parry enemy melee attacks and reduces all threat generated by 30%.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":6,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":18848,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36591,"coefficient":0}]}]},{"id":"wow335-shaman-earth-shock","name":"Earth Shock","iconBasename":"spell_nature_earthshock","iconPath":"/assets/ui/spells/spell_nature_earthshock.png","sourceUnlockLevel":4,"ranks":[{"spellId":8042,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Instantly shocks the target with concussive force, causing 19 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":17,"dieSides":3,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15399999916553497}]},{"spellId":8044,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":13,"description":"Instantly shocks the target with concussive force, causing 34 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":32,"dieSides":3,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21199999749660492}]},{"spellId":8045,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Instantly shocks the target with concussive force, causing 64 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":60,"dieSides":5,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.29899999499320984}]},{"spellId":8046,"rank":4,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Instantly shocks the target with concussive force, causing 127 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":119,"dieSides":9,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10412,"rank":5,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Instantly shocks the target with concussive force, causing 239 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":225,"dieSides":15,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10413,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Instantly shocks the target with concussive force, causing 381 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":359,"dieSides":23,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10414,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Instantly shocks the target with concussive force, causing 545 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":517,"dieSides":29,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":25454,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Instantly shocks the target with concussive force, causing 692 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":658,"dieSides":35,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":49230,"rank":9,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Instantly shocks the target with concussive force, causing 761 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":723,"dieSides":39,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":49231,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Instantly shocks the target with concussive force, causing 895 Nature damage and reducing melee attack speed by 10% for 8 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":138,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":849,"dieSides":47,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]}]},{"id":"wow335-shaman-stoneskin-totem","name":"Stoneskin Totem","iconBasename":"spell_nature_stoneskintotem","iconPath":"/assets/ui/spells/spell_nature_stoneskintotem.png","sourceUnlockLevel":4,"ranks":[{"spellId":8071,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 95. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5873,"triggerSpellId":0,"coefficient":0}]},{"spellId":8154,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 200. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5919,"triggerSpellId":0,"coefficient":0}]},{"spellId":8155,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 310. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5920,"triggerSpellId":0,"coefficient":0}]},{"spellId":10406,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 420. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7366,"triggerSpellId":0,"coefficient":0}]},{"spellId":10407,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 530. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7367,"triggerSpellId":0,"coefficient":0}]},{"spellId":10408,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 640. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7368,"triggerSpellId":0,"coefficient":0}]},{"spellId":25508,"rank":7,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 750. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15470,"triggerSpellId":0,"coefficient":0}]},{"spellId":25509,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 860. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15474,"triggerSpellId":0,"coefficient":0}]},{"spellId":58751,"rank":9,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Summons a Stoneskin Totem with 5 health at the feet of the caster. The totem protects party and raid members within the listed amount yards, increasing armor by 980. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31175,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-earthbind-totem","name":"Earthbind Totem","iconBasename":"spell_nature_strengthofearthtotem02","iconPath":"/assets/ui/spells/spell_nature_strengthofearthtotem02.png","sourceUnlockLevel":6,"ranks":[{"spellId":2484,"rank":0,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Summons an Earthbind Totem with 5 health at the feet of the caster for 45 sec that slows the movement speed of enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2630,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-lightning-shield","name":"Lightning Shield","iconBasename":"spell_nature_lightningshield","iconPath":"/assets/ui/spells/spell_nature_lightningshield.png","sourceUnlockLevel":8,"ranks":[{"spellId":324,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 13 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.1469999998807907}]},{"spellId":325,"rank":2,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 29 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.22699999809265137}]},{"spellId":905,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 51 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":51,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":945,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 80 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":8134,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 114 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":114,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":10431,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 154 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":154,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":10432,"rank":7,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 198 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":198,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":25469,"rank":8,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 232 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":232,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":25472,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 287 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":287,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":26372,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Casts a bolt of lightning at the target for 287 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":287,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2669999897480011}]},{"spellId":49278,"rank":10,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Casts a bolt of lightning at the target for 325 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":325,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2669999897480011}]},{"spellId":49280,"rank":10,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 325 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":325,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]},{"spellId":49279,"rank":11,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Casts a bolt of lightning at the target for 380 Nature damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":380,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2669999897480011}]},{"spellId":49281,"rank":11,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"The caster is surrounded by the listed amount balls of lightning. When a spell, melee or ranged attack hits the caster, the attacker will be struck for 380 Nature damage. This expends one lightning ball. Only one ball will fire every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":380,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":26545,"coefficient":0.2669999897480011}]}]},{"id":"wow335-shaman-stoneclaw-totem","name":"Stoneclaw Totem","iconBasename":"spell_nature_stoneclawtotem","iconPath":"/assets/ui/spells/spell_nature_stoneclawtotem.png","sourceUnlockLevel":8,"ranks":[{"spellId":5730,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 50 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 21 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3579,"triggerSpellId":0,"coefficient":0}]},{"spellId":6390,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 150 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 58 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3911,"triggerSpellId":0,"coefficient":0}]},{"spellId":6391,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 220 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 108 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":220,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3912,"triggerSpellId":0,"coefficient":0}]},{"spellId":6392,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 280 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 170 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":280,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3913,"triggerSpellId":0,"coefficient":0}]},{"spellId":10427,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 390 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 244 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":390,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7398,"triggerSpellId":0,"coefficient":0}]},{"spellId":10428,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Summons a Stoneclaw Totem with 480 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 330 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":480,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7399,"triggerSpellId":0,"coefficient":0}]},{"spellId":25525,"rank":7,"level":67,"sourceLevel":67,"maxScalingLevel":70,"description":"Summons a Stoneclaw Totem with 1315 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 460 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1315,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15478,"triggerSpellId":0,"coefficient":0}]},{"spellId":58580,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":74,"description":"Summons a Stoneclaw Totem with 1400 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 875 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1400,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31120,"triggerSpellId":0,"coefficient":0}]},{"spellId":58581,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":77,"description":"Summons a Stoneclaw Totem with 1510 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 990 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1510,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31121,"triggerSpellId":0,"coefficient":0}]},{"spellId":58582,"rank":10,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Summons a Stoneclaw Totem with 1620 health at the feet of the caster for 15 sec that taunts creatures within the listed amount yards to attack it. Enemies attacking the Stoneclaw Totem have a the listed amount% chance to be stunned for 3 sec. Stoneclaw totem also protects all your totems, causing them to absorb 1085 damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1620,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31122,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-flame-shock","name":"Flame Shock","iconBasename":"spell_fire_flameshock","iconPath":"/assets/ui/spells/spell_fire_flameshock.png","sourceUnlockLevel":10,"ranks":[{"spellId":8050,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Instantly sears the target with fire, causing 21 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":21,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1340000033378601},{"index":1,"effectType":6,"auraType":3,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.06300000101327896}]},{"spellId":8052,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":23,"description":"Instantly sears the target with fire, causing 45 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1979999989271164},{"index":1,"effectType":6,"auraType":3,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09300000220537186}]},{"spellId":8053,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Instantly sears the target with fire, causing 86 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":86,"dieSides":1,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":10447,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Instantly sears the target with fire, causing 152 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":152,"dieSides":1,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":10448,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Instantly sears the target with fire, causing 230 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":230,"dieSides":1,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":29228,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":67,"description":"Instantly sears the target with fire, causing 309 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":309,"dieSides":1,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":86,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":25457,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Instantly sears the target with fire, causing 377 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":377,"dieSides":1,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":49232,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Instantly sears the target with fire, causing 425 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":425,"dieSides":1,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":119,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":49233,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Instantly sears the target with fire, causing 500 Fire damage immediately and the listed amount Fire damage over 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":500,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":3,"basePoints":139,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]}]},{"id":"wow335-shaman-flametongue-weapon","name":"Flametongue Weapon","iconBasename":"spell_fire_flametounge","iconPath":"/assets/ui/spells/spell_fire_flametounge.png","sourceUnlockLevel":10,"ranks":[{"spellId":8024,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":16,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 7. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0}]},{"spellId":8027,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":24,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 13. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":8030,"rank":3,"level":26,"sourceLevel":26,"maxScalingLevel":34,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 16. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":16339,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":44,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 26. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":523,"triggerSpellId":0,"coefficient":0}]},{"spellId":16341,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":54,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 39. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1665,"triggerSpellId":0,"coefficient":0}]},{"spellId":16342,"rank":6,"level":56,"sourceLevel":56,"maxScalingLevel":64,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 45. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1666,"triggerSpellId":0,"coefficient":0}]},{"spellId":25489,"rank":7,"level":64,"sourceLevel":64,"maxScalingLevel":68,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 96. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2634,"triggerSpellId":0,"coefficient":0}]},{"spellId":58785,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 157. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3779,"triggerSpellId":0,"coefficient":0}]},{"spellId":58790,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Imbue the Shaman's weapon with fire, increasing total spell damage by 211. Each hit causes the listed amount to the listed amount additional Fire damage, based on the speed of the weapon. Slower weapons cause more fire damage per swing. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3781,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-searing-totem","name":"Searing Totem","iconBasename":"spell_fire_searingtotem","iconPath":"/assets/ui/spells/spell_fire_searingtotem.png","sourceUnlockLevel":10,"ranks":[{"spellId":3599,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 30 sec that repeatedly attacks an enemy within the listed amount yards for 11 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2523,"triggerSpellId":0,"coefficient":0}]},{"spellId":6363,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 35 sec that repeatedly attacks an enemy within the listed amount yards for 17 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":35000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3902,"triggerSpellId":0,"coefficient":0}]},{"spellId":6364,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 40 sec that repeatedly attacks an enemy within the listed amount yards for 25 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3903,"triggerSpellId":0,"coefficient":0}]},{"spellId":6365,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 45 sec that repeatedly attacks an enemy within the listed amount yards for 34 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3904,"triggerSpellId":0,"coefficient":0}]},{"spellId":10437,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 50 sec that repeatedly attacks an enemy within the listed amount yards for 45 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7400,"triggerSpellId":0,"coefficient":0}]},{"spellId":10438,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 55 sec that repeatedly attacks an enemy within the listed amount yards for 54 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":55000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7402,"triggerSpellId":0,"coefficient":0}]},{"spellId":25533,"rank":7,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 60 sec that repeatedly attacks an enemy within the listed amount yards for 74 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15480,"triggerSpellId":0,"coefficient":0}]},{"spellId":58699,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 60 sec that repeatedly attacks an enemy within the listed amount yards for 92 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31162,"triggerSpellId":0,"coefficient":0}]},{"spellId":58703,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 60 sec that repeatedly attacks an enemy within the listed amount yards for 103 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31164,"triggerSpellId":0,"coefficient":0}]},{"spellId":58704,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Searing Totem with 5 health at your feet for 60 sec that repeatedly attacks an enemy within the listed amount yards for 120 Fire damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31165,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-strength-of-earth-totem","name":"Strength of Earth Totem","iconBasename":"spell_nature_earthbindtotem","iconPath":"/assets/ui/spells/spell_nature_earthbindtotem.png","sourceUnlockLevel":10,"ranks":[{"spellId":8075,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by 10. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5874,"triggerSpellId":0,"coefficient":0}]},{"spellId":8160,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by 20. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5921,"triggerSpellId":0,"coefficient":0}]},{"spellId":8161,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by 36. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5922,"triggerSpellId":0,"coefficient":0}]},{"spellId":10442,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by 61. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7403,"triggerSpellId":0,"coefficient":0}]},{"spellId":25361,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by 77. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15464,"triggerSpellId":0,"coefficient":0}]},{"spellId":25528,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by 86. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15479,"triggerSpellId":0,"coefficient":0}]},{"spellId":57622,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by 115. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30647,"triggerSpellId":0,"coefficient":0}]},{"spellId":58643,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Strength of Earth Totem with 5 health at the feet of the caster. The totem increases the strength and agility of all party and raid members within the listed amount yards by 155. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31129,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-ancestral-spirit","name":"Ancestral Spirit","iconBasename":"spell_nature_regenerate","iconPath":"/assets/ui/spells/spell_nature_regenerate.png","sourceUnlockLevel":12,"ranks":[{"spellId":2008,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 65 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":120,"triggerSpellId":0,"coefficient":1}]},{"spellId":20609,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 150 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":260,"triggerSpellId":0,"coefficient":1}]},{"spellId":20610,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 250 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":420,"triggerSpellId":0,"coefficient":1}]},{"spellId":20776,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 400 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":600,"triggerSpellId":0,"coefficient":1}]},{"spellId":20777,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 600 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":600,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":800,"triggerSpellId":0,"coefficient":1}]},{"spellId":25590,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 840 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":840,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":890,"triggerSpellId":0,"coefficient":1}]},{"spellId":49277,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 1800 health and the listed amount mana. Cannot be cast when in combat.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1365,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-fire-nova-totem","name":"Fire Nova Totem","iconBasename":"spell_fire_sealoffire","iconPath":"/assets/ui/spells/spell_fire_sealoffire.png","sourceUnlockLevel":12,"ranks":[{"spellId":1535,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 56 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5879,"triggerSpellId":0,"coefficient":0}]},{"spellId":8498,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 116 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6110,"triggerSpellId":0,"coefficient":0}]},{"spellId":8499,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 208 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6111,"triggerSpellId":0,"coefficient":0}]},{"spellId":11314,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 317 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7844,"triggerSpellId":0,"coefficient":0}]},{"spellId":11315,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 442 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7845,"triggerSpellId":0,"coefficient":0}]},{"spellId":25546,"rank":6,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 578 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15482,"triggerSpellId":0,"coefficient":0}]},{"spellId":25547,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 813 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15483,"triggerSpellId":0,"coefficient":0}]},{"spellId":61649,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 843 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32776,"triggerSpellId":0,"coefficient":0}]},{"spellId":61657,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Fire Nova Totem that has 5 health and lasts 5 sec. Unless it is destroyed within 4 sec., the totem inflicts 997 fire damage to enemies within the listed amount yd.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32775,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-purge","name":"Purge","iconBasename":"spell_nature_purge","iconPath":"/assets/ui/spells/spell_nature_purge.png","sourceUnlockLevel":12,"ranks":[{"spellId":370,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Purges the enemy target, removing 1 beneficial magic the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":8012,"rank":2,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Purges the enemy target, removing 2 beneficial magic the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-ghost-wolf","name":"Ghost Wolf","iconBasename":"spell_nature_spiritwolf","iconPath":"/assets/ui/spells/spell_nature_spiritwolf.png","sourceUnlockLevel":16,"ranks":[{"spellId":2645,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Turns the Shaman into a Ghost Wolf, increasing speed by 40%$?s59289[ and regenerating 1% of your maximum health every 5 sec][]. As a Ghost Wolf, the Shaman is less hindered by effects that would reduce movement speed. Only useable outdoors.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":20,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-wind-shear","name":"Wind Shear","iconBasename":"spell_nature_cyclone","iconPath":"/assets/ui/spells/spell_nature_cyclone.png","sourceUnlockLevel":16,"ranks":[{"spellId":57994,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Instantly blasts the target with a gust of wind, causing no damage but interrupting spellcasting and preventing any spell in that school from being cast for 2 sec. Also lowers your threat, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":6000,"gcdMs":0,"durationMs":2000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":26,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":63,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-tremor-totem","name":"Tremor Totem","iconBasename":"spell_nature_tremortotem","iconPath":"/assets/ui/spells/spell_nature_tremortotem.png","sourceUnlockLevel":18,"ranks":[{"spellId":8143,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Summons a Tremor Totem with 5 health at the feet of the caster that shakes the ground around it, removing Fear, Charm and Sleep effects from party members within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":41,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5913,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-frost-shock","name":"Frost Shock","iconBasename":"spell_frost_frostshock","iconPath":"/assets/ui/spells/spell_frost_frostshock.png","sourceUnlockLevel":20,"ranks":[{"spellId":8056,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Instantly shocks the target with frost, causing 95 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":89,"dieSides":7,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":8058,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Instantly shocks the target with frost, causing 220 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":206,"dieSides":15,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10472,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Instantly shocks the target with frost, causing 353 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":333,"dieSides":21,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":10473,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Instantly shocks the target with frost, causing 514 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":486,"dieSides":29,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":25464,"rank":5,"level":68,"sourceLevel":68,"maxScalingLevel":72,"description":"Instantly shocks the target with frost, causing 676 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":640,"dieSides":37,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":49235,"rank":6,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Instantly shocks the target with frost, causing 719 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":681,"dieSides":39,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]},{"spellId":49236,"rank":7,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Instantly shocks the target with frost, causing 848 Frost damage and slowing movement speed by 50%. Lasts 8 sec. Causes a high amount of threat.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":34,"rangeMin":0,"rangeMax":25,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":802,"dieSides":47,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.38600000739097595}]}]},{"id":"wow335-shaman-frostbrand-weapon","name":"Frostbrand Weapon","iconBasename":"spell_frost_frostbrand","iconPath":"/assets/ui/spells/spell_frost_frostbrand.png","sourceUnlockLevel":20,"ranks":[{"spellId":8033,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":26,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 42 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]},{"spellId":8038,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":36,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 63 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":0}]},{"spellId":10456,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":46,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 101 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":524,"triggerSpellId":0,"coefficient":0}]},{"spellId":16355,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":56,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 160 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1667,"triggerSpellId":0,"coefficient":0}]},{"spellId":16356,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":65,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 210 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1668,"triggerSpellId":0,"coefficient":0}]},{"spellId":25500,"rank":6,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 259 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2635,"triggerSpellId":0,"coefficient":0}]},{"spellId":58794,"rank":7,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 391 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3782,"triggerSpellId":0,"coefficient":0}]},{"spellId":58795,"rank":8,"level":76,"sourceLevel":76,"maxScalingLevel":80,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 463 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3783,"triggerSpellId":0,"coefficient":0}]},{"spellId":58796,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Imbue the Shaman's weapon with frost. Each hit has a chance of causing 530 additional Frost damage and slowing the target's movement speed by 50% for 8 sec. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3784,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-healing-stream-totem","name":"Healing Stream Totem","iconBasename":"inv_spear_04","iconPath":"/assets/ui/spells/inv_spear_04.png","sourceUnlockLevel":20,"ranks":[{"spellId":5394,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 6 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3527,"triggerSpellId":0,"coefficient":0}]},{"spellId":6375,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 8 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3906,"triggerSpellId":0,"coefficient":0}]},{"spellId":6377,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 10 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3907,"triggerSpellId":0,"coefficient":0}]},{"spellId":10462,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 12 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3908,"triggerSpellId":0,"coefficient":0}]},{"spellId":10463,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 14 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3909,"triggerSpellId":0,"coefficient":0}]},{"spellId":25567,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 18 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15488,"triggerSpellId":0,"coefficient":0}]},{"spellId":58755,"rank":7,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 20 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31181,"triggerSpellId":0,"coefficient":0}]},{"spellId":58756,"rank":8,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 23 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31182,"triggerSpellId":0,"coefficient":0}]},{"spellId":58757,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Healing Stream Totem with 5 health at the feet of the caster for 300 sec that heals group members within the listed amount yards for 25 every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31185,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-lesser-healing-wave","name":"Lesser Healing Wave","iconBasename":"spell_nature_healingwavelesser","iconPath":"/assets/ui/spells/spell_nature_healingwavelesser.png","sourceUnlockLevel":20,"ranks":[{"spellId":8004,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals a friendly target for 186.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":162,"dieSides":25,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":8008,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Heals a friendly target for 281.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":247,"dieSides":35,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":8010,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Heals a friendly target for 381.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":337,"dieSides":45,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10466,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Heals a friendly target for 514.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":458,"dieSides":57,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10467,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Heals a friendly target for 705.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":631,"dieSides":75,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":10468,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 928.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":832,"dieSides":97,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":25420,"rank":7,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Heals a friendly target for 1185.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1039,"dieSides":147,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":49275,"rank":8,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Heals a friendly target for 1578.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1382,"dieSides":197,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]},{"spellId":49276,"rank":9,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"Heals a friendly target for 1834.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1606,"dieSides":229,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8069999814033508}]}]},{"id":"wow335-shaman-tidal-force","name":"Tidal Force","iconBasename":"spell_frost_frostbolt","iconPath":"/assets/ui/spells/spell_frost_frostbolt.png","sourceUnlockLevel":20,"talentNodeId":"talent-582","ranks":[{"spellId":55198,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases the critical effect chance of your Healing Wave, Lesser Healing Wave and Chain Heal by 60%. Each critical heal reduces the chance by 20%. Lasts 20 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":2000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-water-breathing","name":"Water Breathing","iconBasename":"spell_shadow_demonbreath","iconPath":"/assets/ui/spells/spell_shadow_demonbreath.png","sourceUnlockLevel":22,"ranks":[{"spellId":131,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Allows the target to breathe underwater for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":82,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-frost-resistance-totem","name":"Frost Resistance Totem","iconBasename":"spell_frostresistancetotem_01","iconPath":"/assets/ui/spells/spell_frostresistancetotem_01.png","sourceUnlockLevel":24,"ranks":[{"spellId":8181,"rank":1,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 30, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5926,"triggerSpellId":0,"coefficient":0}]},{"spellId":10478,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 45, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7412,"triggerSpellId":0,"coefficient":0}]},{"spellId":10479,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 60, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7413,"triggerSpellId":0,"coefficient":0}]},{"spellId":25560,"rank":4,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 70, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15486,"triggerSpellId":0,"coefficient":0}]},{"spellId":58741,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 85, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31171,"triggerSpellId":0,"coefficient":0}]},{"spellId":58745,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Frost Resistance Totem with 5 health at the feet of the caster for 300 sec. The totem increases party and raid members' frost resistance by 130, if within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31172,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-far-sight","name":"Far Sight","iconBasename":"spell_nature_farsight","iconPath":"/assets/ui/spells/spell_nature_farsight.png","sourceUnlockLevel":26,"ranks":[{"spellId":6196,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Changes the caster's viewpoint to the targeted location. Lasts 60 sec. Only useable outdoors.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":72,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-magma-totem","name":"Magma Totem","iconBasename":"spell_fire_selfdestruct","iconPath":"/assets/ui/spells/spell_fire_selfdestruct.png","sourceUnlockLevel":26,"ranks":[{"spellId":8190,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 38 Fire damage to creatures within the listed amount yards every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5929,"triggerSpellId":0,"coefficient":0}]},{"spellId":10585,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 64 Fire damage to creatures within the listed amount yards every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7464,"triggerSpellId":0,"coefficient":0}]},{"spellId":10586,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 94 Fire damage to creatures within the listed amount yards every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7465,"triggerSpellId":0,"coefficient":0}]},{"spellId":10587,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 131 Fire damage to creatures within the listed amount yards every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7466,"triggerSpellId":0,"coefficient":0}]},{"spellId":25552,"rank":5,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 180 Fire damage to creatures within the listed amount yards every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15484,"triggerSpellId":0,"coefficient":0}]},{"spellId":58731,"rank":6,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 314 Fire damage to creatures within the listed amount yards every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31166,"triggerSpellId":0,"coefficient":0}]},{"spellId":58734,"rank":7,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Summons a Magma Totem with 5 health at the feet of the caster for the listed amount sec-1} sec that causes 371 Fire damage to creatures within the listed amount yards every 2 seconds.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31167,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-mana-spring-totem","name":"Mana Spring Totem","iconBasename":"spell_nature_manaregentotem","iconPath":"/assets/ui/spells/spell_nature_manaregentotem.png","sourceUnlockLevel":26,"ranks":[{"spellId":5675,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 16 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3573,"triggerSpellId":0,"coefficient":0}]},{"spellId":10495,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 21 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7414,"triggerSpellId":0,"coefficient":0}]},{"spellId":10496,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 26 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7415,"triggerSpellId":0,"coefficient":0}]},{"spellId":10497,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 31 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7416,"triggerSpellId":0,"coefficient":0}]},{"spellId":25570,"rank":5,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 41 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15489,"triggerSpellId":0,"coefficient":0}]},{"spellId":58771,"rank":6,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 73 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31186,"triggerSpellId":0,"coefficient":0}]},{"spellId":58773,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 82 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31189,"triggerSpellId":0,"coefficient":0}]},{"spellId":58774,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Mana Spring Totem with 5 health at the feet of the caster for 300 sec that restores 91 mana every 5 seconds to all party and raid members within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31190,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-fire-resistance-totem","name":"Fire Resistance Totem","iconBasename":"spell_fireresistancetotem_01","iconPath":"/assets/ui/spells/spell_fireresistancetotem_01.png","sourceUnlockLevel":28,"ranks":[{"spellId":8184,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 30.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5927,"triggerSpellId":0,"coefficient":0}]},{"spellId":10537,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 45.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7424,"triggerSpellId":0,"coefficient":0}]},{"spellId":10538,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 60.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7425,"triggerSpellId":0,"coefficient":0}]},{"spellId":25563,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 70.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15487,"triggerSpellId":0,"coefficient":0}]},{"spellId":58737,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 85.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31169,"triggerSpellId":0,"coefficient":0}]},{"spellId":58739,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Fire Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the fire resistance of party and raid members within the listed amount yards by 130.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31170,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-flametongue-totem","name":"Flametongue Totem","iconBasename":"spell_nature_guardianward","iconPath":"/assets/ui/spells/spell_nature_guardianward.png","sourceUnlockLevel":28,"ranks":[{"spellId":8227,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 25. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5950,"triggerSpellId":0,"coefficient":0}]},{"spellId":8249,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 37. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6012,"triggerSpellId":0,"coefficient":0}]},{"spellId":10526,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 49. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7423,"triggerSpellId":0,"coefficient":0}]},{"spellId":16387,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 62. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10557,"triggerSpellId":0,"coefficient":0}]},{"spellId":25557,"rank":5,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 73. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15485,"triggerSpellId":0,"coefficient":0}]},{"spellId":58649,"rank":6,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 106. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31132,"triggerSpellId":0,"coefficient":0}]},{"spellId":58652,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 122. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31158,"triggerSpellId":0,"coefficient":0}]},{"spellId":58656,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Flametongue Totem with 5 health at the feet of the caster. Party and raid members within the listed amount yards of the totem have their spell damage and healing increased by up to 144. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31133,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-water-walking","name":"Water Walking","iconBasename":"spell_frost_windwalkon","iconPath":"/assets/ui/spells/spell_frost_windwalkon.png","sourceUnlockLevel":28,"ranks":[{"spellId":546,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Allows the friendly target to walk across water for 600 sec. Any damage will cancel the effect.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":104,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-astral-recall","name":"Astral Recall","iconBasename":"spell_nature_astralrecal","iconPath":"/assets/ui/spells/spell_nature_astralrecal.png","sourceUnlockLevel":30,"ranks":[{"spellId":556,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Yanks the caster through the twisting nether back to the listed amount Speak to an Innkeeper in a different place to change your home location.","castTimeMs":10000,"cooldownMs":900000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":9,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-grounding-totem","name":"Grounding Totem","iconBasename":"spell_nature_groundingtotem","iconPath":"/assets/ui/spells/spell_nature_groundingtotem.png","sourceUnlockLevel":30,"ranks":[{"spellId":8177,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Grounding Totem with 5 health at the feet of the caster that will redirect one harmful spell cast on a nearby party member to itself, destroying the totem. Will not redirect area of effect spells. Lasts 45 sec.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1000,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5925,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-nature-resistance-totem","name":"Nature Resistance Totem","iconBasename":"spell_nature_natureresistancetotem","iconPath":"/assets/ui/spells/spell_nature_natureresistancetotem.png","sourceUnlockLevel":30,"ranks":[{"spellId":10595,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Nature Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the nature resistance of party and raid members within the listed amount yards by 30.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7467,"triggerSpellId":0,"coefficient":0}]},{"spellId":10600,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Summons a Nature Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the nature resistance of party and raid members within the listed amount yards by 45.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7468,"triggerSpellId":0,"coefficient":0}]},{"spellId":10601,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Nature Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the nature resistance of party and raid members within the listed amount yards by 60.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7469,"triggerSpellId":0,"coefficient":0}]},{"spellId":25574,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Summons a Nature Resistance Totem with 5 health at the feet of the caster for 300 sec that increases the nature resistance of party and raid members within the listed amount yards by 70.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15490,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-reincarnation","name":"Reincarnation","iconBasename":"spell_nature_reincarnation","iconPath":"/assets/ui/spells/spell_nature_reincarnation.png","sourceUnlockLevel":30,"ranks":[{"spellId":21169,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":0,"cooldownMs":3600000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":94,"auraType":0,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-totemic-recall","name":"Totemic Recall","iconBasename":"spell_shaman_totemrecall","iconPath":"/assets/ui/spells/spell_shaman_totemrecall.png","sourceUnlockLevel":30,"ranks":[{"spellId":36936,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Returns your totems to the earth, giving you 25% of the mana required to cast each totem destroyed by Totemic Recall.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":110,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-windfury-weapon","name":"Windfury Weapon","iconBasename":"spell_nature_cyclone","iconPath":"/assets/ui/spells/spell_nature_cyclone.png","sourceUnlockLevel":30,"ranks":[{"spellId":8232,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":38,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 46 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":283,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":46,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8235,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":48,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 119 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":284,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":119,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10486,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":58,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 249 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":525,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":249,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":16362,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":68,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 333 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1669,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":333,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25505,"rank":5,"level":68,"sourceLevel":68,"maxScalingLevel":76,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 445 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2636,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":445,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":58801,"rank":6,"level":71,"sourceLevel":71,"maxScalingLevel":79,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 835 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3785,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":835,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":58803,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":84,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 1090 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3786,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":1090,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":58804,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":88,"description":"Imbue the Shaman's weapon with wind. Each hit has a 20% chance of dealing additional damage equal to two extra attacks with 1250 extra attack power. Lasts 30 minutes.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":54,"auraType":0,"basePoints":1800,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3787,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":1250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-chain-lightning","name":"Chain Lightning","iconBasename":"spell_nature_chainlightning","iconPath":"/assets/ui/spells/spell_nature_chainlightning.png","sourceUnlockLevel":32,"ranks":[{"spellId":421,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Hurls a lightning bolt at the enemy, dealing 217 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":191,"dieSides":27,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":930,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Hurls a lightning bolt at the enemy, dealing 311 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":277,"dieSides":35,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":2860,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Hurls a lightning bolt at the enemy, dealing 424 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":378,"dieSides":47,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":10605,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Hurls a lightning bolt at the enemy, dealing 551 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":493,"dieSides":59,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":25439,"rank":5,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Hurls a lightning bolt at the enemy, dealing 687 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":603,"dieSides":85,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":25442,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Hurls a lightning bolt at the enemy, dealing 838 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":734,"dieSides":105,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":49268,"rank":7,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Hurls a lightning bolt at the enemy, dealing 459 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":403,"dieSides":57,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2854999899864197}]},{"spellId":49270,"rank":7,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Hurls a lightning bolt at the enemy, dealing 920 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":806,"dieSides":115,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":49269,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Hurls a lightning bolt at the enemy, dealing 555 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":487,"dieSides":69,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2854999899864197}]},{"spellId":49271,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Hurls a lightning bolt at the enemy, dealing 1111 Nature damage and then jumping to additional nearby enemies. Each jump reduces the damage by 30%. Affects the listed amount total targets.","castTimeMs":2000,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":973,"dieSides":139,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]}]},{"id":"wow335-shaman-windfury-totem","name":"Windfury Totem","iconBasename":"spell_nature_windfury","iconPath":"/assets/ui/spells/spell_nature_windfury.png","sourceUnlockLevel":32,"ranks":[{"spellId":8512,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Summons a Windfury Totem with 5 health at the feet of the caster. The totem provides 16% melee haste to all party and raid members within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":6112,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-sentry-totem","name":"Sentry Totem","iconBasename":"spell_nature_removecurse","iconPath":"/assets/ui/spells/spell_nature_removecurse.png","sourceUnlockLevel":34,"ranks":[{"spellId":6495,"rank":0,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Summons an immobile Sentry Totem with 100 health at your feet for 300 sec that allows vision of nearby area and warns of enemies that attack it. Right-Click on buff to switch back and forth between totem sight and shaman sight.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":3968,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-cleansing-totem","name":"Cleansing Totem","iconBasename":"spell_nature_diseasecleansingtotem","iconPath":"/assets/ui/spells/spell_nature_diseasecleansingtotem.png","sourceUnlockLevel":38,"ranks":[{"spellId":8170,"rank":0,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Summons a Cleansing Totem with 5 health at the feet of the caster that attempts to remove 1 disease and 1 poison effect from party members within the listed amount yards every 3 seconds. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5924,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-chain-heal","name":"Chain Heal","iconBasename":"spell_nature_healingwavegreater","iconPath":"/assets/ui/spells/spell_nature_healingwavegreater.png","sourceUnlockLevel":40,"ranks":[{"spellId":1064,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Heals the friendly target for 368, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":320,"dieSides":49,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":10622,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Heals the friendly target for 465, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":405,"dieSides":61,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":10623,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Heals the friendly target for 629, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":551,"dieSides":79,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":25422,"rank":4,"level":61,"sourceLevel":61,"maxScalingLevel":66,"description":"Heals the friendly target for 691, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":605,"dieSides":87,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":25423,"rank":5,"level":68,"sourceLevel":68,"maxScalingLevel":73,"description":"Heals the friendly target for 942, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":826,"dieSides":117,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":55458,"rank":6,"level":74,"sourceLevel":74,"maxScalingLevel":79,"description":"Heals the friendly target for 1034, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":906,"dieSides":129,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]},{"spellId":55459,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals the friendly target for 1205, then jumps to heal additional nearby targets. If cast on a party member, the heal will only jump to other party members. Each jump reduces the effectiveness of the heal by 40%. Heals the listed amount total targets.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1055,"dieSides":151,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":45,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.343000054359436}]}]},{"id":"wow335-shaman-cleanse-spirit","name":"Cleanse Spirit","iconBasename":"ability_shaman_cleansespirit","iconPath":"/assets/ui/spells/ability_shaman_cleansespirit.png","sourceUnlockLevel":40,"talentNodeId":"talent-2084","ranks":[{"spellId":51886,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Cleanse the spirit of a friendly target, removing 1 poison effect, 1 disease effect, and 1 curse effect.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-mana-tide-totem","name":"Mana Tide Totem","iconBasename":"spell_frost_summonwaterelemental","iconPath":"/assets/ui/spells/spell_frost_summonwaterelemental.png","sourceUnlockLevel":40,"talentNodeId":"talent-590","ranks":[{"spellId":16190,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Mana Tide Totem with 10% of the caster's health at the feet of the caster for the listed amount sec-1} sec that restores 6% of total mana every 3 seconds to group members within the listed amount yards.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1000,"durationMs":13000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":42,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10467,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-stormstrike","name":"Stormstrike","iconBasename":"ability_shaman_stormstrike","iconPath":"/assets/ui/spells/ability_shaman_stormstrike.png","sourceUnlockLevel":40,"talentNodeId":"talent-901","ranks":[{"spellId":17364,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack with both weapons. In addition, the next the listed amount sources of Nature damage dealt to the target from the Shaman are increased by 20%. Lasts 12 sec.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":32175,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":32176,"coefficient":0}]},{"spellId":32175,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack with both weapons. In addition, the next 2 sources of Nature damage dealt to the target are increased by 20%. Lasts 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":32176,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Instantly attack with both weapons. In addition, the next 2 sources of Nature damage dealt to the target are increased by 20%. Lasts 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-lava-lash","name":"Lava Lash","iconBasename":"ability_shaman_lavalash","iconPath":"/assets/ui/spells/ability_shaman_lavalash.png","sourceUnlockLevel":41,"talentNodeId":"talent-2249","ranks":[{"spellId":60103,"rank":1,"level":41,"sourceLevel":41,"maxScalingLevel":0,"description":"You charge your off-hand weapon with lava, instantly dealing 100% off-hand Weapon damage. Damage is increased by 25% if your off-hand weapon is enchanted with Flametongue.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":2,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-feral-spirit","name":"Feral Spirit","iconBasename":"spell_shaman_feralspirit","iconPath":"/assets/ui/spells/spell_shaman_feralspirit.png","sourceUnlockLevel":50,"talentNodeId":"talent-2058","ranks":[{"spellId":51533,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons two Spirit Wolves under the command of the Shaman, lasting 45 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":1,"radius":2,"periodMs":0,"miscValue":29264,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-shamanistic-rage","name":"Shamanistic Rage","iconBasename":"spell_nature_shamanrage","iconPath":"/assets/ui/spells/spell_nature_shamanrage.png","sourceUnlockLevel":50,"talentNodeId":"talent-1693","ranks":[{"spellId":30823,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Reduces all damage taken by 30% and gives your successful melee attacks a chance to regenerate mana equal to 15% of your attack power. This spell is usable while stunned. Lasts 15 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":30824,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":30824,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Reduces all damage taken by 30% and gives your successful melee attacks a chance to regenerate mana equal to 15% of your attack power. This spell is usable while stunned. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":30,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-totem-of-wrath","name":"Totem of Wrath","iconBasename":"spell_fire_totemofwrath","iconPath":"/assets/ui/spells/spell_fire_totemofwrath.png","sourceUnlockLevel":50,"talentNodeId":"talent-1687","ranks":[{"spellId":30706,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a Totem of Wrath with 5 health at the feet of the caster. The totem increases spell power by 100 for all party and raid members, and increases the critical strike chance of all attacks by 3% against all enemies within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17539,"triggerSpellId":0,"coefficient":0}]},{"spellId":57720,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Summons a Totem of Wrath with 5 health at the feet of the caster. The totem increases spell power by 120 for all party and raid members, and increases the critical strike chance of of all attacks by 3% against all enemies within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30652,"triggerSpellId":0,"coefficient":0}]},{"spellId":57721,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Summons a Totem of Wrath with 5 health at the feet of the caster. The totem increases the spell power by 140 for all party and raid members, and increases the critical strike chance of all attacks by 3% against all enemies within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30653,"triggerSpellId":0,"coefficient":0}]},{"spellId":57722,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Summons a Totem of Wrath with 5 health at the feet of the caster. The totem increases spell power by 280 for all party and raid members, and increases the critical strike chance of all attacks by 3% against all enemies within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":5,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":44,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":30654,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-riptide","name":"Riptide","iconBasename":"spell_nature_riptide","iconPath":"/assets/ui/spells/spell_nature_riptide.png","sourceUnlockLevel":60,"talentNodeId":"talent-2064","ranks":[{"spellId":61295,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Heals a friendly target for 691 and another the listed amount over 15 sec. Your next Chain Heal cast on that primary target within 15 sec will consume the healing over time effect and increase the amount of the Chain Heal by 25%.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":639,"dieSides":53,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4020000100135803},{"index":1,"effectType":6,"auraType":8,"basePoints":133,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836},{"index":2,"effectType":0,"auraType":0,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-thunderstorm","name":"Thunderstorm","iconBasename":"spell_shaman_thunderstorm","iconPath":"/assets/ui/spells/spell_shaman_thunderstorm.png","sourceUnlockLevel":60,"talentNodeId":"talent-2053","ranks":[{"spellId":51490,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"You call down a bolt of lightning, energizing you and damaging nearby enemies within the listed amount yards. Restores 8% mana to you and deals 629 Nature damage to all nearby enemies, knocking them back 20 yards. This spell is usable while stunned.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":551,"dieSides":79,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1720000058412552},{"index":1,"effectType":137,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":0}]},{"spellId":59156,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"You call down a bolt of lightning, energizing you and damaging nearby enemies within the listed amount yards. Restores 8% mana to you and deals 1226 Nature damage to all nearby enemies, knocking them back 20 yards. This spell is usable while stunned.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1074,"dieSides":153,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1720000058412552},{"index":1,"effectType":137,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":0}]},{"spellId":59158,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":80,"description":"You call down a bolt of lightning, energizing you and damaging nearby enemies within the listed amount yards. Restores 8% mana to you and deals 1400 Nature damage to all nearby enemies, knocking them back 20 yards. This spell is usable while stunned.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1226,"dieSides":175,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1720000058412552},{"index":1,"effectType":137,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":0}]},{"spellId":59159,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":85,"description":"You call down a bolt of lightning, energizing you and damaging nearby enemies within the listed amount yards. Restores 8% mana to you and deals 1656 Nature damage to all nearby enemies, knocking them back 20 yards. This spell is usable while stunned.","castTimeMs":0,"cooldownMs":45000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1450,"dieSides":207,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1720000058412552},{"index":1,"effectType":137,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":300,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-water-shield","name":"Water Shield","iconBasename":"ability_shaman_watershield","iconPath":"/assets/ui/spells/ability_shaman_watershield.png","sourceUnlockLevel":62,"ranks":[{"spellId":24398,"rank":7,"level":62,"sourceLevel":62,"maxScalingLevel":66,"description":"The caster is surrounded by the listed amount globes of water, granting 43 mana per 5 sec. When a spell, melee or ranged attack hits the caster, 170 mana is restored to the caster. This expends one water globe. Only one globe will activate every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":170,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":23575,"coefficient":1},{"index":1,"effectType":6,"auraType":85,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33736,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"The caster is surrounded by the listed amount globes of water, granting 50 mana per 5 sec. When a spell, melee or ranged attack hits the caster, 200 mana is restored to the caster. This expends one water globe. Only one globe will activate every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":200,"dieSides":1,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":33737,"coefficient":1},{"index":1,"effectType":6,"auraType":85,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":57960,"rank":9,"level":76,"sourceLevel":76,"maxScalingLevel":80,"description":"The caster is surrounded by the listed amount globes of water, granting 100 mana per 5 sec. When a spell, melee or ranged attack hits the caster, 400 mana is restored to the caster. This expends one water globe. Only one globe will activate every few seconds. Lasts 600 sec. Only one Elemental Shield can be active on the Shaman at any one time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":400,"dieSides":1,"pointsPerLevel":7,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":57961,"coefficient":1},{"index":1,"effectType":6,"auraType":85,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-wrath-of-air-totem","name":"Wrath of Air Totem","iconBasename":"spell_nature_slowingtotem","iconPath":"/assets/ui/spells/spell_nature_slowingtotem.png","sourceUnlockLevel":64,"ranks":[{"spellId":3738,"rank":0,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Summons a Wrath of Air Totem with 5 health at the feet of the caster. The totem provides 5% spell haste to all party and raid members within the listed amount yards. Lasts 300 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":43,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15447,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-earth-elemental-totem","name":"Earth Elemental Totem","iconBasename":"spell_nature_earthelemental_totem","iconPath":"/assets/ui/spells/spell_nature_earthelemental_totem.png","sourceUnlockLevel":66,"ranks":[{"spellId":2062,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Summon an elemental totem that calls forth a greater earth elemental to protect the caster and the listed amount allies. Lasts 120 sec.","castTimeMs":0,"cooldownMs":1200000,"gcdMs":1000,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":7400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":41,"radius":5,"periodMs":0,"miscValue":15430,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-shaman-bloodlust","name":"Bloodlust","iconBasename":"spell_nature_bloodlust","iconPath":"/assets/ui/spells/spell_nature_bloodlust.png","sourceUnlockLevel":70,"ranks":[{"spellId":2825,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Increases melee, ranged, and spell casting speed by 30% for all party and raid members. Lasts 40 sec. After the completion of this effect, those affected will become Sated and unable to benefit from Bloodlust again for 600 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":192,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":61,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-heroism","name":"Heroism","iconBasename":"ability_shaman_heroism","iconPath":"/assets/ui/spells/ability_shaman_heroism.png","sourceUnlockLevel":70,"ranks":[{"spellId":32182,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Increases melee, ranged, and spell casting speed by 30% for all party and raid members. Lasts 40 sec. After the completion of this effect, those affected will become Exhausted and unable to benefit from Heroism again for 600 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":192,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":61,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-shaman-lava-burst","name":"Lava Burst","iconBasename":"spell_shaman_lavaburst","iconPath":"/assets/ui/spells/spell_shaman_lavaburst.png","sourceUnlockLevel":80,"ranks":[{"spellId":60043,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You hurl molten lava at the target, dealing 1518 Fire damage. If your Flame Shock is on the target, Lava Burst will consume the Flame Shock, causing Lava Burst to critically hit.","castTimeMs":2000,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1192,"dieSides":327,"pointsPerLevel":6.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}],"mage":[{"id":"wow335-mage-arcane-intellect","name":"Arcane Intellect","iconBasename":"spell_holy_magicalsentry","iconPath":"/assets/ui/spells/spell_holy_magicalsentry.png","sourceUnlockLevel":1,"ranks":[{"spellId":1459,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":10,"description":"Increases the target's Intellect by 2 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":1460,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":24,"description":"Increases the target's Intellect by 7 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":1461,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":38,"description":"Increases the target's Intellect by 15 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":10156,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":52,"description":"Increases the target's Intellect by 22 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":22,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":10157,"rank":5,"level":56,"sourceLevel":56,"maxScalingLevel":66,"description":"Increases the target's Intellect by 31 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":27126,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Increases the target's Intellect by 40 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":42995,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Increases the target's Intellect by 60 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-power","name":"Arcane Power","iconBasename":"spell_nature_lightning","iconPath":"/assets/ui/spells/spell_nature_lightning.png","sourceUnlockLevel":1,"talentNodeId":"talent-87","ranks":[{"spellId":12042,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your spells deal 20% more damage while costing 20% more mana to cast. This effect lasts the listed amount","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":108,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":22,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-blazing-speed","name":"Blazing Speed","iconBasename":"spell_fire_burningspeed","iconPath":"/assets/ui/spells/spell_fire_burningspeed.png","sourceUnlockLevel":1,"passive":true,"ranks":[{"spellId":31643,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Gives you a chance when hit by a melee or ranged attack to increase your movement speed by 50% and dispel all movement impairing effects. This effect lasts 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":108,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":108,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-burnout","name":"Burnout","iconBasename":"ability_mage_burnout","iconPath":"/assets/ui/spells/ability_mage_burnout.png","sourceUnlockLevel":1,"passive":true,"ranks":[{"spellId":44450,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Increases your spell critical damage bonus with all spells but your spell criticals cost additional mana.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-fiery-payback","name":"Fiery Payback","iconBasename":"ability_mage_fierypayback","iconPath":"/assets/ui/spells/ability_mage_fierypayback.png","sourceUnlockLevel":1,"talentNodeId":"talent-1848","ranks":[{"spellId":64353,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When below 35% health all damage taken is reduced by 10% and your Pyroblast spell's cast time is reduced by the listed amount secs while the cooldown is increased by the listed amount secs. In addition, melee and ranged attacks made against you have a the listed amount% chance to disarm your attacker's main hand and ranged weapons.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":44440,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":64350,"coefficient":0}]},{"spellId":64357,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"When below 35% health all damage taken is reduced by 20% and your Pyroblast spell's cast time is reduced by the listed amount secs while the cooldown is increased by the listed amount secs. In addition, melee and ranged attacks made against you have a the listed amount% chance to disarm your attacker's main hand and ranged weapons.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":44441,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":64349,"coefficient":0}]}]},{"id":"wow335-mage-fireball","name":"Fireball","iconBasename":"spell_fire_flamebolt","iconPath":"/assets/ui/spells/spell_fire_flamebolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":133,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Hurls a fiery ball that causes 22 Fire damage and an additional the listed amount Fire damage over 4 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":14,"dieSides":9,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.12300000339746475},{"index":1,"effectType":6,"auraType":3,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":143,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":10,"description":"Hurls a fiery ball that causes 45 Fire damage and an additional the listed amount Fire damage over 6 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":31,"dieSides":15,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2709999978542328},{"index":1,"effectType":6,"auraType":3,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":145,"rank":3,"level":12,"sourceLevel":12,"maxScalingLevel":16,"description":"Hurls a fiery ball that causes 73 Fire damage and an additional the listed amount Fire damage over 6 sec.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":53,"dieSides":21,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5},{"index":1,"effectType":6,"auraType":3,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3140,"rank":4,"level":18,"sourceLevel":18,"maxScalingLevel":22,"description":"Hurls a fiery ball that causes 116 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":84,"dieSides":33,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7929999828338623},{"index":1,"effectType":6,"auraType":3,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8400,"rank":5,"level":24,"sourceLevel":24,"maxScalingLevel":28,"description":"Hurls a fiery ball that causes 187 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":139,"dieSides":49,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8401,"rank":6,"level":30,"sourceLevel":30,"maxScalingLevel":34,"description":"Hurls a fiery ball that causes 265 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":199,"dieSides":67,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8402,"rank":7,"level":36,"sourceLevel":36,"maxScalingLevel":40,"description":"Hurls a fiery ball that causes 335 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":255,"dieSides":81,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10148,"rank":8,"level":42,"sourceLevel":42,"maxScalingLevel":46,"description":"Hurls a fiery ball that causes 414 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":318,"dieSides":97,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10149,"rank":9,"level":48,"sourceLevel":48,"maxScalingLevel":52,"description":"Hurls a fiery ball that causes 506 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":392,"dieSides":115,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10150,"rank":10,"level":54,"sourceLevel":54,"maxScalingLevel":58,"description":"Hurls a fiery ball that causes 609 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":475,"dieSides":135,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10151,"rank":11,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Hurls a fiery ball that causes 715 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":561,"dieSides":155,"pointsPerLevel":3.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25306,"rank":12,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Hurls a fiery ball that causes 760 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":596,"dieSides":165,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":19,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27070,"rank":13,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Hurls a fiery ball that causes 805 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":633,"dieSides":173,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":38692,"rank":14,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Hurls a fiery ball that causes 913 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":717,"dieSides":197,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":23,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42832,"rank":15,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Hurls a fiery ball that causes 997 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":783,"dieSides":215,"pointsPerLevel":4.599999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42833,"rank":16,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Hurls a fiery ball that causes 1132 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":888,"dieSides":245,"pointsPerLevel":5.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-frost-armor","name":"Frost Armor","iconBasename":"spell_frost_frostarmor02","iconPath":"/assets/ui/spells/spell_frost_frostarmor02.png","sourceUnlockLevel":1,"ranks":[{"spellId":168,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Increases Armor by 30. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6136,"coefficient":0}]},{"spellId":7300,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Increases Armor by 110. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6136,"coefficient":0}]},{"spellId":7301,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases Armor by 200. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":6136,"coefficient":0}]}]},{"id":"wow335-mage-presence-of-mind","name":"Presence of Mind","iconBasename":"spell_nature_enchantarmor","iconPath":"/assets/ui/spells/spell_nature_enchantarmor.png","sourceUnlockLevel":1,"talentNodeId":"talent-86","ranks":[{"spellId":12043,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your next Mage spell with a casting time less than 10 sec becomes an instant cast spell.","castTimeMs":0,"cooldownMs":120000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-conjure-water","name":"Conjure Water","iconBasename":"inv_drink_06","iconPath":"/assets/ui/spells/inv_drink_06.png","sourceUnlockLevel":4,"ranks":[{"spellId":5504,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":13,"description":"Conjures 2 the listed amount of water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5505,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":19,"description":"Conjures 2 the listed amount of fresh water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5506,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"Conjures 2 the listed amount of purified water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6127,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"Conjures 2 the listed amount of spring water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10138,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Conjures 2 the listed amount of mineral water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10139,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Conjures 2 the listed amount of sparkling water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10140,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Conjures 10 the listed amount of crystal water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":37420,"rank":8,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Conjures 10 the listed amount of mountain spring water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27090,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"Conjures 10 the listed amount of glacier water, providing the mage and the listed amount allies with something to drink. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":40,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-frostbolt","name":"Frostbolt","iconBasename":"spell_frost_frostbolt02","iconPath":"/assets/ui/spells/spell_frost_frostbolt02.png","sourceUnlockLevel":4,"ranks":[{"spellId":116,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":8,"description":"Launches a bolt of frost at the enemy, causing 20 Frost damage and slowing movement speed by 40% for 5 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":18,"dieSides":3,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16300000250339508},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":205,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":12,"description":"Launches a bolt of frost at the enemy, causing 35 Frost damage and slowing movement speed by 40% for 6 sec.","castTimeMs":1800,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":31,"dieSides":5,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.26899999380111694},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":837,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":18,"description":"Launches a bolt of frost at the enemy, causing 57 Frost damage and slowing movement speed by 40% for 6 sec.","castTimeMs":2200,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":51,"dieSides":7,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.46299999952316284},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":7322,"rank":4,"level":20,"sourceLevel":20,"maxScalingLevel":24,"description":"Launches a bolt of frost at the enemy, causing 82 Frost damage and slowing movement speed by 40% for 7 sec.","castTimeMs":2600,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":74,"dieSides":9,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7059999704360962},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8406,"rank":5,"level":26,"sourceLevel":26,"maxScalingLevel":30,"description":"Launches a bolt of frost at the enemy, causing 138 Frost damage and slowing movement speed by 40% for 7 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":126,"dieSides":13,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8407,"rank":6,"level":32,"sourceLevel":32,"maxScalingLevel":36,"description":"Launches a bolt of frost at the enemy, causing 190 Frost damage and slowing movement speed by 40% for 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":174,"dieSides":17,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8408,"rank":7,"level":38,"sourceLevel":38,"maxScalingLevel":42,"description":"Launches a bolt of frost at the enemy, causing 247 Frost damage and slowing movement speed by 40% for 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":227,"dieSides":21,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10179,"rank":8,"level":44,"sourceLevel":44,"maxScalingLevel":48,"description":"Launches a bolt of frost at the enemy, causing 316 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":292,"dieSides":25,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10180,"rank":9,"level":50,"sourceLevel":50,"maxScalingLevel":54,"description":"Launches a bolt of frost at the enemy, causing 383 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":353,"dieSides":31,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10181,"rank":10,"level":56,"sourceLevel":56,"maxScalingLevel":60,"description":"Launches a bolt of frost at the enemy, causing 463 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":429,"dieSides":35,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":25304,"rank":11,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Launches a bolt of frost at the enemy, causing 555 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":515,"dieSides":41,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27071,"rank":12,"level":63,"sourceLevel":63,"maxScalingLevel":67,"description":"Launches a bolt of frost at the enemy, causing 578 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":536,"dieSides":43,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27072,"rank":13,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Launches a bolt of frost at the enemy, causing 643 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":597,"dieSides":47,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":38697,"rank":14,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Launches a bolt of frost at the enemy, causing 680 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":630,"dieSides":51,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":42841,"rank":15,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Launches a bolt of frost at the enemy, causing 758 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":702,"dieSides":57,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":42842,"rank":16,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Launches a bolt of frost at the enemy, causing 861 Frost damage and slowing movement speed by 40% for 9 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":799,"dieSides":63,"pointsPerLevel":4.800000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8140000104904175},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-conjure-food","name":"Conjure Food","iconBasename":"inv_misc_food_10","iconPath":"/assets/ui/spells/inv_misc_food_10.png","sourceUnlockLevel":6,"ranks":[{"spellId":587,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":15,"description":"Conjures 2 the listed amount, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":597,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":21,"description":"Conjures 2 the listed amount of bread, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":990,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":31,"description":"Conjures 2 the listed amount of rye, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6129,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":41,"description":"Conjures 2 the listed amount of pumpernickel, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10144,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":51,"description":"Conjures 2 the listed amount of sourdough, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10145,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":61,"description":"Conjures 2 the listed amount roll:sweet rolls;, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":2,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":28612,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Conjures 10 the listed amount roll:cinnamon rolls;, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":48,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33717,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"Conjures 10 the listed amount, providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":40,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":10,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-fire-blast","name":"Fire Blast","iconBasename":"spell_fire_fireball","iconPath":"/assets/ui/spells/spell_fire_fireball.png","sourceUnlockLevel":6,"ranks":[{"spellId":2136,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Blasts the enemy for 32 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":24,"dieSides":9,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20399999618530273}]},{"spellId":2137,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Blasts the enemy for 71 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":57,"dieSides":15,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3319999873638153}]},{"spellId":2138,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Blasts the enemy for 127 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":103,"dieSides":25,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8412,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Blasts the enemy for 202 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":168,"dieSides":35,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8413,"rank":5,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Blasts the enemy for 290 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":242,"dieSides":49,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10197,"rank":6,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Blasts the enemy for 394 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":332,"dieSides":63,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10199,"rank":7,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Blasts the enemy for 509 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":431,"dieSides":79,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27078,"rank":8,"level":61,"sourceLevel":61,"maxScalingLevel":66,"description":"Blasts the enemy for 637 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":539,"dieSides":99,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27079,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"Blasts the enemy for 786 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":664,"dieSides":123,"pointsPerLevel":3.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":42872,"rank":10,"level":74,"sourceLevel":74,"maxScalingLevel":79,"description":"Blasts the enemy for 900 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":760,"dieSides":141,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":42873,"rank":11,"level":80,"sourceLevel":80,"maxScalingLevel":85,"description":"Blasts the enemy for 1095 Fire damage.","castTimeMs":0,"cooldownMs":8000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":925,"dieSides":171,"pointsPerLevel":4.900000095367432,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-mage-arcane-missiles","name":"Arcane Missiles","iconBasename":"spell_nature_starfall","iconPath":"/assets/ui/spells/spell_nature_starfall.png","sourceUnlockLevel":8,"ranks":[{"spellId":5143,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":12,"description":"Launches Arcane Missiles at the enemy, causing 24 Arcane damage every 1 sec for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3000,"channelDurationMs":3000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":7268,"coefficient":0}]},{"spellId":5144,"rank":2,"level":16,"sourceLevel":16,"maxScalingLevel":20,"description":"Launches Arcane Missiles at the enemy, causing 36 Arcane damage every 1 sec for 4 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":4000,"channelDurationMs":4000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":7269,"coefficient":0}]},{"spellId":5145,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":28,"description":"Launches Arcane Missiles at the enemy, causing 56 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":7270,"coefficient":0}]},{"spellId":8416,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":36,"description":"Launches Arcane Missiles at the enemy, causing 83 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":8419,"coefficient":0}]},{"spellId":8417,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":44,"description":"Launches Arcane Missiles at the enemy, causing 115 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":8418,"coefficient":0}]},{"spellId":10211,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":52,"description":"Launches Arcane Missiles at the enemy, causing 151 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":10273,"coefficient":0}]},{"spellId":10212,"rank":7,"level":56,"sourceLevel":56,"maxScalingLevel":60,"description":"Launches Arcane Missiles at the enemy, causing 192 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":10274,"coefficient":0}]},{"spellId":25345,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Launches Arcane Missiles at the enemy, causing 230 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":25346,"coefficient":0}]},{"spellId":27075,"rank":9,"level":63,"sourceLevel":63,"maxScalingLevel":67,"description":"Launches Arcane Missiles at the enemy, causing 240 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":27076,"coefficient":0}]},{"spellId":38699,"rank":10,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Launches Arcane Missiles at the enemy, causing 260 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":38700,"coefficient":0}]},{"spellId":38704,"rank":11,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Launches Arcane Missiles at the enemy, causing 280 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":38703,"coefficient":0}]},{"spellId":42843,"rank":12,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Launches Arcane Missiles at the enemy, causing 320 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42844,"coefficient":0}]},{"spellId":42846,"rank":13,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Launches Arcane Missiles at the enemy, causing 360 Arcane damage every 1 sec for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42845,"coefficient":0}]}]},{"id":"wow335-mage-polymorph","name":"Polymorph","iconBasename":"spell_nature_polymorph","iconPath":"/assets/ui/spells/spell_nature_polymorph.png","sourceUnlockLevel":8,"ranks":[{"spellId":118,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Transforms the enemy into a sheep, forcing it to wander around for up to 20 sec. While wandering, the sheep cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16372,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":12824,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Transforms the enemy into a sheep, forcing it to wander around for up to 30 sec. While wandering, the sheep cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16372,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":12825,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Transforms the enemy into a sheep, forcing it to wander around for up to 40 sec. While wandering, the sheep cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16372,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":12826,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Transforms the enemy into a sheep, forcing it to wander around for up to 50 sec. While wandering, the sheep cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16372,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":28271,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Transforms the enemy into a turtle, forcing it to wander around for up to 50 sec. While wandering, the turtle cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16377,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":28272,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Transforms the enemy into a pig, forcing it to wander around for up to 50 sec. While wandering, the pig cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16371,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61721,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Transforms the enemy into a harmless rabbit, forcing it to scamper around for up to 50 sec. While wandering, the rabbit cannot attack or cast spells but will regenerate very quickly. Any damage will transform the target back into its normal form. Only one target can be polymorphed at a time. Only works on Beasts, Humanoids and Critters.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":50000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":56,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32789,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-frost-nova","name":"Frost Nova","iconBasename":"spell_frost_frostnova","iconPath":"/assets/ui/spells/spell_frost_frostnova.png","sourceUnlockLevel":10,"ranks":[{"spellId":122,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Blasts enemies near the caster for 21 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":19,"dieSides":3,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.017999999225139618},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":865,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Blasts enemies near the caster for 37 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":33,"dieSides":5,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.0430000014603138},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6131,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Blasts enemies near the caster for 58 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":52,"dieSides":7,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.0430000014603138},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10230,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Blasts enemies near the caster for 80 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":70,"dieSides":11,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.0430000014603138},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27088,"rank":5,"level":67,"sourceLevel":67,"maxScalingLevel":74,"description":"Blasts enemies near the caster for 260 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":230,"dieSides":31,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42917,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Blasts enemies near the caster for 415 Frost damage and freezes them in place for up to 8 sec. Damage caused may interrupt the effect.","castTimeMs":0,"cooldownMs":25000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":365,"dieSides":51,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":7,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-dampen-magic","name":"Dampen Magic","iconBasename":"spell_nature_abolishmagic","iconPath":"/assets/ui/spells/spell_nature_abolishmagic.png","sourceUnlockLevel":12,"ranks":[{"spellId":604,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 10 and healing spells by up to 11. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-11,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":8450,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 20 and healing spells by up to 21. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":8451,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 40 and healing spells by up to 43. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":10173,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 60 and healing spells by up to 64. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":10174,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 90 and healing spells by up to 96. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-96,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":33944,"rank":6,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 120 and healing spells by up to 128. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-128,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":43015,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Dampens magic used against the targeted party member, decreasing damage taken from spells by up to 240 and healing spells by up to 255. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":-240,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":-255,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-slow-fall","name":"Slow Fall","iconBasename":"spell_magic_featherfall","iconPath":"/assets/ui/spells/spell_magic_featherfall.png","sourceUnlockLevel":12,"ranks":[{"spellId":130,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Slows friendly party or raid target's falling speed for 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":105,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-explosion","name":"Arcane Explosion","iconBasename":"spell_nature_wispsplode","iconPath":"/assets/ui/spells/spell_nature_wispsplode.png","sourceUnlockLevel":14,"ranks":[{"spellId":1449,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Causes an explosion of arcane magic around the caster, causing 36 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":32,"dieSides":5,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.16599999368190765}]},{"spellId":8437,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Causes an explosion of arcane magic around the caster, causing 63 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":57,"dieSides":7,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":8438,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Causes an explosion of arcane magic around the caster, causing 105 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":97,"dieSides":9,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":8439,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Causes an explosion of arcane magic around the caster, causing 151 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":139,"dieSides":13,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":10201,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Causes an explosion of arcane magic around the caster, causing 202 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":186,"dieSides":17,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":10202,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Causes an explosion of arcane magic around the caster, causing 263 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":243,"dieSides":21,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":27080,"rank":7,"level":62,"sourceLevel":62,"maxScalingLevel":67,"description":"Causes an explosion of arcane magic around the caster, causing 330 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":306,"dieSides":25,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":27082,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":75,"description":"Causes an explosion of arcane magic around the caster, causing 407 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":377,"dieSides":31,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":42920,"rank":9,"level":76,"sourceLevel":76,"maxScalingLevel":80,"description":"Causes an explosion of arcane magic around the caster, causing 519 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":481,"dieSides":39,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":42921,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Causes an explosion of arcane magic around the caster, causing 582 Arcane damage to all targets within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":538,"dieSides":45,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]}]},{"id":"wow335-mage-flamestrike","name":"Flamestrike","iconBasename":"spell_fire_selfdestruct","iconPath":"/assets/ui/spells/spell_fire_selfdestruct.png","sourceUnlockLevel":16,"ranks":[{"spellId":2120,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Calls down a pillar of fire, burning all enemies within the area for 68 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":52,"dieSides":17,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":2121,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Calls down a pillar of fire, burning all enemies within the area for 122 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":96,"dieSides":27,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":22,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":8422,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Calls down a pillar of fire, burning all enemies within the area for 192 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":154,"dieSides":39,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":8423,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Calls down a pillar of fire, burning all enemies within the area for 272 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":220,"dieSides":53,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":49,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":10215,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Calls down a pillar of fire, burning all enemies within the area for 359 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":291,"dieSides":69,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":66,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":10216,"rank":6,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Calls down a pillar of fire, burning all enemies within the area for 459 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":375,"dieSides":85,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":85,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":27086,"rank":7,"level":64,"sourceLevel":64,"maxScalingLevel":69,"description":"Calls down a pillar of fire, burning all enemies within the area for 575 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":471,"dieSides":105,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":106,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":42925,"rank":8,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Calls down a pillar of fire, burning all enemies within the area for 842 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":688,"dieSides":155,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":155,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]},{"spellId":42926,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Calls down a pillar of fire, burning all enemies within the area for 1067 Fire damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":873,"dieSides":195,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.24300000071525574},{"index":1,"effectType":27,"auraType":3,"basePoints":195,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":5,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12200000137090683}]}]},{"id":"wow335-mage-amplify-magic","name":"Amplify Magic","iconBasename":"spell_holy_flashheal","iconPath":"/assets/ui/spells/spell_holy_flashheal.png","sourceUnlockLevel":18,"ranks":[{"spellId":1008,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 15 and healing spells by up to 16. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":16,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":8455,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 30 and healing spells by up to 32. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":10169,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 50 and healing spells by up to 53. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":53,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":10170,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 75 and healing spells by up to 80. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":27130,"rank":5,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 90 and healing spells by up to 96. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":96,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":33946,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 120 and healing spells by up to 128. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":128,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":43017,"rank":7,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Amplifies magic used against the targeted party member, increasing damage taken from spells by up to 240 and healing spells by up to 255. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":14,"basePoints":240,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":115,"basePoints":255,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":57,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-remove-curse","name":"Remove Curse","iconBasename":"spell_nature_removecurse","iconPath":"/assets/ui/spells/spell_nature_removecurse.png","sourceUnlockLevel":18,"ranks":[{"spellId":475,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Removes 1 Curse from a friendly target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-blink","name":"Blink","iconBasename":"spell_arcane_blink","iconPath":"/assets/ui/spells/spell_arcane_blink.png","sourceUnlockLevel":20,"ranks":[{"spellId":1953,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster the listed amount yards forward, unless something is in the way. Also frees the caster from stuns and bonds.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":1000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":29,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":55,"radius":20,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":12,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":6,"auraType":77,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-blizzard","name":"Blizzard","iconBasename":"spell_frost_icestorm","iconPath":"/assets/ui/spells/spell_frost_icestorm.png","sourceUnlockLevel":20,"ranks":[{"spellId":10,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":25,"dieSides":1,"pointsPerLevel":0.10000000149011612,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42208,"coefficient":0}]},{"spellId":42208,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":36,"dieSides":1,"pointsPerLevel":0.10000000149011612,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":6141,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":44,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42209,"coefficient":0}]},{"spellId":42209,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":63,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":8427,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":65,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42210,"coefficient":0}]},{"spellId":42210,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":92,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":10185,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":90,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42211,"coefficient":0}]},{"spellId":42211,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":128,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":10186,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":117,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42212,"coefficient":0}]},{"spellId":42212,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":166,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":10187,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":89,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":149,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42213,"coefficient":0}]},{"spellId":42213,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":212,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":27085,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":73,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":74,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":184,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42198,"coefficient":0}]},{"spellId":42198,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":73,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":273,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42937,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":350,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42939,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":74,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":298,"dieSides":1,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42937,"coefficient":0}]},{"spellId":42938,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":426,"dieSides":1,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42940,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Ice shards pelt the target area doing the listed amount Frost damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":74,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":360,"dieSides":1,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.11900000274181366},{"index":1,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42938,"coefficient":0}]}]},{"id":"wow335-mage-fire-ward","name":"Fire Ward","iconBasename":"spell_fire_firearmor","iconPath":"/assets/ui/spells/spell_fire_firearmor.png","sourceUnlockLevel":20,"ranks":[{"spellId":543,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"Absorbs 165 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":8457,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"Absorbs 290 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":8458,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"Absorbs 470 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":470,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":10223,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Absorbs 675 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":675,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":10225,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":68,"description":"Absorbs 875 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":875,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":27128,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":78,"description":"Absorbs 1125 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":43010,"rank":7,"level":78,"sourceLevel":78,"maxScalingLevel":87,"description":"Absorbs 1950 Fire damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1950,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-focus-magic","name":"Focus Magic","iconBasename":"spell_arcane_studentofmagic","iconPath":"/assets/ui/spells/spell_arcane_studentofmagic.png","sourceUnlockLevel":20,"talentNodeId":"talent-2211","ranks":[{"spellId":54646,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases the target's chance to critically hit with spells by 3%. When the target critically hits the caster's chance to critically hit with spells is increased by 3% for 10 sec. Cannot be cast on self.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":57,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":54648,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases the target's chance to critically hit with spells by 3%. When the target critically hits the caster's chance to critically hit with spells is increased.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":57,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-icy-veins","name":"Icy Veins","iconBasename":"spell_frost_coldhearted","iconPath":"/assets/ui/spells/spell_frost_coldhearted.png","sourceUnlockLevel":20,"talentNodeId":"talent-69","ranks":[{"spellId":12472,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Hastens your spellcasting, increasing spell casting speed by 20% and reduces the pushback suffered from damaging attacks while casting by 100%. Lasts 20 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":3,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":65,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":108,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":9,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-mana-shield","name":"Mana Shield","iconBasename":"spell_shadow_detectlesserinvisibility","iconPath":"/assets/ui/spells/spell_shadow_detectlesserinvisibility.png","sourceUnlockLevel":20,"ranks":[{"spellId":1463,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":27,"description":"Absorbs 120 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8494,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":35,"description":"Absorbs 210 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":210,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8495,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":43,"description":"Absorbs 300 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10191,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":51,"description":"Absorbs 390 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":390,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10192,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":59,"description":"Absorbs 480 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":480,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10193,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":67,"description":"Absorbs 570 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":570,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27131,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":75,"description":"Absorbs 715 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":715,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":43019,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Absorbs 1080 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":1080,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":43020,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Absorbs 1330 damage, draining mana instead. Drains the listed amount mana per damage absorbed. Lasts 60 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":97,"basePoints":1330,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-pyroblast","name":"Pyroblast","iconBasename":"spell_fire_fireball02","iconPath":"/assets/ui/spells/spell_fire_fireball02.png","sourceUnlockLevel":20,"talentNodeId":"talent-29","ranks":[{"spellId":11366,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":24,"description":"Hurls an immense fiery boulder that causes 187 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":141,"dieSides":47,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12505,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":30,"description":"Hurls an immense fiery boulder that causes 236 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":180,"dieSides":57,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12522,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"Hurls an immense fiery boulder that causes 327 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":255,"dieSides":73,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12523,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"Hurls an immense fiery boulder that causes 419 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":329,"dieSides":91,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12524,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Hurls an immense fiery boulder that causes 515 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":407,"dieSides":109,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":39,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12525,"rank":6,"level":48,"sourceLevel":48,"maxScalingLevel":54,"description":"Hurls an immense fiery boulder that causes 631 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":503,"dieSides":129,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":47,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":12526,"rank":7,"level":54,"sourceLevel":54,"maxScalingLevel":60,"description":"Hurls an immense fiery boulder that causes 750 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":600,"dieSides":151,"pointsPerLevel":4.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":57,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":18809,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Hurls an immense fiery boulder that causes 898 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":708,"dieSides":191,"pointsPerLevel":4.599999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":67,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":27132,"rank":9,"level":66,"sourceLevel":66,"maxScalingLevel":72,"description":"Hurls an immense fiery boulder that causes 1074 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":846,"dieSides":229,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":78,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":33938,"rank":10,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Hurls an immense fiery boulder that causes 1191 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":939,"dieSides":253,"pointsPerLevel":5.400000095367432,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":89,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":42890,"rank":11,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Hurls an immense fiery boulder that causes 1286 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1014,"dieSides":273,"pointsPerLevel":5.800000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":96,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]},{"spellId":42891,"rank":12,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"Hurls an immense fiery boulder that causes 1510 Fire damage and an additional the listed amount Fire damage over 12 sec.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1190,"dieSides":321,"pointsPerLevel":6.800000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142},{"index":1,"effectType":6,"auraType":3,"basePoints":113,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05000000074505806}]}]},{"id":"wow335-mage-teleport-exodar","name":"Teleport: Exodar","iconBasename":"spell_arcane_teleportexodar","iconPath":"/assets/ui/spells/spell_arcane_teleportexodar.png","sourceUnlockLevel":20,"ranks":[{"spellId":32271,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Exodar.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-ironforge","name":"Teleport: Ironforge","iconBasename":"spell_arcane_teleportironforge","iconPath":"/assets/ui/spells/spell_arcane_teleportironforge.png","sourceUnlockLevel":20,"ranks":[{"spellId":3562,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Ironforge.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-orgrimmar","name":"Teleport: Orgrimmar","iconBasename":"spell_arcane_teleportorgrimmar","iconPath":"/assets/ui/spells/spell_arcane_teleportorgrimmar.png","sourceUnlockLevel":20,"ranks":[{"spellId":3567,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Orgrimmar.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-silvermoon","name":"Teleport: Silvermoon","iconBasename":"spell_arcane_teleportsilvermoon","iconPath":"/assets/ui/spells/spell_arcane_teleportsilvermoon.png","sourceUnlockLevel":20,"ranks":[{"spellId":32272,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Silvermoon.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-stormwind","name":"Teleport: Stormwind","iconBasename":"spell_arcane_teleportstormwind","iconPath":"/assets/ui/spells/spell_arcane_teleportstormwind.png","sourceUnlockLevel":20,"ranks":[{"spellId":3561,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Stormwind.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-undercity","name":"Teleport: Undercity","iconBasename":"spell_arcane_teleportundercity","iconPath":"/assets/ui/spells/spell_arcane_teleportundercity.png","sourceUnlockLevel":20,"ranks":[{"spellId":3563,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Teleports the caster to Undercity.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-frost-ward","name":"Frost Ward","iconBasename":"spell_frost_frostward","iconPath":"/assets/ui/spells/spell_frost_frostward.png","sourceUnlockLevel":22,"ranks":[{"spellId":6143,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":31,"description":"Absorbs 165 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":8461,"rank":2,"level":32,"sourceLevel":32,"maxScalingLevel":41,"description":"Absorbs 290 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":8462,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":51,"description":"Absorbs 470 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":470,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":10177,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":59,"description":"Absorbs 675 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":675,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":28609,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Absorbs 875 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":875,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":32796,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":78,"description":"Absorbs 1125 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1125,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":43012,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":88,"description":"Absorbs 1950 Frost damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1950,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":74,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-scorch","name":"Scorch","iconBasename":"spell_fire_soulburn","iconPath":"/assets/ui/spells/spell_fire_soulburn.png","sourceUnlockLevel":22,"ranks":[{"spellId":2948,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":26,"description":"Scorch the enemy for 65 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":53,"dieSides":13,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8444,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":32,"description":"Scorch the enemy for 93 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":77,"dieSides":17,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8445,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":38,"description":"Scorch the enemy for 120 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":100,"dieSides":21,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":8446,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":44,"description":"Scorch the enemy for 159 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":133,"dieSides":27,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10205,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":50,"description":"Scorch the enemy for 192 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":162,"dieSides":31,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10206,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":56,"description":"Scorch the enemy for 239 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":200,"dieSides":40,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":10207,"rank":7,"level":58,"sourceLevel":58,"maxScalingLevel":62,"description":"Scorch the enemy for 275 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":233,"dieSides":43,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27073,"rank":8,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Scorch the enemy for 317 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":269,"dieSides":49,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27074,"rank":9,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Scorch the enemy for 361 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":305,"dieSides":57,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":42858,"rank":10,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Scorch the enemy for 379 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":321,"dieSides":59,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":42859,"rank":11,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Scorch the enemy for 444 Fire damage.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":376,"dieSides":69,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-mage-counterspell","name":"Counterspell","iconBasename":"spell_frost_iceshock","iconPath":"/assets/ui/spells/spell_frost_iceshock.png","sourceUnlockLevel":24,"ranks":[{"spellId":2139,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Counters the enemy's spellcast, preventing any spell from that school of magic from being cast for 8 sec. Generates a high amount of threat.","castTimeMs":0,"cooldownMs":24000,"gcdMs":0,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":68,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-cone-of-cold","name":"Cone of Cold","iconBasename":"spell_frost_glacier","iconPath":"/assets/ui/spells/spell_frost_glacier.png","sourceUnlockLevel":26,"ranks":[{"spellId":120,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Targets in a cone in front of the caster take 108 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":98,"dieSides":11,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":8492,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Targets in a cone in front of the caster take 160 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":146,"dieSides":15,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10159,"rank":3,"level":42,"sourceLevel":42,"maxScalingLevel":47,"description":"Targets in a cone in front of the caster take 223 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":203,"dieSides":21,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10160,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Targets in a cone in front of the caster take 290 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":264,"dieSides":27,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":10161,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Targets in a cone in front of the caster take 365 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":30,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":335,"dieSides":31,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27087,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Targets in a cone in front of the caster take 448 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":410,"dieSides":39,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":42930,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Targets in a cone in front of the caster take 611 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":559,"dieSides":53,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":42931,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Targets in a cone in front of the caster take 773 Frost damage and are slowed by 50% for 8 sec.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":707,"dieSides":67,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-conjure-mana-gem","name":"Conjure Mana Gem","iconBasename":"inv_misc_gem_emerald_01","iconPath":"/assets/ui/spells/inv_misc_gem_emerald_01.png","sourceUnlockLevel":28,"ranks":[{"spellId":759,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Conjures a mana agate that can be used to instantly restore 410 mana.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":90,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54414,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3552,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Conjures a mana jade that can be used to instantly restore 615 mana.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":90,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54413,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10053,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Conjures a mana citrine that can be used to instantly restore 871 mana.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":90,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54412,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":10054,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Conjures a mana ruby that can be used to instantly restore 1127 mana.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":90,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54411,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27101,"rank":5,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Conjures a mana emerald that can be used to instantly restore 2460 mana. 3 charges.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":75,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54410,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42985,"rank":6,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Conjures a mana sapphire that can be used to instantly restore 3500 mana. 3 charges.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":75,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":54409,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-blast-wave","name":"Blast Wave","iconBasename":"spell_holy_excorcism_02","iconPath":"/assets/ui/spells/spell_holy_excorcism_02.png","sourceUnlockLevel":30,"talentNodeId":"talent-32","ranks":[{"spellId":11113,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 186 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":154,"dieSides":33,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":13018,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":42,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 241 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":201,"dieSides":41,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":13019,"rank":3,"level":44,"sourceLevel":44,"maxScalingLevel":50,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 329 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":277,"dieSides":53,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":13020,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":58,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 433 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":365,"dieSides":69,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":13021,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 544 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":462,"dieSides":83,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":27133,"rank":6,"level":65,"sourceLevel":65,"maxScalingLevel":71,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 627 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":533,"dieSides":95,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":33933,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 724 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":616,"dieSides":109,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":42944,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 1038 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":882,"dieSides":157,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]},{"spellId":42945,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"A wave of flame radiates outward from the caster, damaging all enemies caught within the blast for 1233 Fire damage, knocking them back and Dazing them for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1047,"dieSides":187,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":98,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":100,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-cold-snap","name":"Cold Snap","iconBasename":"spell_frost_wizardmark","iconPath":"/assets/ui/spells/spell_frost_wizardmark.png","sourceUnlockLevel":30,"talentNodeId":"talent-72","ranks":[{"spellId":11958,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"When activated, this spell finishes the cooldown on all Frost spells you recently cast.","castTimeMs":0,"cooldownMs":480000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-ice-armor","name":"Ice Armor","iconBasename":"spell_frost_frostarmor02","iconPath":"/assets/ui/spells/spell_frost_frostarmor02.png","sourceUnlockLevel":30,"ranks":[{"spellId":7302,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Increases Armor by 290 and Frost resistance by 6. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":7320,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Increases Armor by 380 and Frost resistance by 9. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":380,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":10219,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Increases Armor by 470 and Frost resistance by 12. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":470,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":10220,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Increases Armor by 560 and Frost resistance by 15. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":560,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":27124,"rank":5,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Increases Armor by 645 and Frost resistance by 18. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":645,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]},{"spellId":43008,"rank":6,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Increases Armor by 930 and Frost resistance by 40. If an enemy strikes the caster, they may have their movement slowed by 30% and the time between their attacks increased by 25% for 5 sec. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":930,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":7321,"coefficient":0},{"index":2,"effectType":6,"auraType":22,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-ice-block","name":"Ice Block","iconBasename":"spell_frost_frost","iconPath":"/assets/ui/spells/spell_frost_frost.png","sourceUnlockLevel":30,"ranks":[{"spellId":45438,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"You become encased in a block of ice, protecting you from all physical attacks and spells for 10 sec, but during that time you cannot attack, move or cast spells. Also causes Hypothermia, preventing you from recasting Ice Block for 30 sec.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":15,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":39,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-teleport-darnassus","name":"Teleport: Darnassus","iconBasename":"spell_arcane_teleportdarnassus","iconPath":"/assets/ui/spells/spell_arcane_teleportdarnassus.png","sourceUnlockLevel":30,"ranks":[{"spellId":3565,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Teleports the caster to Darnassus.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-thunder-bluff","name":"Teleport: Thunder Bluff","iconBasename":"spell_arcane_teleportthunderbluff","iconPath":"/assets/ui/spells/spell_arcane_teleportthunderbluff.png","sourceUnlockLevel":30,"ranks":[{"spellId":3566,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Teleports the caster to Thunder Bluff.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-mage-armor","name":"Mage Armor","iconBasename":"spell_magearmor","iconPath":"/assets/ui/spells/spell_magearmor.png","sourceUnlockLevel":34,"ranks":[{"spellId":6117,"rank":1,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 5 and allows 50% of your mana regeneration to continue while casting. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22782,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 10 and allows 50% of your mana regeneration to continue while casting. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22783,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 15 and allows 50% of your mana regeneration to continue while casting. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27125,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 18 and allows 50% of your mana regeneration to continue while casting. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":43023,"rank":5,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 21 and allows 50% of your mana regeneration to continue while casting. In addition, the duration of all harmful Magic effects used against you is reduced by 50%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":245,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":43024,"rank":6,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Increases your resistance to all magic by 40 and allows 50% of your mana regeneration to continue while casting. In addition, the duration of all harmful Magic effects used against you is reduced by 50%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":134,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":245,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-stonard","name":"Portal: Stonard","iconBasename":"spell_arcane_portalstonard","iconPath":"/assets/ui/spells/spell_arcane_portalstonard.png","sourceUnlockLevel":35,"ranks":[{"spellId":49361,"rank":0,"level":35,"sourceLevel":35,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Stonard.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":189994,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-theramore","name":"Portal: Theramore","iconBasename":"spell_arcane_portaltheramore","iconPath":"/assets/ui/spells/spell_arcane_portaltheramore.png","sourceUnlockLevel":35,"ranks":[{"spellId":49360,"rank":0,"level":35,"sourceLevel":35,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Theramore.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":850,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":189993,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-teleport-stonard","name":"Teleport: Stonard","iconBasename":"spell_arcane_teleportstonard","iconPath":"/assets/ui/spells/spell_arcane_teleportstonard.png","sourceUnlockLevel":35,"ranks":[{"spellId":49358,"rank":0,"level":35,"sourceLevel":35,"maxScalingLevel":0,"description":"Teleports the caster to Stonard.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-teleport-theramore","name":"Teleport: Theramore","iconBasename":"spell_arcane_teleporttheramore","iconPath":"/assets/ui/spells/spell_arcane_teleporttheramore.png","sourceUnlockLevel":35,"ranks":[{"spellId":49359,"rank":0,"level":35,"sourceLevel":35,"maxScalingLevel":0,"description":"Teleports the caster to Theramore.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-combustion","name":"Combustion","iconBasename":"spell_fire_sealoffire","iconPath":"/assets/ui/spells/spell_fire_sealoffire.png","sourceUnlockLevel":40,"talentNodeId":"talent-36","ranks":[{"spellId":11129,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"When activated, this spell causes each of your Fire damage spell hits to increase your critical strike chance with Fire damage spells by 10%. This effect lasts until you have caused the listed amount critical strikes with Fire spells.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":28682,"coefficient":0}]}]},{"id":"wow335-mage-ice-barrier","name":"Ice Barrier","iconBasename":"spell_ice_lament","iconPath":"/assets/ui/spells/spell_ice_lament.png","sourceUnlockLevel":40,"talentNodeId":"talent-71","ranks":[{"spellId":11426,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Instantly shields you, absorbing 438 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":438,"dieSides":1,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13031,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":52,"description":"Instantly shields you, absorbing 549 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":549,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13032,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":58,"description":"Instantly shields you, absorbing 678 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":678,"dieSides":1,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":13033,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"Instantly shields you, absorbing 818 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":818,"dieSides":1,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27134,"rank":5,"level":64,"sourceLevel":64,"maxScalingLevel":70,"description":"Instantly shields you, absorbing 925 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":925,"dieSides":1,"pointsPerLevel":4.400000095367432,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":33405,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Instantly shields you, absorbing 1075 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":1075,"dieSides":1,"pointsPerLevel":4.800000190734863,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":43038,"rank":7,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Instantly shields you, absorbing 2800 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":2800,"dieSides":1,"pointsPerLevel":15,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":43039,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Instantly shields you, absorbing 3300 damage. Lasts 60 sec. While the shield holds, spellcasting will not be delayed by damage.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":3300,"dieSides":1,"pointsPerLevel":15,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-exodar","name":"Portal: Exodar","iconBasename":"spell_arcane_portalexodar","iconPath":"/assets/ui/spells/spell_arcane_portalexodar.png","sourceUnlockLevel":40,"ranks":[{"spellId":32266,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Exodar.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":182351,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-ironforge","name":"Portal: Ironforge","iconBasename":"spell_arcane_portalironforge","iconPath":"/assets/ui/spells/spell_arcane_portalironforge.png","sourceUnlockLevel":40,"ranks":[{"spellId":11416,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Ironforge.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176497,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-orgrimmar","name":"Portal: Orgrimmar","iconBasename":"spell_arcane_portalorgrimmar","iconPath":"/assets/ui/spells/spell_arcane_portalorgrimmar.png","sourceUnlockLevel":40,"ranks":[{"spellId":11417,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Orgrimmar.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176499,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-silvermoon","name":"Portal: Silvermoon","iconBasename":"spell_arcane_portalsilvermoon","iconPath":"/assets/ui/spells/spell_arcane_portalsilvermoon.png","sourceUnlockLevel":40,"ranks":[{"spellId":32267,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Silvermoon.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":182352,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-stormwind","name":"Portal: Stormwind","iconBasename":"spell_arcane_portalstormwind","iconPath":"/assets/ui/spells/spell_arcane_portalstormwind.png","sourceUnlockLevel":40,"ranks":[{"spellId":10059,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Stormwind.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176296,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-undercity","name":"Portal: Undercity","iconBasename":"spell_arcane_portalundercity","iconPath":"/assets/ui/spells/spell_arcane_portalundercity.png","sourceUnlockLevel":40,"ranks":[{"spellId":11418,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Undercity.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176501,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-dragon-s-breath","name":"Dragon's Breath","iconBasename":"inv_misc_head_dragon_01","iconPath":"/assets/ui/spells/inv_misc_head_dragon_01.png","sourceUnlockLevel":50,"talentNodeId":"talent-1735","ranks":[{"spellId":31661,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":58,"description":"Targets in a cone in front of the caster take 430 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":370,"dieSides":61,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33041,"rank":2,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Targets in a cone in front of the caster take 526 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":454,"dieSides":73,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33042,"rank":3,"level":64,"sourceLevel":64,"maxScalingLevel":70,"description":"Targets in a cone in front of the caster take 666 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":574,"dieSides":93,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33043,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Targets in a cone in front of the caster take 790 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":680,"dieSides":111,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42949,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Targets in a cone in front of the caster take 1085 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":935,"dieSides":151,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42950,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Targets in a cone in front of the caster take 1279 Fire damage and are Disoriented for 5 sec. Any direct damaging attack will revive targets. Turns off your attack when used.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1101,"dieSides":179,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":5,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":2,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-darnassus","name":"Portal: Darnassus","iconBasename":"spell_arcane_portaldarnassus","iconPath":"/assets/ui/spells/spell_arcane_portaldarnassus.png","sourceUnlockLevel":50,"ranks":[{"spellId":11419,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Darnassus.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176498,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-portal-thunder-bluff","name":"Portal: Thunder Bluff","iconBasename":"spell_arcane_portalthunderbluff","iconPath":"/assets/ui/spells/spell_arcane_portalthunderbluff.png","sourceUnlockLevel":50,"ranks":[{"spellId":11420,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Thunder Bluff.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":176500,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-slow","name":"Slow","iconBasename":"spell_nature_slow","iconPath":"/assets/ui/spells/spell_nature_slow.png","sourceUnlockLevel":50,"talentNodeId":"talent-1729","ranks":[{"spellId":31589,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Reduces target's movement speed by 60%, increases the time between ranged attacks by 60% and increases casting time by 30%. Lasts 15 sec. Slow can only affect one target at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":218,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":216,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-summon-water-elemental","name":"Summon Water Elemental","iconBasename":"spell_frost_summonwaterelemental_2","iconPath":"/assets/ui/spells/spell_frost_summonwaterelemental_2.png","sourceUnlockLevel":50,"talentNodeId":"talent-1741","ranks":[{"spellId":31687,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summon a Water Elemental to fight for the caster for 45 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":2,"periodMs":0,"miscValue":510,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-brilliance","name":"Arcane Brilliance","iconBasename":"spell_holy_arcaneintellect","iconPath":"/assets/ui/spells/spell_holy_arcaneintellect.png","sourceUnlockLevel":56,"ranks":[{"spellId":23028,"rank":1,"level":56,"sourceLevel":56,"maxScalingLevel":66,"description":"Infuses all party and raid members with brilliance, increasing their Intellect by 31 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":97,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":27127,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Infuses all party and raid members with brilliance, increasing their Intellect by 40 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":81,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]},{"spellId":43002,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Infuses all party and raid members with brilliance, increasing their Intellect by 60 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":81,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-barrage","name":"Arcane Barrage","iconBasename":"ability_mage_arcanebarrage","iconPath":"/assets/ui/spells/ability_mage_arcanebarrage.png","sourceUnlockLevel":60,"talentNodeId":"talent-1847","ranks":[{"spellId":44425,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Launches several missiles at the enemy target, causing 470 Arcane damage.","castTimeMs":0,"cooldownMs":3000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":386,"dieSides":85,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":44780,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Launches several missiles at the enemy target, causing 865 Arcane damage.","castTimeMs":0,"cooldownMs":3000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":709,"dieSides":157,"pointsPerLevel":15.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":44781,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":86,"description":"Launches several missiles at the enemy target, causing 1144 Arcane damage.","castTimeMs":0,"cooldownMs":3000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":936,"dieSides":209,"pointsPerLevel":6.099999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]}]},{"id":"wow335-mage-deep-freeze","name":"Deep Freeze","iconBasename":"ability_mage_deepfreeze","iconPath":"/assets/ui/spells/ability_mage_deepfreeze.png","sourceUnlockLevel":60,"talentNodeId":"talent-1857","ranks":[{"spellId":44572,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Stuns the target for 5 sec. Only usable on Frozen targets.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-living-bomb","name":"Living Bomb","iconBasename":"ability_mage_livingbomb","iconPath":"/assets/ui/spells/ability_mage_livingbomb.png","sourceUnlockLevel":60,"talentNodeId":"talent-1852","ranks":[{"spellId":44457,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 306 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":153,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":4,"basePoints":44461,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":44461,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 306 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":306,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":55359,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 512 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":256,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":4,"basePoints":55361,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":55361,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 512 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":512,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":55360,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":86,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 690 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":22,"rangeIndex":35,"rangeMin":0,"rangeMax":35,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":345,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":4,"basePoints":55362,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":55362,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":86,"description":"The target becomes a Living Bomb, taking the listed amount Fire damage over 12 sec. After 12 sec or when the spell is dispelled, the target explodes dealing 690 Fire damage to all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":690,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":53,"implicitTargetB":16,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4000000059604645},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-teleport-shattrath","name":"Teleport: Shattrath","iconBasename":"spell_arcane_teleportshattrath","iconPath":"/assets/ui/spells/spell_arcane_teleportshattrath.png","sourceUnlockLevel":60,"ranks":[{"spellId":33690,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Teleports the caster to Shattrath.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":35715,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Teleports the caster to Shattrath.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-molten-armor","name":"Molten Armor","iconBasename":"ability_mage_moltenarmor","iconPath":"/assets/ui/spells/ability_mage_moltenarmor.png","sourceUnlockLevel":62,"ranks":[{"spellId":30482,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Causes 75 Fire damage when hit, increases your critical strike rating by 35% of your spirit, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":34913,"coefficient":0},{"index":1,"effectType":6,"auraType":197,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":220,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1792,"triggerSpellId":0,"coefficient":0}]},{"spellId":34913,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Causes 75 Fire damage when hit, increases your chance to critically hit with spells by 35%, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":43043,"rank":2,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Causes 130 Fire damage when hit, increases your chance to critically hit with spells by 35%, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":130,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":43045,"rank":2,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Causes 130 Fire damage when hit, increases your critical strike rating by 35% of your spirit, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":43043,"coefficient":0},{"index":1,"effectType":6,"auraType":197,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":220,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1792,"triggerSpellId":0,"coefficient":0}]},{"spellId":43044,"rank":3,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Causes 170 Fire damage when hit, increases your chance to critically hit with spells by 35%, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":170,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":43046,"rank":3,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Causes 170 Fire damage when hit, increases your critical strike rating by 35% of your spirit, and reduces the chance you are critically hit by 5%. Only one type of Armor spell can be active on the Mage at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":42,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":43044,"coefficient":0},{"index":1,"effectType":6,"auraType":197,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":220,"basePoints":35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1792,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-arcane-blast","name":"Arcane Blast","iconBasename":"spell_arcane_blast","iconPath":"/assets/ui/spells/spell_arcane_blast.png","sourceUnlockLevel":64,"ranks":[{"spellId":30451,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":68,"description":"Blasts the target with energy, dealing 978 Arcane damage. Each time you cast Arcane Blast, the damage of all Arcane spells is increased by 15% and mana cost of Arcane Blast is increased by 200%. Effect stacks up to the listed amount times and lasts 10 sec or until any Arcane damage spell except Arcane Blast is cast.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":842,"dieSides":137,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36032,"coefficient":0}]},{"spellId":42894,"rank":2,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"Blasts the target with energy, dealing 1041 Arcane damage. Each time you cast Arcane Blast, the damage of all Arcane spells is increased by 15% and mana cost of Arcane Blast is increased by 200%. Effect stacks up to the listed amount times and lasts 10 sec or until any Arcane damage spell except Arcane Blast is cast.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":897,"dieSides":145,"pointsPerLevel":5.300000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36032,"coefficient":0}]},{"spellId":42896,"rank":3,"level":76,"sourceLevel":76,"maxScalingLevel":80,"description":"Blasts the target with energy, dealing 1215 Arcane damage. Each time you cast Arcane Blast, the damage of all Arcane spells is increased by 15% and mana cost of Arcane Blast is increased by 200%. Effect stacks up to the listed amount times and lasts 10 sec or until any Arcane damage spell except Arcane Blast is cast.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1047,"dieSides":169,"pointsPerLevel":6.199999809265137,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36032,"coefficient":0}]},{"spellId":42897,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Blasts the target with energy, dealing 1377 Arcane damage. Each time you cast Arcane Blast, the damage of all Arcane spells is increased by 15% and mana cost of Arcane Blast is increased by 200%. Effect stacks up to the listed amount times and lasts 10 sec or until any Arcane damage spell except Arcane Blast is cast.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1185,"dieSides":193,"pointsPerLevel":7,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":36032,"coefficient":0}]}]},{"id":"wow335-mage-portal-shattrath","name":"Portal: Shattrath","iconBasename":"spell_arcane_portalshattrath","iconPath":"/assets/ui/spells/spell_arcane_portalshattrath.png","sourceUnlockLevel":65,"ranks":[{"spellId":33691,"rank":0,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Shattrath.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":183384,"triggerSpellId":0,"coefficient":0}]},{"spellId":35717,"rank":0,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Shattrath.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":184594,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-ice-lance","name":"Ice Lance","iconBasename":"spell_frost_frostblast","iconPath":"/assets/ui/spells/spell_frost_frostblast.png","sourceUnlockLevel":66,"ranks":[{"spellId":30455,"rank":1,"level":66,"sourceLevel":66,"maxScalingLevel":70,"description":"Deals 187 Frost damage to an enemy target. Causes triple damage against Frozen targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":161,"dieSides":27,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42913,"rank":2,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Deals 210 Frost damage to an enemy target. Causes triple damage against Frozen targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":182,"dieSides":29,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":42914,"rank":3,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Deals 255 Frost damage to an enemy target. Causes triple damage against Frozen targets.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":221,"dieSides":35,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]}]},{"id":"wow335-mage-ritual-of-refreshment","name":"Ritual of Refreshment","iconBasename":"spell_arcane_massdispel","iconPath":"/assets/ui/spells/spell_arcane_massdispel.png","sourceUnlockLevel":70,"ranks":[{"spellId":43987,"rank":1,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Begins a ritual that creates a refreshment table. Raid members can click the table to acquire Conjured Mana Biscuits. The tables lasts for 180 sec or 50 charges. Requires the caster and 2 additional party members to complete the ritual. In order to participate, all players must right-click the refreshment portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":186811,"triggerSpellId":0,"coefficient":0}]},{"spellId":58659,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Begins a ritual that creates a refreshment table. Raid members can click the table to acquire Conjured Mana Strudels. The tables lasts for 180 sec or 50 charges. Requires the caster and 2 additional party members to complete the ritual. In order to participate, all players must right-click the refreshment portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":193062,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-teleport-dalaran","name":"Teleport: Dalaran","iconBasename":"spell_arcane_teleportdalaran","iconPath":"/assets/ui/spells/spell_arcane_teleportdalaran.png","sourceUnlockLevel":71,"ranks":[{"spellId":53140,"rank":0,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Teleports the caster to Dalaran.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-mage-portal-dalaran","name":"Portal: Dalaran","iconBasename":"spell_arcane_portaldalaran","iconPath":"/assets/ui/spells/spell_arcane_portaldalaran.png","sourceUnlockLevel":74,"ranks":[{"spellId":53142,"rank":0,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Creates a portal, teleporting group members that use it to Dalaran.","castTimeMs":10000,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":3,"periodMs":0,"miscValue":191164,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-conjure-refreshment","name":"Conjure Refreshment","iconBasename":"ability_mage_conjurefoodrank9","iconPath":"/assets/ui/spells/ability_mage_conjurefoodrank9.png","sourceUnlockLevel":75,"ranks":[{"spellId":42955,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":75,"description":"Conjures 20 Mana Pies providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":40,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":42956,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":80,"description":"Conjures 20 Mana Strudels providing the mage and the listed amount allies with something to eat. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":40,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-frostfire-bolt","name":"Frostfire Bolt","iconBasename":"ability_mage_frostfirebolt","iconPath":"/assets/ui/spells/ability_mage_frostfirebolt.png","sourceUnlockLevel":75,"ranks":[{"spellId":44614,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Launches a bolt of frostfire at the enemy, causing 731 Frostfire damage, slowing movement speed by 40% and causing an additional the listed amount Frostfire damage over 9 sec. This spell will be checked against the lower of the target's Frost and Fire resists.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":629,"dieSides":103,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798},{"index":2,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47610,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Launches a bolt of frostfire at the enemy, causing 838 Frostfire damage, slowing movement speed by 40% and causing an additional the listed amount Frostfire damage over 9 sec. This spell will be checked against the lower of the target's Frost and Fire resists.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":722,"dieSides":117,"pointsPerLevel":4.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798},{"index":2,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-mage-mirror-image","name":"Mirror Image","iconBasename":"spell_magic_lesserinvisibilty","iconPath":"/assets/ui/spells/spell_magic_lesserinvisibilty.png","sourceUnlockLevel":80,"ranks":[{"spellId":55342,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":80,"description":"Creates 3 copies of the caster nearby, which cast spells and attack the mage's enemies. Lasts 30 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":103,"basePoints":-90000000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":58832,"coefficient":0},{"index":2,"effectType":6,"auraType":226,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":58836,"coefficient":0}]}]}],"warlock":[{"id":"wow335-warlock-conflagrate","name":"Conflagrate","iconBasename":"spell_fire_fireball","iconPath":"/assets/ui/spells/spell_fire_fireball.png","sourceUnlockLevel":1,"talentNodeId":"talent-968","ranks":[{"spellId":17962,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Consumes an Immolate or Shadowflame effect on the enemy target to instantly deal damage equal to 12 sec of your Immolate or 8 sec of your Shadowflame.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-curse-of-exhaustion","name":"Curse of Exhaustion","iconBasename":"spell_shadow_grimward","iconPath":"/assets/ui/spells/spell_shadow_grimward.png","sourceUnlockLevel":1,"talentNodeId":"talent-1081","ranks":[{"spellId":18223,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Reduces the target's movement speed by 30% for 12 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":33,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-demon-skin","name":"Demon Skin","iconBasename":"spell_shadow_ragingscream","iconPath":"/assets/ui/spells/spell_shadow_ragingscream.png","sourceUnlockLevel":1,"ranks":[{"spellId":687,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 90, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":696,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 265, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":265,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-fel-domination","name":"Fel Domination","iconBasename":"spell_nature_removecurse","iconPath":"/assets/ui/spells/spell_nature_removecurse.png","sourceUnlockLevel":1,"talentNodeId":"talent-1226","ranks":[{"spellId":18708,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Your next Imp, Voidwalker, Succubus, Felhunter or Felguard Summon spell has its casting time reduced by the listed amount sec and its Mana cost reduced by 50%.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":107,"basePoints":-5500,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":108,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-immolate","name":"Immolate","iconBasename":"spell_fire_immolation","iconPath":"/assets/ui/spells/spell_fire_immolation.png","sourceUnlockLevel":1,"ranks":[{"spellId":348,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Burns the enemy for 8 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":8,"dieSides":1,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.057999998331069946},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":707,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Burns the enemy for 19 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":19,"dieSides":1,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.125},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1094,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Burns the enemy for 45 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":2941,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Burns the enemy for 90 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":33,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":90,"dieSides":1,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11665,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Burns the enemy for 134 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":51,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":134,"dieSides":1,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11667,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Burns the enemy for 192 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":73,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":192,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11668,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Burns the enemy for 258 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":97,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":258,"dieSides":1,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25309,"rank":8,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Burns the enemy for 279 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":102,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":279,"dieSides":1,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27215,"rank":9,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Burns the enemy for 327 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":327,"dieSides":1,"pointsPerLevel":4.300000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47810,"rank":10,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Burns the enemy for 370 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":139,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":370,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47811,"rank":11,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Burns the enemy for 460 Fire damage and then an additional the listed amount Fire damage over 15 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":157,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":460,"dieSides":1,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-metamorphosis","name":"Metamorphosis","iconBasename":"spell_shadow_demonform","iconPath":"/assets/ui/spells/spell_shadow_demonform.png","sourceUnlockLevel":1,"talentNodeId":"talent-1886","ranks":[{"spellId":59672,"rank":0,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"You transform into a Demon for 30 sec. This form increases your armor by 600%, damage by 20%, reduces the chance you'll be critically hit by melee attacks by 6% and reduces the duration of stun and snare effects by 50%. You gain some unique demon abilities in addition to your normal abilities. 3 minute cooldown.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":47241,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50581,"coefficient":0},{"index":2,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":59673,"coefficient":0}]}]},{"id":"wow335-warlock-shadow-bolt","name":"Shadow Bolt","iconBasename":"spell_shadow_shadowbolt","iconPath":"/assets/ui/spells/spell_shadow_shadowbolt.png","sourceUnlockLevel":1,"ranks":[{"spellId":686,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Sends a shadowy bolt at the enemy, causing 16 Shadow damage.","castTimeMs":1700,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":12,"dieSides":5,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14000000059604645}]},{"spellId":695,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":11,"description":"Sends a shadowy bolt at the enemy, causing 29 Shadow damage.","castTimeMs":2200,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":23,"dieSides":7,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.29899999499320984}]},{"spellId":705,"rank":3,"level":12,"sourceLevel":12,"maxScalingLevel":17,"description":"Sends a shadowy bolt at the enemy, causing 56 Shadow damage.","castTimeMs":2800,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":48,"dieSides":9,"pointsPerLevel":0.8999999761581421,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5600000023841858}]},{"spellId":1088,"rank":4,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Sends a shadowy bolt at the enemy, causing 98 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":86,"dieSides":13,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":1106,"rank":5,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Sends a shadowy bolt at the enemy, causing 162 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":142,"dieSides":21,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":7641,"rank":6,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Sends a shadowy bolt at the enemy, causing 230 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":204,"dieSides":27,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":11659,"rank":7,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Sends a shadowy bolt at the enemy, causing 315 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":281,"dieSides":35,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":11660,"rank":8,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Sends a shadowy bolt at the enemy, causing 402 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":360,"dieSides":43,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":11661,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Sends a shadowy bolt at the enemy, causing 507 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":455,"dieSides":53,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":25307,"rank":10,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Sends a shadowy bolt at the enemy, causing 538 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":482,"dieSides":57,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":27209,"rank":11,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Sends a shadowy bolt at the enemy, causing 603 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":541,"dieSides":63,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":47808,"rank":12,"level":74,"sourceLevel":74,"maxScalingLevel":79,"description":"Sends a shadowy bolt at the enemy, causing 664 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":596,"dieSides":69,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]},{"spellId":47809,"rank":13,"level":79,"sourceLevel":79,"maxScalingLevel":84,"description":"Sends a shadowy bolt at the enemy, causing 770 Shadow damage.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":690,"dieSides":81,"pointsPerLevel":4.400000095367432,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.8569999933242798}]}]},{"id":"wow335-warlock-summon-imp","name":"Summon Imp","iconBasename":"spell_shadow_summonimp","iconPath":"/assets/ui/spells/spell_shadow_summonimp.png","sourceUnlockLevel":1,"ranks":[{"spellId":688,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Summons an Imp under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":416,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-unstable-affliction","name":"Unstable Affliction","iconBasename":"spell_shadow_unstableaffliction_3","iconPath":"/assets/ui/spells/spell_shadow_unstableaffliction_3.png","sourceUnlockLevel":1,"talentNodeId":"talent-1670","ranks":[{"spellId":30108,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 5 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":110,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30404,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 5 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":140,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30405,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 5 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":175,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47841,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 5 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":197,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47843,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Shadow energy slowly destroys the target, causing the listed amount damage over 15 sec. In addition, if the Unstable Affliction is dispelled it will cause the listed amount damage to the dispeller and silence them for 5 sec.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":230,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":31117,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Shadow energy slowly destroys the target. In addition, if the Unstable Affliction is dispelled it will cause damage to the dispeller and silence them for 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":27,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":9,"implicitTargetA":25,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-corruption","name":"Corruption","iconBasename":"spell_shadow_abominationexplosion","iconPath":"/assets/ui/spells/spell_shadow_abominationexplosion.png","sourceUnlockLevel":4,"ranks":[{"spellId":172,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Corrupts the target, causing the listed amount Shadow damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.06239999830722809},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6222,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Corrupts the target, causing the listed amount Shadow damage over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6223,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":7648,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11671,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":81,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11672,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":111,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":25311,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":137,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27216,"rank":8,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47812,"rank":9,"level":71,"sourceLevel":71,"maxScalingLevel":76,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":164,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47813,"rank":10,"level":77,"sourceLevel":77,"maxScalingLevel":82,"description":"Corrupts the target, causing the listed amount Shadow damage over 18 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":180,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-weakness","name":"Curse of Weakness","iconBasename":"spell_shadow_curseofmannoroth","iconPath":"/assets/ui/spells/spell_shadow_curseofmannoroth.png","sourceUnlockLevel":4,"ranks":[{"spellId":702,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 21 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-21,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":1108,"rank":2,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 41 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":6205,"rank":3,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 64 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":7646,"rank":4,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 82 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-82,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":11707,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 123 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":11708,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 163 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-163,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":27224,"rank":7,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 257 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-257,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":30909,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 350 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-350,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":50511,"rank":9,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Target's melee attack power is reduced by 478 and armor is reduced by 5% for 120 sec. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-478,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-life-tap","name":"Life Tap","iconBasename":"spell_shadow_burningspirit","iconPath":"/assets/ui/spells/spell_shadow_burningspirit.png","sourceUnlockLevel":6,"ranks":[{"spellId":1454,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":16,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1455,"rank":2,"level":16,"sourceLevel":16,"maxScalingLevel":26,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":6,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1456,"rank":3,"level":26,"sourceLevel":26,"maxScalingLevel":36,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":24,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11687,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":46,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":37,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11688,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":56,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":42,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11689,"rank":6,"level":56,"sourceLevel":56,"maxScalingLevel":66,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":500,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27222,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":78,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":710,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":57946,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Converts the listed amount health into the listed amount mana. Spirit increases quantity of health converted.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1490,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":50000,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-agony","name":"Curse of Agony","iconBasename":"spell_shadow_curseofsargeras","iconPath":"/assets/ui/spells/spell_shadow_curseofsargeras.png","sourceUnlockLevel":8,"ranks":[{"spellId":980,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":17,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":7,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.05480000004172325}]},{"spellId":6217,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":37,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":11711,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":47,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":11712,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":57,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":11713,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":66,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":27218,"rank":7,"level":67,"sourceLevel":67,"maxScalingLevel":72,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":113,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":47863,"rank":8,"level":73,"sourceLevel":73,"maxScalingLevel":78,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":120,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":47864,"rank":9,"level":79,"sourceLevel":79,"maxScalingLevel":84,"description":"Curses the target with agony, causing the listed amount Shadow damage over 24 sec. This damage is dealt slowly at first, and builds up as the Curse reaches its full duration. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":145,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]}]},{"id":"wow335-warlock-fear","name":"Fear","iconBasename":"spell_shadow_possession","iconPath":"/assets/ui/spells/spell_shadow_possession.png","sourceUnlockLevel":8,"ranks":[{"spellId":5782,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Strikes fear in the enemy, causing it to run in fear for up to 10 sec. Damage caused may interrupt the effect. Only 1 target can be feared at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6213,"rank":2,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Strikes fear in the enemy, causing it to run in fear for up to 15 sec. Damage caused may interrupt the effect. Only 1 target can be feared at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6215,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Strikes fear in the enemy, causing it to run in fear for up to 20 sec. Damage caused may interrupt the effect. Only 1 target can be feared at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-create-healthstone","name":"Create Healthstone","iconBasename":"inv_stone_04","iconPath":"/assets/ui/spells/inv_stone_04.png","sourceUnlockLevel":10,"ranks":[{"spellId":6201,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Creates a Minor Healthstone that can be used to instantly restore 100 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6202,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Creates a Lesser Healthstone that can be used to instantly restore 250 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5699,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Creates a Healthstone that can be used to instantly restore 500 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11729,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Creates a Greater Healthstone that can be used to instantly restore 800 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":11730,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Creates a Major Healthstone that can be used to instantly restore 1200 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27230,"rank":6,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Creates a Master Healthstone that can be used to instantly restore 2080 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":53,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47871,"rank":7,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Creates a Demonic Healthstone that can be used to instantly restore 3500 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":53,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47878,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Creates a Fel Healthstone that can be used to instantly restore 4280 health. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":53,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-drain-soul","name":"Drain Soul","iconBasename":"spell_shadow_haunting","iconPath":"/assets/ui/spells/spell_shadow_haunting.png","sourceUnlockLevel":10,"ranks":[{"spellId":1120,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":23,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":11,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.2680000066757202},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8288,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":37,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8289,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":51,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":59,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11675,"rank":4,"level":52,"sourceLevel":52,"maxScalingLevel":66,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":91,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27217,"rank":5,"level":67,"sourceLevel":67,"maxScalingLevel":76,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":124,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47855,"rank":6,"level":77,"sourceLevel":77,"maxScalingLevel":86,"description":"Drains the soul of the target, causing the listed amount Shadow damage over 15 sec. If the target is at or below 25% health, Drain Soul causes four times the normal damage. If the target dies while being drained, and yields experience or honor, the caster gains a Soul Shard. Each time the Drain Soul damages the target, it also has a chance to generate a Soul Shard. Soul Shards are required for other spells.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":86,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":142,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-summon-voidwalker","name":"Summon Voidwalker","iconBasename":"spell_shadow_summonvoidwalker","iconPath":"/assets/ui/spells/spell_shadow_summonvoidwalker.png","sourceUnlockLevel":10,"ranks":[{"spellId":697,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Summons a Voidwalker under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1860,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-health-funnel","name":"Health Funnel","iconBasename":"spell_shadow_lifedrain","iconPath":"/assets/ui/spells/spell_shadow_lifedrain.png","sourceUnlockLevel":12,"ranks":[{"spellId":755,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Gives 12 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":11,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3698,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Gives 24 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":15,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3699,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Gives 43 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":24,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":43,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3700,"rank":4,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Gives 64 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":39,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11693,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Gives 89 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":45,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":89,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11694,"rank":6,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Gives 119 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":62,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":119,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11695,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives 153 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":79,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":153,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27259,"rank":8,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Gives 188 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":99,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":188,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47856,"rank":9,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Gives 520 health to the caster's pet every second for 10 sec as long as the caster channels.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":-2,"powerCost":277,"powerCostPercentage":0,"rangeIndex":36,"rangeMin":0,"rangeMax":45,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":520,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":88,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":87,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-drain-life","name":"Drain Life","iconBasename":"spell_shadow_lifedrain02","iconPath":"/assets/ui/spells/spell_shadow_lifedrain02.png","sourceUnlockLevel":14,"ranks":[{"spellId":689,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Transfers 10 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11100000143051147}]},{"spellId":699,"rank":2,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Transfers 17 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":709,"rank":3,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Transfers 29 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":7651,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Transfers 41 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":11699,"rank":5,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Transfers 55 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":55,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":11700,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Transfers 71 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":71,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":27219,"rank":7,"level":62,"sourceLevel":62,"maxScalingLevel":67,"description":"Transfers 87 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":87,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":27220,"rank":8,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Transfers 108 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":108,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":47857,"rank":9,"level":78,"sourceLevel":78,"maxScalingLevel":83,"description":"Transfers 133 health every 1 sec from the target to the caster. Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":53,"basePoints":133,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]}]},{"id":"wow335-warlock-unending-breath","name":"Unending Breath","iconBasename":"spell_shadow_demonbreath","iconPath":"/assets/ui/spells/spell_shadow_demonbreath.png","sourceUnlockLevel":16,"ranks":[{"spellId":5697,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Allows the target to breathe underwater for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":82,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":58,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-create-soulstone","name":"Create Soulstone","iconBasename":"spell_shadow_soulgem","iconPath":"/assets/ui/spells/spell_shadow_soulgem.png","sourceUnlockLevel":18,"ranks":[{"spellId":693,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Creates a Minor Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 400 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20752,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Creates a Lesser Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 750 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20755,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Creates a Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1100 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20756,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Creates a Greater Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 1600 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":20757,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Creates a Major Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 2200 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27238,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Creates a Master Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 2900 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47884,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Creates a Demonic Soulstone. The Soulstone can be used to store one target's soul. If the target dies while his soul is stored, he will be able to resurrect with 5300 health and the listed amount mana. Conjured items disappear if logged out for more than 15 minutes.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-searing-pain","name":"Searing Pain","iconBasename":"spell_fire_soulburn","iconPath":"/assets/ui/spells/spell_fire_soulburn.png","sourceUnlockLevel":18,"ranks":[{"spellId":5676,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":24,"description":"Inflict searing pain on the enemy target, causing 42 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":34,"dieSides":9,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.3959999978542328}]},{"spellId":17919,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Inflict searing pain on the enemy target, causing 71 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":59,"dieSides":13,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":17920,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":40,"description":"Inflict searing pain on the enemy target, causing 104 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":86,"dieSides":19,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":17921,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Inflict searing pain on the enemy target, causing 146 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":122,"dieSides":25,"pointsPerLevel":1.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":17922,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Inflict searing pain on the enemy target, causing 188 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":158,"dieSides":31,"pointsPerLevel":1.7000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":17923,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"Inflict searing pain on the enemy target, causing 240 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":204,"dieSides":37,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27210,"rank":7,"level":65,"sourceLevel":65,"maxScalingLevel":69,"description":"Inflict searing pain on the enemy target, causing 287 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":243,"dieSides":45,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":30459,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Inflict searing pain on the enemy target, causing 320 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":270,"dieSides":51,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":47814,"rank":9,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Inflict searing pain on the enemy target, causing 349 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":295,"dieSides":55,"pointsPerLevel":4.099999904632568,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":47815,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Inflict searing pain on the enemy target, causing 405 Fire damage. Causes a high amount of threat.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":343,"dieSides":63,"pointsPerLevel":4.800000190734863,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-warlock-demon-armor","name":"Demon Armor","iconBasename":"spell_shadow_ragingscream","iconPath":"/assets/ui/spells/spell_shadow_ragingscream.png","sourceUnlockLevel":20,"ranks":[{"spellId":706,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 465, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":465,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":1086,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 660, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":660,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":11733,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 860, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":860,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":11734,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 1060, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1060,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":11735,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 1260, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":42,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1260,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":27260,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 1460, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1460,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":47793,"rank":7,"level":76,"sourceLevel":76,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 1855, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":1855,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":47889,"rank":8,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Protects the caster, increasing armor by 2100, and increasing the amount of health generated through spells and effects by 20%. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":2100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":118,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-felsteed","name":"Felsteed","iconBasename":"spell_nature_swiftness","iconPath":"/assets/ui/spells/spell_nature_swiftness.png","sourceUnlockLevel":20,"ranks":[{"spellId":5784,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Felsteed, which serves as a mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":304,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-rain-of-fire","name":"Rain of Fire","iconBasename":"spell_shadow_rainoffire","iconPath":"/assets/ui/spells/spell_shadow_rainoffire.png","sourceUnlockLevel":20,"ranks":[{"spellId":5740,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":77,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":42,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42223,"coefficient":0}]},{"spellId":42223,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":60,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":6219,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":77,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":96,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42224,"coefficient":0}]},{"spellId":42224,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":136,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":11677,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":77,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":155,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42225,"coefficient":0}]},{"spellId":42225,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":220,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":11678,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":77,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":226,"dieSides":1,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42226,"coefficient":0}]},{"spellId":42226,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":321,"dieSides":1,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":27212,"rank":5,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":57,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":303,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":42218,"coefficient":0}]},{"spellId":42218,"rank":5,"level":69,"sourceLevel":69,"maxScalingLevel":74,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":452,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":47817,"rank":6,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":538,"dieSides":1,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":47819,"rank":6,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":57,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":385,"dieSides":1,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":47817,"coefficient":0}]},{"spellId":47818,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":675,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043}]},{"spellId":47820,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Calls down a fiery rain to burn enemies in the area of effect for the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":57,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":4,"basePoints":485,"dieSides":1,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.2370000034570694},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":47818,"coefficient":0}]}]},{"id":"wow335-warlock-ritual-of-summoning","name":"Ritual of Summoning","iconBasename":"spell_shadow_twilight","iconPath":"/assets/ui/spells/spell_shadow_twilight.png","sourceUnlockLevel":20,"ranks":[{"spellId":698,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Begins a ritual that creates a summoning portal. The summoning portal can be used by 2 party or raid members to summon a targeted party or raid member. The ritual portal requires the caster and 2 additional party or raid members to complete. In order to participate, all players must be out of combat and right-click the portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":120000,"channelDurationMs":120000,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":194108,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-shadowburn","name":"Shadowburn","iconBasename":"spell_shadow_scourgebuild","iconPath":"/assets/ui/spells/spell_shadow_scourgebuild.png","sourceUnlockLevel":20,"talentNodeId":"talent-963","ranks":[{"spellId":17877,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":24,"description":"Instantly blasts the target for 99 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":87,"dieSides":13,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18867,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":30,"description":"Instantly blasts the target for 131 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":115,"dieSides":17,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18868,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":38,"description":"Instantly blasts the target for 210 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":186,"dieSides":25,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18869,"rank":4,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Instantly blasts the target for 293 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":261,"dieSides":33,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18870,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":54,"description":"Instantly blasts the target for 392 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":350,"dieSides":43,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":18871,"rank":6,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Instantly blasts the target for 502 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":450,"dieSides":53,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":27263,"rank":7,"level":63,"sourceLevel":63,"maxScalingLevel":69,"description":"Instantly blasts the target for 578 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":518,"dieSides":61,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":30546,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Instantly blasts the target for 665 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":597,"dieSides":69,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":47826,"rank":9,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Instantly blasts the target for 738 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":662,"dieSides":77,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]},{"spellId":47827,"rank":10,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Instantly blasts the target for 865 Shadow damage. If the target dies within 5 sec of Shadowburn, and yields experience or honor, the caster gains a Soul Shard.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":29341,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":775,"dieSides":91,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.42899999022483826}]}]},{"id":"wow335-warlock-soul-link","name":"Soul Link","iconBasename":"spell_shadow_gathershadows","iconPath":"/assets/ui/spells/spell_shadow_gathershadows.png","sourceUnlockLevel":20,"talentNodeId":"talent-1282","ranks":[{"spellId":19028,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"When active, 20% of all damage taken by the caster is taken by your Imp, Voidwalker, Succubus, Felhunter, Felguard, or enslaved demon instead. That damage cannot be prevented. Lasts as long as the demon is active and controlled.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-summon-succubus","name":"Summon Succubus","iconBasename":"spell_shadow_summonsuccubus","iconPath":"/assets/ui/spells/spell_shadow_summonsuccubus.png","sourceUnlockLevel":20,"ranks":[{"spellId":712,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Summons a Succubus under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1863,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-eye-of-kilrogg","name":"Eye of Kilrogg","iconBasename":"spell_shadow_evileye","iconPath":"/assets/ui/spells/spell_shadow_evileye.png","sourceUnlockLevel":22,"ranks":[{"spellId":126,"rank":0,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Summons an Eye of Kilrogg and binds your vision to it. The eye moves quickly but is very fragile.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":45000,"channelDurationMs":45000,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":4277,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-drain-mana","name":"Drain Mana","iconBasename":"spell_shadow_siphonmana","iconPath":"/assets/ui/spells/spell_shadow_siphonmana.png","sourceUnlockLevel":24,"ranks":[{"spellId":5138,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Transfers 3% of target's maximum mana every 1 sec from the target to the caster (up to a maximum of the listed amount% of the caster's maximum mana every 1 sec). Lasts 5 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":5000,"channelDurationMs":5000,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":64,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-sense-demons","name":"Sense Demons","iconBasename":"spell_shadow_metamorphosis","iconPath":"/assets/ui/spells/spell_shadow_metamorphosis.png","sourceUnlockLevel":24,"ranks":[{"spellId":5500,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Shows the location of all nearby demons on the minimap until cancelled. Only one form of tracking can be active at a time.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-tongues","name":"Curse of Tongues","iconBasename":"spell_shadow_curseoftounges","iconPath":"/assets/ui/spells/spell_shadow_curseoftounges.png","sourceUnlockLevel":26,"ranks":[{"spellId":1714,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Forces the target to speak in Demonic, increasing the casting time of all spells by 25%. Only one Curse per Warlock can be active on any one target. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":216,"basePoints":-25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":75,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]},{"spellId":11719,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Forces the target to speak in Demonic, increasing the casting time of all spells by 30%. Only one Curse per Warlock can be active on any one target. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":4,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":216,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":75,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-detect-invisibility","name":"Detect Invisibility","iconBasename":"spell_shadow_detectlesserinvisibility","iconPath":"/assets/ui/spells/spell_shadow_detectlesserinvisibility.png","sourceUnlockLevel":26,"ranks":[{"spellId":132,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Allows the friendly target to detect lesser invisibility for 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":2,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":19,"basePoints":1000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-banish","name":"Banish","iconBasename":"spell_shadow_cripple","iconPath":"/assets/ui/spells/spell_shadow_cripple.png","sourceUnlockLevel":28,"ranks":[{"spellId":710,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Banishes the enemy target, preventing all action but making it invulnerable for up to 20 sec. Only one target can be banished at a time. Casting Banish on a banished target will cancel the spell. Only works on Demons and Elementals.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":118,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]},{"spellId":18647,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Banishes the enemy target, preventing all action but making it invulnerable for up to 30 sec. Only one target can be banished at a time. Casting Banish on a banished target will cancel the spell. Only works on Demons and Elementals.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":118,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-create-firestone","name":"Create Firestone","iconBasename":"inv_ammo_firetar","iconPath":"/assets/ui/spells/inv_ammo_firetar.png","sourceUnlockLevel":28,"ranks":[{"spellId":6366,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by 7. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":73,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17951,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by 14. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":73,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17952,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by 21. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":73,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17953,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by 28. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":73,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27250,"rank":5,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by direct spells by 1% and spell critical strike rating by 35. Lasts for 1 hour.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":54,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-demonic-empowerment","name":"Demonic Empowerment","iconBasename":"ability_warlock_demonicempowerment","iconPath":"/assets/ui/spells/ability_warlock_demonicempowerment.png","sourceUnlockLevel":30,"talentNodeId":"talent-1880","ranks":[{"spellId":47193,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Grants the Warlock's summoned demon Empowerment. Imp - Increases the Imp's spell critical strike chance by 20% for 30 sec. Voidwalker - Increases the Voidwalker's health by 20%, and its threat generated from spells and attacks by 20% for 20 sec. Succubus - Instantly vanishes, causing the Succubus to go into an improved Invisibility state. The vanish effect removes all stuns, snares and movement impairing effects from the Succubus. Felhunter - Dispels all magical effects from the Felhunter. Felguard - Increases the Felguard's attack speed by 20% and breaks all stun, snare and movement impairing effects and makes your Felguard immune to them for 15 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":77,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-enslave-demon","name":"Enslave Demon","iconBasename":"spell_shadow_enslavedemon","iconPath":"/assets/ui/spells/spell_shadow_enslavedemon.png","sourceUnlockLevel":30,"ranks":[{"spellId":1098,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":43,"description":"Enslaves the target demon, up to level 32, forcing it to do your bidding. While enslaved, the time between the demon's attacks is increased by 30% and its casting speed is slowed by 20%. Lasts up to 300 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":6,"basePoints":32,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11725,"rank":2,"level":44,"sourceLevel":44,"maxScalingLevel":56,"description":"Enslaves the target demon, up to level 47, forcing it to do your bidding. While enslaved, the time between the demon's attacks is increased by 30% and its casting speed is slowed by 20%. Lasts up to 300 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":6,"basePoints":47,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":11726,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":70,"description":"Enslaves the target demon, up to level 62, forcing it to do your bidding. While enslaved, the time between the demon's attacks is increased by 30% and its casting speed is slowed by 20%. Lasts up to 300 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":6,"basePoints":62,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61191,"rank":4,"level":72,"sourceLevel":72,"maxScalingLevel":80,"description":"Enslaves the target demon, up to level 76, forcing it to do your bidding. While enslaved, the time between the demon's attacks is increased by 30% and its casting speed is slowed by 20%. Lasts up to 300 sec.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":6,"basePoints":76,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":138,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":65,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-hellfire","name":"Hellfire","iconBasename":"spell_fire_incinerate","iconPath":"/assets/ui/spells/spell_fire_incinerate.png","sourceUnlockLevel":30,"ranks":[{"spellId":1949,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":40,"description":"Ignites the area surrounding the caster, causing 83 Fire damage to the listed amount and 83 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":87,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":5857,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":83,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]},{"spellId":11683,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":52,"description":"Ignites the area surrounding the caster, causing 139 Fire damage to the listed amount and 139 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":87,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":11681,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":139,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]},{"spellId":11684,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":64,"description":"Ignites the area surrounding the caster, causing 208 Fire damage to the listed amount and 208 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":87,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":11682,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":208,"dieSides":1,"pointsPerLevel":0.699999988079071,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]},{"spellId":27213,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":78,"description":"Ignites the area surrounding the caster, causing 306 Fire damage to the listed amount and 306 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":27214,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":306,"dieSides":1,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]},{"spellId":47823,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":88,"description":"Ignites the area surrounding the caster, causing 451 Fire damage to the listed amount and 451 Fire damage to all nearby enemies every 1 sec. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":15000,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":47822,"coefficient":1},{"index":1,"effectType":6,"auraType":3,"basePoints":451,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.0949999988079071},{"index":2,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":16,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-summon-felhunter","name":"Summon Felhunter","iconBasename":"spell_shadow_summonfelhunter","iconPath":"/assets/ui/spells/spell_shadow_summonfelhunter.png","sourceUnlockLevel":30,"ranks":[{"spellId":691,"rank":0,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Summons a Felhunter under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":417,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-the-elements","name":"Curse of the Elements","iconBasename":"spell_shadow_chilltouch","iconPath":"/assets/ui/spells/spell_shadow_chilltouch.png","sourceUnlockLevel":32,"ranks":[{"spellId":1490,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature, and Shadow resistances by 45 and increasing magic damage taken by 6%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":11721,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature, and Shadow resistances by 60 and increasing magic damage taken by 8%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":11722,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature and Shadow resistances by 75 and increasing magic damage taken by 10%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":27228,"rank":4,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature, and Shadow resistances by 88 and increasing magic damage taken by 10%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-88,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":47865,"rank":5,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Curses the target for 300 sec, reducing Arcane, Fire, Frost, Nature, and Shadow resistances by 165 and increasing magic damage taken by 13%. Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":10,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":-165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-shadow-ward","name":"Shadow Ward","iconBasename":"spell_shadow_antishadow","iconPath":"/assets/ui/spells/spell_shadow_antishadow.png","sourceUnlockLevel":32,"ranks":[{"spellId":6229,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":41,"description":"Absorbs 290 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":11739,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":51,"description":"Absorbs 470 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":470,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":11740,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":59,"description":"Absorbs 675 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":675,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":28610,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Absorbs 875 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":875,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":47890,"rank":5,"level":72,"sourceLevel":72,"maxScalingLevel":77,"description":"Absorbs 2750 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":2750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]},{"spellId":47891,"rank":6,"level":78,"sourceLevel":78,"maxScalingLevel":83,"description":"Absorbs 3300 shadow damage. Lasts 30 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":69,"basePoints":3300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":32,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-create-spellstone","name":"Create Spellstone","iconBasename":"inv_misc_gem_sapphire_01","iconPath":"/assets/ui/spells/inv_misc_gem_sapphire_01.png","sourceUnlockLevel":36,"ranks":[{"spellId":2362,"rank":1,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by 10. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":61,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17727,"rank":2,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by 20. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":61,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17728,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by 30. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":61,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":28172,"rank":4,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by 40. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":45,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47886,"rank":5,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by 50. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":45,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47888,"rank":6,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"While applied to target weapon it increases damage dealt by periodic spells by 1% and spell haste rating by 60. Lasts for 1 hour.","castTimeMs":5000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":45,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":24,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-curse-of-idiocy","name":"Curse of Idiocy","iconBasename":"spell_shadow_mindrot","iconPath":"/assets/ui/spells/spell_shadow_mindrot.png","sourceUnlockLevel":38,"ranks":[{"spellId":1010,"rank":1,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Curse the target with idiocy, reducing Intellect and Spirit by 6 every 3 seconds until each is reduced by a total of the listed amount Only one Curse per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":120000,"channelDurationMs":0,"powerType":0,"powerCost":110,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":29,"basePoints":-6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":-6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":1010,"coefficient":0}]}]},{"id":"wow335-warlock-dark-pact","name":"Dark Pact","iconBasename":"spell_shadow_darkritual","iconPath":"/assets/ui/spells/spell_shadow_darkritual.png","sourceUnlockLevel":40,"talentNodeId":"talent-1022","ranks":[{"spellId":18220,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":50,"description":"Drains 305 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":305,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18937,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":60,"description":"Drains 440 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":440,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18938,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Drains 545 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":545,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27265,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":80,"description":"Drains 700 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":700,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":59092,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":90,"description":"Drains 1200 of your summoned demon's Mana, returning 100% to you.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":8,"auraType":0,"basePoints":1200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":5,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-dreadsteed","name":"Dreadsteed","iconBasename":"ability_mount_dreadsteed","iconPath":"/assets/ui/spells/ability_mount_dreadsteed.png","sourceUnlockLevel":40,"ranks":[{"spellId":23161,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Summons a Dreadsteed, which serves as a mount. This is a very fast mount.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":78,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14505,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":32,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":77,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-howl-of-terror","name":"Howl of Terror","iconBasename":"spell_shadow_deathscream","iconPath":"/assets/ui/spells/spell_shadow_deathscream.png","sourceUnlockLevel":40,"ranks":[{"spellId":5484,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":52,"description":"Howl, causing the listed amount enemies within the listed amount yds to flee in terror for 6 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":40000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":17928,"rank":2,"level":54,"sourceLevel":54,"maxScalingLevel":66,"description":"Howl, causing the listed amount enemies within the listed amount yds to flee in terror for 8 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":40000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":31,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-death-coil","name":"Death Coil","iconBasename":"spell_shadow_deathcoil","iconPath":"/assets/ui/spells/spell_shadow_deathcoil.png","sourceUnlockLevel":42,"ranks":[{"spellId":6789,"rank":1,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Causes the enemy target to run in horror for 3 sec and causes 244 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":244,"dieSides":1,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17925,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Causes the enemy target to run in horror for 3 sec and causes 319 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":319,"dieSides":1,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":17926,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"Causes the enemy target to run in horror for 3 sec and causes 400 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":31,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":27223,"rank":4,"level":68,"sourceLevel":68,"maxScalingLevel":74,"description":"Causes the enemy target to run in horror for 3 sec and causes 519 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":519,"dieSides":1,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47859,"rank":5,"level":73,"sourceLevel":73,"maxScalingLevel":77,"description":"Causes the enemy target to run in horror for 3 sec and causes 670 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":670,"dieSides":1,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":47860,"rank":6,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Causes the enemy target to run in horror for 3 sec and causes 790 Shadow damage. The caster gains the listed amountthe listed amount% of the damage caused in health.","castTimeMs":0,"cooldownMs":120000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":9,"auraType":0,"basePoints":790,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076},{"index":1,"effectType":6,"auraType":7,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":24,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-soul-fire","name":"Soul Fire","iconBasename":"spell_fire_fireball02","iconPath":"/assets/ui/spells/spell_fire_fireball02.png","sourceUnlockLevel":48,"ranks":[{"spellId":6353,"rank":1,"level":48,"sourceLevel":48,"maxScalingLevel":54,"description":"Burn the enemy's soul, causing 783 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":623,"dieSides":161,"pointsPerLevel":2.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":17924,"rank":2,"level":56,"sourceLevel":56,"maxScalingLevel":62,"description":"Burn the enemy's soul, causing 881 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":703,"dieSides":179,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":27211,"rank":3,"level":64,"sourceLevel":64,"maxScalingLevel":68,"description":"Burn the enemy's soul, causing 1051 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":839,"dieSides":213,"pointsPerLevel":3.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":30545,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Burn the enemy's soul, causing 1257 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1003,"dieSides":255,"pointsPerLevel":3.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":47824,"rank":5,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Burn the enemy's soul, causing 1423 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1137,"dieSides":287,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]},{"spellId":47825,"rank":6,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Burn the enemy's soul, causing 1657 Fire damage.","castTimeMs":6000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1323,"dieSides":335,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.149999976158142}]}]},{"id":"wow335-warlock-inferno","name":"Inferno","iconBasename":"spell_shadow_summoninfernal","iconPath":"/assets/ui/spells/spell_shadow_summoninfernal.png","sourceUnlockLevel":50,"ranks":[{"spellId":1122,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a meteor from the Twisting Nether, causing 200 Fire damage and stunning all enemy targets in the area for 2 sec. An Infernal rises from the crater, under the command of the caster for 60 sec.","castTimeMs":1500,"cooldownMs":1200000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":50,"dieSides":1,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":89,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":87,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":22703,"coefficient":0}]}]},{"id":"wow335-warlock-shadowfury","name":"Shadowfury","iconBasename":"spell_shadow_shadowfury","iconPath":"/assets/ui/spells/spell_shadow_shadowfury.png","sourceUnlockLevel":50,"talentNodeId":"talent-1676","ranks":[{"spellId":30283,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"Shadowfury is unleashed, causing 407 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":343,"dieSides":65,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30413,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Shadowfury is unleashed, causing 547 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":37,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":459,"dieSides":89,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":30414,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Shadowfury is unleashed, causing 728 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":612,"dieSides":117,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47846,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Shadowfury is unleashed, causing 978 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":822,"dieSides":157,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":47847,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Shadowfury is unleashed, causing 1152 Shadow damage and stunning all enemies within the listed amount yds for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":500,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":968,"dieSides":185,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":1,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":16,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-summon-felguard","name":"Summon Felguard","iconBasename":"spell_shadow_summonfelguard","iconPath":"/assets/ui/spells/spell_shadow_summonfelguard.png","sourceUnlockLevel":50,"talentNodeId":"talent-1672","ranks":[{"spellId":30146,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons a Felguard under the command of the Warlock.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":56,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":32,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17252,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-atrocity","name":"Atrocity","iconBasename":"spell_shadow_shadesofdarkness","iconPath":"/assets/ui/spells/spell_shadow_shadesofdarkness.png","sourceUnlockLevel":60,"ranks":[{"spellId":47206,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"You devastate the area, causing Corruption (Rank 8) to all targets within 15 yards. In addition, your Corruption spell will do 434 Shadow damage to the target when it finishes its duration.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":16,"radius":10,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.15600000321865082},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":16,"radius":10,"periodMs":18000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-chaos-bolt","name":"Chaos Bolt","iconBasename":"ability_warlock_chaosbolt","iconPath":"/assets/ui/spells/ability_warlock_chaosbolt.png","sourceUnlockLevel":60,"talentNodeId":"talent-1891","ranks":[{"spellId":50796,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Sends a bolt of chaotic fire at the enemy, dealing 1061 Fire damage. Chaos Bolt cannot be resisted, and pierces through all absorption effects.","castTimeMs":2500,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":837,"dieSides":225,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":59170,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Sends a bolt of chaotic fire at the enemy, dealing 1367 Fire damage. Chaos Bolt cannot be resisted, and pierces through all absorption effects.","castTimeMs":2500,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1077,"dieSides":291,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":59171,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Sends a bolt of chaotic fire at the enemy, dealing 1545 Fire damage. Chaos Bolt cannot be resisted, and pierces through all absorption effects.","castTimeMs":2500,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1217,"dieSides":329,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":59172,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Sends a bolt of chaotic fire at the enemy, dealing 1813 Fire damage. Chaos Bolt cannot be resisted, and pierces through all absorption effects.","castTimeMs":2500,"cooldownMs":12000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1429,"dieSides":385,"pointsPerLevel":5.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]}]},{"id":"wow335-warlock-create-soulwell","name":"Create Soulwell","iconBasename":"spell_arcane_portaldarnassus","iconPath":"/assets/ui/spells/spell_arcane_portaldarnassus.png","sourceUnlockLevel":60,"ranks":[{"spellId":29886,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":181621,"triggerSpellId":0,"coefficient":1}]},{"spellId":58889,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"No client description is available.","castTimeMs":1500,"cooldownMs":0,"gcdMs":0,"durationMs":180000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":7,"rangeMin":0,"rangeMax":10,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":193169,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-warlock-curse-of-doom","name":"Curse of Doom","iconBasename":"spell_shadow_auraofdarkness","iconPath":"/assets/ui/spells/spell_shadow_auraofdarkness.png","sourceUnlockLevel":60,"ranks":[{"spellId":603,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Curses the target with impending doom, causing 3200 Shadow damage after 60 sec. If the target yields experience or honor when it dies from this damage, a Doomguard will be summoned. Cannot be cast on players.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":20,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":3200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":60000,"miscValue":0,"triggerSpellId":0,"coefficient":2}]},{"spellId":30910,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Curses the target with impending doom, causing 4200 Shadow damage after 60 sec. If the target yields experience or honor when it dies from this damage, a Doomguard will be summoned. Cannot be cast on players.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":60000,"miscValue":0,"triggerSpellId":0,"coefficient":2}]},{"spellId":47867,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Curses the target with impending doom, causing 7300 Shadow damage after 60 sec. If the target yields experience or honor when it dies from this damage, a Doomguard will be summoned. Cannot be cast on players.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":7300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":60000,"miscValue":0,"triggerSpellId":0,"coefficient":2}]}]},{"id":"wow335-warlock-haunt","name":"Haunt","iconBasename":"ability_warlock_haunt","iconPath":"/assets/ui/spells/ability_warlock_haunt.png","sourceUnlockLevel":60,"talentNodeId":"talent-2041","ranks":[{"spellId":48181,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":64,"description":"You send a ghostly soul into the target, dealing 473 Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":405,"dieSides":69,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":59161,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"You send a ghostly soul into the target, dealing 569 Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":487,"dieSides":83,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":59163,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"You send a ghostly soul into the target, dealing 642 Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":550,"dieSides":93,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":59164,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"You send a ghostly soul into the target, dealing 753 Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target.","castTimeMs":1500,"cooldownMs":8000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":645,"dieSides":109,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":4,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":271,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-ritual-of-doom","name":"Ritual of Doom","iconBasename":"spell_shadow_antimagicshell","iconPath":"/assets/ui/spells/spell_shadow_antimagicshell.png","sourceUnlockLevel":60,"ranks":[{"spellId":18540,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Begins a ritual that sacrifices a random participant's health to summon a doomguard. Requires the caster and 4 additional party members to complete the ritual. In order to participate, all players must right-click the portal and not move until the ritual is complete.","castTimeMs":10000,"cooldownMs":1800000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":177193,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-fel-armor","name":"Fel Armor","iconBasename":"spell_shadow_felarmour","iconPath":"/assets/ui/spells/spell_shadow_felarmour.png","sourceUnlockLevel":62,"ranks":[{"spellId":28176,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Surrounds the caster with fel energy, increasing spell power by 50 plus additional spell power equal to 30% of your Spirit. In addition, you regain 2% of your maximum health every 5 sec. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":174,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":20,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":28189,"rank":2,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Surrounds the caster with fel energy, increasing spell power by 100 plus additional spell power equal to 30% of your Spirit. In addition, you regain 2% of your maximum health every 5 sec. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":174,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":20,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":47892,"rank":3,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Surrounds the caster with fel energy, increasing spell power by 150 plus additional spell power equal to 30% of your Spirit. In addition, you regain 2% of your maximum health every 5 sec. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":174,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":20,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":47893,"rank":4,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Surrounds the caster with fel energy, increasing spell power by 180 plus additional spell power equal to 30% of your Spirit. In addition, you regain 2% of your maximum health every 5 sec. Only one type of Armor spell can be active on the Warlock at any time. Lasts 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":174,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":20,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":13,"basePoints":180,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-incinerate","name":"Incinerate","iconBasename":"spell_fire_burnout","iconPath":"/assets/ui/spells/spell_fire_burnout.png","sourceUnlockLevel":64,"ranks":[{"spellId":29722,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":69,"description":"Deals 467 Fire damage to your target and an additional the listed amount Fire damage if the target is affected by an Immolate spell.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":403,"dieSides":65,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":32231,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Deals 514 Fire damage to your target and an additional the listed amount Fire damage if the target is affected by an Immolate spell.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":444,"dieSides":71,"pointsPerLevel":2.799999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":47837,"rank":3,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Deals 563 Fire damage to your target and an additional the listed amount Fire damage if the target is affected by an Immolate spell.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":485,"dieSides":79,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]},{"spellId":47838,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Deals 676 Fire damage to your target and an additional the listed amount Fire damage if the target is affected by an Immolate spell.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":14,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":582,"dieSides":95,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.7139999866485596}]}]},{"id":"wow335-warlock-soulshatter","name":"Soulshatter","iconBasename":"spell_arcane_arcane01","iconPath":"/assets/ui/spells/spell_arcane_arcane01.png","sourceUnlockLevel":66,"ranks":[{"spellId":29858,"rank":0,"level":66,"sourceLevel":66,"maxScalingLevel":72,"description":"Reduces threat by 50% for all enemies within the listed amount yards.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":-2,"powerCost":0,"powerCostPercentage":8,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":50,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-ritual-of-souls","name":"Ritual of Souls","iconBasename":"spell_shadow_shadesofdarkness","iconPath":"/assets/ui/spells/spell_shadow_shadesofdarkness.png","sourceUnlockLevel":68,"ranks":[{"spellId":29893,"rank":1,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Begins a ritual that creates a Soulwell. Raid members can click the Soulwell to acquire a Master Healthstone. The Soulwell lasts for 180 sec or 25 charges. Requires the caster and 2 additional party members to complete the ritual. In order to participate, all players must right-click the soul portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":181622,"triggerSpellId":0,"coefficient":0}]},{"spellId":58887,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Begins a ritual that creates a Soulwell. Raid members can click the Soulwell to acquire a Fel Healthstone. The Soulwell lasts for 180 sec or 25 charges. Requires the caster and 2 additional party members to complete the ritual. In order to participate, all players must right-click the soul portal and not move until the ritual is complete.","castTimeMs":0,"cooldownMs":300000,"gcdMs":1500,"durationMs":60000,"channelDurationMs":60000,"powerType":0,"powerCost":0,"powerCostPercentage":80,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":50,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":47,"implicitTargetB":0,"radius":5,"periodMs":0,"miscValue":193168,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-seed-of-corruption","name":"Seed of Corruption","iconBasename":"spell_shadow_seedofdestruction","iconPath":"/assets/ui/spells/spell_shadow_seedofdestruction.png","sourceUnlockLevel":70,"ranks":[{"spellId":27243,"rank":1,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1044 total damage or dies, the seed will inflict 1290 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":174,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.25},{"index":1,"effectType":6,"auraType":4,"basePoints":1044,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":27285,"rank":1,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1044 total damage or dies, the seed will inflict 1290 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1110,"dieSides":181,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":47833,"rank":2,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1296 total damage or dies, the seed will inflict 1607 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1383,"dieSides":225,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":47835,"rank":2,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1296 total damage or dies, the seed will inflict 1607 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":216,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.25},{"index":1,"effectType":6,"auraType":4,"basePoints":1296,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]},{"spellId":47834,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1518 total damage or dies, the seed will inflict 1897 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":13,"rangeMin":0,"rangeMax":50000,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1633,"dieSides":265,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.21400000154972076}]},{"spellId":47836,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Imbeds a demon seed in the enemy target, causing the listed amount Shadow damage over 18 sec. When the target takes 1518 total damage or dies, the seed will inflict 1897 Shadow damage to all other enemies within the listed amount yards of the target. Only one Corruption spell per Warlock can be active on any one target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":34,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":253,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.25},{"index":1,"effectType":6,"auraType":4,"basePoints":1518,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.14300000667572021}]}]},{"id":"wow335-warlock-shadowflame","name":"Shadowflame","iconBasename":"ability_warlock_shadowflame","iconPath":"/assets/ui/spells/ability_warlock_shadowflame.png","sourceUnlockLevel":75,"ranks":[{"spellId":47897,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":83,"description":"Targets in a cone in front of the caster take 568 Shadow damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":520,"dieSides":49,"pointsPerLevel":2,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10700000077486038}]},{"spellId":61290,"rank":2,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Targets in a cone in front of the caster take 671 Shadow damage and an additional the listed amount Fire damage over 8 sec.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":25,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":615,"dieSides":57,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.10700000077486038}]}]},{"id":"wow335-warlock-demonic-circle-summon","name":"Demonic Circle: Summon","iconBasename":"spell_shadow_demoniccirclesummon","iconPath":"/assets/ui/spells/spell_shadow_demoniccirclesummon.png","sourceUnlockLevel":80,"ranks":[{"spellId":48018,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"You summon a Demonic Circle at your feet, lasting 360 sec. You can only have one Demonic Circle active at a time.","castTimeMs":500,"cooldownMs":0,"gcdMs":1500,"durationMs":360000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":15,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":226,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":104,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":18,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":191083,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-warlock-demonic-circle-teleport","name":"Demonic Circle: Teleport","iconBasename":"spell_shadow_demoniccircleteleport","iconPath":"/assets/ui/spells/spell_shadow_demoniccircleteleport.png","sourceUnlockLevel":80,"ranks":[{"spellId":48020,"rank":0,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Teleports you to your Demonic Circle and removes all snare effects.","castTimeMs":0,"cooldownMs":30000,"gcdMs":1500,"durationMs":1000,"channelDurationMs":0,"powerType":0,"powerCost":100,"powerCostPercentage":0,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":77,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0}]}]}],"druid":[{"id":"wow335-druid-feral-charge","name":"Feral Charge","iconBasename":"ability_hunter_pet_bear","iconPath":"/assets/ui/spells/ability_hunter_pet_bear.png","sourceUnlockLevel":1,"talentNodeId":"talent-804","ranks":[{"spellId":49377,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Teaches Feral Charge (Bear) and Feral Charge (Cat). Feral Charge (Bear) - Causes you to charge an enemy, immobilizing and interrupting any spell being cast for 4 sec. This ability can be used in Bear Form and Dire Bear Form. 15 second cooldown. Feral Charge (Cat) - Causes you to leap behind an enemy, dazing them for 3 sec. 30 second cooldown.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16979,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":49376,"coefficient":0}]}]},{"id":"wow335-druid-healing-touch","name":"Healing Touch","iconBasename":"spell_nature_healingtouch","iconPath":"/assets/ui/spells/spell_nature_healingtouch.png","sourceUnlockLevel":1,"ranks":[{"spellId":5185,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Heals a friendly target for 51.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":37,"dieSides":15,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.23100000619888306}]},{"spellId":5186,"rank":2,"level":8,"sourceLevel":8,"maxScalingLevel":13,"description":"Heals a friendly target for 112.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":88,"dieSides":25,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5899999737739563}]},{"spellId":5187,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":19,"description":"Heals a friendly target for 243.","castTimeMs":2500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":195,"dieSides":49,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.0420000553131104}]},{"spellId":5188,"rank":4,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Heals a friendly target for 445.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":363,"dieSides":83,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6109999418258667}]},{"spellId":5189,"rank":5,"level":26,"sourceLevel":26,"maxScalingLevel":31,"description":"Heals a friendly target for 594.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":490,"dieSides":105,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":6778,"rank":6,"level":32,"sourceLevel":32,"maxScalingLevel":37,"description":"Heals a friendly target for 766.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":636,"dieSides":131,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":8903,"rank":7,"level":38,"sourceLevel":38,"maxScalingLevel":43,"description":"Heals a friendly target for 960.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":802,"dieSides":159,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":9758,"rank":8,"level":44,"sourceLevel":44,"maxScalingLevel":49,"description":"Heals a friendly target for 1427.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1199,"dieSides":229,"pointsPerLevel":4.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":9888,"rank":9,"level":50,"sourceLevel":50,"maxScalingLevel":55,"description":"Heals a friendly target for 1539.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1299,"dieSides":241,"pointsPerLevel":5.099999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":9889,"rank":10,"level":56,"sourceLevel":56,"maxScalingLevel":61,"description":"Heals a friendly target for 1912.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1620,"dieSides":293,"pointsPerLevel":5.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":25297,"rank":11,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 2294.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1944,"dieSides":351,"pointsPerLevel":6.199999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":26978,"rank":12,"level":62,"sourceLevel":62,"maxScalingLevel":67,"description":"Heals a friendly target for 2392.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":38,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2026,"dieSides":367,"pointsPerLevel":6.300000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":26979,"rank":13,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Heals a friendly target for 2739.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2321,"dieSides":419,"pointsPerLevel":7,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":48377,"rank":14,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Heals a friendly target for 3805.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3223,"dieSides":583,"pointsPerLevel":9.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]},{"spellId":48378,"rank":15,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Heals a friendly target for 4428.","castTimeMs":3000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":3750,"dieSides":679,"pointsPerLevel":11.399999618530273,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1.6100000143051147}]}]},{"id":"wow335-druid-mangle","name":"Mangle","iconBasename":"ability_druid_mangle2","iconPath":"/assets/ui/spells/ability_druid_mangle2.png","sourceUnlockLevel":1,"talentNodeId":"talent-1796","ranks":[{"spellId":33917,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Mangle the target, inflicting damage and causing the target to take additional damage from bleed effects for 12 sec. This ability can be used in Cat Form or Dire Bear Form.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":33878,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":33876,"coefficient":0}]}]},{"id":"wow335-druid-mark-of-the-wild","name":"Mark of the Wild","iconBasename":"spell_nature_regeneration","iconPath":"/assets/ui/spells/spell_nature_regeneration.png","sourceUnlockLevel":1,"ranks":[{"spellId":1126,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 25 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":5232,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 65 and all attributes by 2 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":65,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":2,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0}]},{"spellId":6756,"rank":3,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 105 and all attributes by 4 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0}]},{"spellId":5234,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 150, all attributes by 6 and all resistances by 5 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":8907,"rank":5,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 195, all attributes by 8 and all resistances by 10 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":195,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":9884,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 240, all attributes by 10 and all resistances by 15 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":240,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":9885,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 285, all attributes by 12 and all resistances by 20 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":27,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":285,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":26990,"rank":8,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 340, all attributes by 14 and all resistances by 25 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":340,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":48469,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Increases the friendly target's armor by 750, all attributes by 37 and all resistances by 54 for 1800 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":1800000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-nature-s-swiftness","name":"Nature's Swiftness","iconBasename":"spell_nature_ravenform","iconPath":"/assets/ui/spells/spell_nature_ravenform.png","sourceUnlockLevel":1,"talentNodeId":"talent-831","ranks":[{"spellId":17116,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"When activated, your next Nature spell with a base casting time less than 10 sec. becomes an instant cast spell.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":10,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-primal-fury","name":"Primal Fury","iconBasename":"ability_racial_cannibalize","iconPath":"/assets/ui/spells/ability_racial_cannibalize.png","sourceUnlockLevel":1,"talentNodeId":"talent-801","ranks":[{"spellId":37116,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Gives you a the listed amount% chance to gain an additional the listed amount Rage anytime you get a critical strike while in Bear and Dire Bear Form and your critical strikes from Cat Form abilities that add combo points have a the listed amount% chance to add an additional combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16958,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16952,"coefficient":0}]},{"spellId":37117,"rank":2,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Gives you a the listed amount% chance to gain an additional the listed amount Rage anytime you get a critical strike while in Bear and Dire Bear Form and your critical strikes from Cat Form abilities that add combo points have a the listed amount% chance to add an additional combo point.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16961,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":16954,"coefficient":0}]}]},{"id":"wow335-druid-swiftmend","name":"Swiftmend","iconBasename":"inv_relics_idolofrejuvenation","iconPath":"/assets/ui/spells/inv_relics_idolofrejuvenation.png","sourceUnlockLevel":1,"talentNodeId":"talent-844","ranks":[{"spellId":18562,"rank":0,"level":1,"sourceLevel":1,"maxScalingLevel":0,"description":"Consumes a Rejuvenation or Regrowth effect on a friendly target to instantly heal them an amount equal to 12 sec. of Rejuvenation or 18 sec. of Regrowth.","castTimeMs":0,"cooldownMs":15000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-tree-of-life","name":"Tree of Life","iconBasename":"ability_druid_treeoflife","iconPath":"/assets/ui/spells/ability_druid_treeoflife.png","sourceUnlockLevel":1,"talentNodeId":"talent-1791","ranks":[{"spellId":65139,"rank":1,"level":0,"sourceLevel":0,"maxScalingLevel":0,"description":"Reduces the mana cost of your healing over time spells by 20% and grants the ability to shapeshift into the Tree of Life. While in this form you increase healing received by 6% for all party and raid members within the listed amount yards, and you can only cast Restoration spells in addition to Innervate, Barkskin, Nature's Grasp and Thorns spells. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":33891,"coefficient":0},{"index":1,"effectType":36,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":5420,"coefficient":0}]},{"spellId":33891,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Shapeshift into the Tree of Life. While in this form you increase healing received by 6% for all party and raid members within the listed amount yards, and you can only cast Restoration spells in addition to Innervate, Barkskin, Nature's Grasp and Thorns spells. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-wrath","name":"Wrath","iconBasename":"spell_nature_abolishmagic","iconPath":"/assets/ui/spells/spell_nature_abolishmagic.png","sourceUnlockLevel":1,"ranks":[{"spellId":5176,"rank":1,"level":1,"sourceLevel":1,"maxScalingLevel":5,"description":"Causes 19 Nature damage to the target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":17,"dieSides":3,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.12300000339746475}]},{"spellId":5177,"rank":2,"level":6,"sourceLevel":6,"maxScalingLevel":12,"description":"Causes 36 Nature damage to the target.","castTimeMs":1700,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":32,"dieSides":5,"pointsPerLevel":0.6000000238418579,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.23100000619888306}]},{"spellId":5178,"rank":3,"level":14,"sourceLevel":14,"maxScalingLevel":20,"description":"Causes 57 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":49,"dieSides":9,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4429999887943268}]},{"spellId":5179,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":28,"description":"Causes 78 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":68,"dieSides":11,"pointsPerLevel":1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":5180,"rank":5,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"Causes 148 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":130,"dieSides":19,"pointsPerLevel":1.2999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":6780,"rank":6,"level":38,"sourceLevel":38,"maxScalingLevel":44,"description":"Causes 191 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":169,"dieSides":23,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":8905,"rank":7,"level":46,"sourceLevel":46,"maxScalingLevel":52,"description":"Causes 241 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":215,"dieSides":27,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":9912,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":60,"description":"Causes 344 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":306,"dieSides":39,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":26984,"rank":9,"level":61,"sourceLevel":61,"maxScalingLevel":67,"description":"Causes 447 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":397,"dieSides":51,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":26985,"rank":10,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Causes 485 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":431,"dieSides":55,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":48459,"rank":11,"level":74,"sourceLevel":74,"maxScalingLevel":78,"description":"Causes 568 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":504,"dieSides":65,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]},{"spellId":48461,"rank":12,"level":79,"sourceLevel":79,"maxScalingLevel":83,"description":"Causes 623 Nature damage to the target.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":11,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":553,"dieSides":71,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5709999799728394}]}]},{"id":"wow335-druid-moonfire","name":"Moonfire","iconBasename":"spell_nature_starfall","iconPath":"/assets/ui/spells/spell_nature_starfall.png","sourceUnlockLevel":4,"ranks":[{"spellId":8921,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Burns the enemy for 9 Arcane damage and then an additional the listed amount Arcane damage over 9 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":9000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.052000001072883606},{"index":1,"effectType":2,"auraType":0,"basePoints":7,"dieSides":3,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.05999999865889549}]},{"spellId":8924,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Burns the enemy for 17 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.08100000023841858},{"index":1,"effectType":2,"auraType":0,"basePoints":13,"dieSides":5,"pointsPerLevel":0.800000011920929,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.09399999678134918}]},{"spellId":8925,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Burns the enemy for 31 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11100000143051147},{"index":1,"effectType":2,"auraType":0,"basePoints":25,"dieSides":7,"pointsPerLevel":1.100000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.12800000607967377}]},{"spellId":8926,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Burns the enemy for 48 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":40,"dieSides":9,"pointsPerLevel":1.399999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":8927,"rank":5,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Burns the enemy for 73 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":61,"dieSides":13,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":8928,"rank":6,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Burns the enemy for 97 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":81,"dieSides":17,"pointsPerLevel":2.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":8929,"rank":7,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Burns the enemy for 125 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":53,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":105,"dieSides":21,"pointsPerLevel":2.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":9833,"rank":8,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Burns the enemy for 154 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":66,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":130,"dieSides":25,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":9834,"rank":9,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Burns the enemy for 185 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":157,"dieSides":29,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":9835,"rank":10,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Burns the enemy for 221 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":96,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":189,"dieSides":33,"pointsPerLevel":3.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":26987,"rank":11,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Burns the enemy for 258 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":24,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":111,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":220,"dieSides":39,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":26988,"rank":12,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Burns the enemy for 357 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":150,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":305,"dieSides":53,"pointsPerLevel":3.9000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48462,"rank":13,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Burns the enemy for 407 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":171,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":347,"dieSides":61,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]},{"spellId":48463,"rank":14,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Burns the enemy for 476 Arcane damage and then an additional the listed amount Arcane damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.12999999523162842},{"index":1,"effectType":2,"auraType":0,"basePoints":406,"dieSides":71,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448}]}]},{"id":"wow335-druid-rejuvenation","name":"Rejuvenation","iconBasename":"spell_nature_rejuvenation","iconPath":"/assets/ui/spells/spell_nature_rejuvenation.png","sourceUnlockLevel":4,"ranks":[{"spellId":774,"rank":1,"level":4,"sourceLevel":4,"maxScalingLevel":9,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":8,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.15000000596046448},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":1058,"rank":2,"level":10,"sourceLevel":10,"maxScalingLevel":15,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.23499999940395355},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":1430,"rank":3,"level":16,"sourceLevel":16,"maxScalingLevel":21,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":29,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.3199999928474426},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":2090,"rank":4,"level":22,"sourceLevel":22,"maxScalingLevel":27,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":2091,"rank":5,"level":28,"sourceLevel":28,"maxScalingLevel":33,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":61,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":3627,"rank":6,"level":34,"sourceLevel":34,"maxScalingLevel":39,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":76,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":8910,"rank":7,"level":40,"sourceLevel":40,"maxScalingLevel":45,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":97,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":9839,"rank":8,"level":46,"sourceLevel":46,"maxScalingLevel":51,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":122,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":9840,"rank":9,"level":52,"sourceLevel":52,"maxScalingLevel":57,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":152,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":9841,"rank":10,"level":58,"sourceLevel":58,"maxScalingLevel":63,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":189,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":25299,"rank":11,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":222,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":26981,"rank":12,"level":63,"sourceLevel":63,"maxScalingLevel":68,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":21,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":233,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":26982,"rank":13,"level":69,"sourceLevel":69,"maxScalingLevel":73,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":265,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":48440,"rank":14,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals the target for the listed amount over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":298,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]},{"spellId":48441,"rank":15,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals the target for the listed amount over 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":338,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":189,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-thorns","name":"Thorns","iconBasename":"spell_nature_thorns","iconPath":"/assets/ui/spells/spell_nature_thorns.png","sourceUnlockLevel":6,"ranks":[{"spellId":467,"rank":1,"level":6,"sourceLevel":6,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 3 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":782,"rank":2,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 6 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1075,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 9 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8914,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 12 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9756,"rank":5,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 15 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9910,"rank":6,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 18 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":19,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26992,"rank":7,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 25 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53307,"rank":8,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Thorns sprout from the friendly target causing 73 Nature damage to attackers when hit. Lasts 600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":17,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":15,"basePoints":73,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-entangling-roots","name":"Entangling Roots","iconBasename":"spell_nature_stranglevines","iconPath":"/assets/ui/spells/spell_nature_stranglevines.png","sourceUnlockLevel":8,"ranks":[{"spellId":339,"rank":1,"level":8,"sourceLevel":8,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 12 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.054999999701976776}]},{"spellId":1062,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 15 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09300000220537186}]},{"spellId":5195,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 18 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":18000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":5196,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 21 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":9852,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 24 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":24000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":9853,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Roots the target in place and causes the listed amount Nature damage over 27 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":27000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":26989,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":77,"description":"Roots the target in place and causes the listed amount Nature damage over 27 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":27000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":39,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]},{"spellId":53308,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":87,"description":"Roots the target in place and causes the listed amount Nature damage over 27 sec. Damage caused may interrupt the effect.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":27000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":26,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":47,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.10000000149011612}]}]},{"id":"wow335-druid-bear-form","name":"Bear Form","iconBasename":"ability_racial_bearform","iconPath":"/assets/ui/spells/ability_racial_bearform.png","sourceUnlockLevel":10,"ranks":[{"spellId":5487,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":40,"description":"Shapeshift into bear form, increasing melee attack power by 30, armor contribution from cloth and leather items by 180%, and Stamina by 25%. Also protects the caster from Polymorph effects and allows the use of various bear abilities. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-demoralizing-roar","name":"Demoralizing Roar","iconBasename":"ability_druid_demoralizingroar","iconPath":"/assets/ui/spells/ability_druid_demoralizingroar.png","sourceUnlockLevel":10,"ranks":[{"spellId":99,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":20,"description":"The druid roars, decreasing nearby enemies' melee attack power by 31. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-31,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1735,"rank":2,"level":20,"sourceLevel":20,"maxScalingLevel":30,"description":"The druid roars, decreasing nearby enemies' melee attack power by 51. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-51,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9490,"rank":3,"level":32,"sourceLevel":32,"maxScalingLevel":42,"description":"The druid roars, decreasing nearby enemies' melee attack power by 68. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-68,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9747,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":52,"description":"The druid roars, decreasing nearby enemies' melee attack power by 103. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-103,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9898,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":62,"description":"The druid roars, decreasing nearby enemies' melee attack power by 138. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-138,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26998,"rank":6,"level":62,"sourceLevel":62,"maxScalingLevel":70,"description":"The druid roars, decreasing nearby enemies' melee attack power by 220. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-220,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48559,"rank":7,"level":71,"sourceLevel":71,"maxScalingLevel":75,"description":"The druid roars, decreasing nearby enemies' melee attack power by 299. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-299,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48560,"rank":8,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"The druid roars, decreasing nearby enemies' melee attack power by 408. Lasts 30 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":99,"basePoints":-408,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-growl","name":"Growl","iconBasename":"ability_physical_taunt","iconPath":"/assets/ui/spells/ability_physical_taunt.png","sourceUnlockLevel":10,"ranks":[{"spellId":6795,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Taunts the target to attack you, but has no effect if the target is already attacking you.","castTimeMs":0,"cooldownMs":8000,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":114,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":11,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-maul","name":"Maul","iconBasename":"ability_druid_maul","iconPath":"/assets/ui/spells/ability_druid_maul.png","sourceUnlockLevel":10,"ranks":[{"spellId":6807,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 18 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":18,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6808,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 27 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":6809,"rank":3,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 37 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8972,"rank":4,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 64 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9745,"rank":5,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 103 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":103,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9880,"rank":6,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 145 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":145,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9881,"rank":7,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 192 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":192,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":26996,"rank":8,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 290 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":290,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48479,"rank":9,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 472 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":472,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48480,"rank":10,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"A strong attack that increases melee damage by 578 and causes a high amount of threat. Effects which increase Bleed damage also increase Maul damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":578,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-nature-s-grasp","name":"Nature's Grasp","iconBasename":"spell_nature_natureswrath","iconPath":"/assets/ui/spells/spell_nature_natureswrath.png","sourceUnlockLevel":10,"ranks":[{"spellId":16689,"rank":1,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 1). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19975,"coefficient":1}]},{"spellId":16810,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 2). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19974,"coefficient":1}]},{"spellId":16811,"rank":3,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 3). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19973,"coefficient":1}]},{"spellId":16812,"rank":4,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 4). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19972,"coefficient":1}]},{"spellId":16813,"rank":5,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 5). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19971,"coefficient":1}]},{"spellId":17329,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 6). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":19970,"coefficient":1}]},{"spellId":27009,"rank":7,"level":68,"sourceLevel":68,"maxScalingLevel":77,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 7). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":27010,"coefficient":1}]},{"spellId":53312,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":87,"description":"While active, any time an enemy strikes the caster they have a the listed amount% chance to become afflicted by Entangling Roots (Rank 8). the listed amount charge. Lasts 45 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":45000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":1,"effectType":6,"auraType":42,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":53313,"coefficient":1}]}]},{"id":"wow335-druid-teleport-moonglade","name":"Teleport: Moonglade","iconBasename":"spell_arcane_teleportmoonglade","iconPath":"/assets/ui/spells/spell_arcane_teleportmoonglade.png","sourceUnlockLevel":10,"ranks":[{"spellId":18960,"rank":0,"level":10,"sourceLevel":10,"maxScalingLevel":0,"description":"Teleports the caster to the Moonglade.","castTimeMs":10000,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":120,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":5,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":17,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-enrage","name":"Enrage","iconBasename":"ability_druid_enrage","iconPath":"/assets/ui/spells/ability_druid_enrage.png","sourceUnlockLevel":12,"ranks":[{"spellId":5229,"rank":0,"level":12,"sourceLevel":12,"maxScalingLevel":0,"description":"Generates the listed amount rage, and then generates an additional the listed amount rage over 10 sec, but reduces base armor by 27% in Bear Form and 16% in Dire Bear Form.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":24,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":30,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":94,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-regrowth","name":"Regrowth","iconBasename":"spell_nature_resistnature","iconPath":"/assets/ui/spells/spell_nature_resistnature.png","sourceUnlockLevel":12,"ranks":[{"spellId":8936,"rank":1,"level":12,"sourceLevel":12,"maxScalingLevel":17,"description":"Heals a friendly target for 98 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":84,"dieSides":15,"pointsPerLevel":1.7999999523162842,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.37599998712539673},{"index":1,"effectType":6,"auraType":8,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.13199999928474426}]},{"spellId":8938,"rank":2,"level":18,"sourceLevel":18,"maxScalingLevel":23,"description":"Heals a friendly target for 188 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":164,"dieSides":25,"pointsPerLevel":2.5,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.4959999918937683},{"index":1,"effectType":6,"auraType":8,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.17499999701976776}]},{"spellId":8939,"rank":3,"level":24,"sourceLevel":24,"maxScalingLevel":29,"description":"Heals a friendly target for 274 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":240,"dieSides":35,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":8940,"rank":4,"level":30,"sourceLevel":30,"maxScalingLevel":35,"description":"Heals a friendly target for 360 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":318,"dieSides":43,"pointsPerLevel":3.5999999046325684,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":49,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":8941,"rank":5,"level":36,"sourceLevel":36,"maxScalingLevel":41,"description":"Heals a friendly target for 457 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":405,"dieSides":53,"pointsPerLevel":4.099999904632568,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":61,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":9750,"rank":6,"level":42,"sourceLevel":42,"maxScalingLevel":47,"description":"Heals a friendly target for 575 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":511,"dieSides":65,"pointsPerLevel":4.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":78,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":9856,"rank":7,"level":48,"sourceLevel":48,"maxScalingLevel":53,"description":"Heals a friendly target for 724 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":646,"dieSides":79,"pointsPerLevel":5.300000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":9857,"rank":8,"level":54,"sourceLevel":54,"maxScalingLevel":59,"description":"Heals a friendly target for 905 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":809,"dieSides":97,"pointsPerLevel":6,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":9858,"rank":9,"level":60,"sourceLevel":60,"maxScalingLevel":65,"description":"Heals a friendly target for 1119 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":33,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1003,"dieSides":117,"pointsPerLevel":6.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":152,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":26980,"rank":10,"level":65,"sourceLevel":65,"maxScalingLevel":70,"description":"Heals a friendly target for 1355 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1215,"dieSides":141,"pointsPerLevel":7.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":182,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":48442,"rank":11,"level":71,"sourceLevel":71,"maxScalingLevel":76,"description":"Heals a friendly target for 1908 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1710,"dieSides":199,"pointsPerLevel":10.800000190734863,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":256,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]},{"spellId":48443,"rank":12,"level":77,"sourceLevel":77,"maxScalingLevel":81,"description":"Heals a friendly target for 2494 and another the listed amount over 21 sec.","castTimeMs":2000,"cooldownMs":0,"gcdMs":1500,"durationMs":21000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":29,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":2234,"dieSides":261,"pointsPerLevel":7.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.5379999876022339},{"index":1,"effectType":6,"auraType":8,"basePoints":335,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0.18799999356269836}]}]},{"id":"wow335-druid-bash","name":"Bash","iconBasename":"ability_druid_bash","iconPath":"/assets/ui/spells/ability_druid_bash.png","sourceUnlockLevel":14,"ranks":[{"spellId":5211,"rank":1,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Stuns the target for 2 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":2000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6798,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Stuns the target for 3 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":3000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8983,"rank":3,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Stuns the target for 4 sec and interrupts non-player spellcasting for 3 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":1500,"durationMs":4000,"channelDurationMs":0,"powerType":1,"powerCost":100,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-cure-poison","name":"Cure Poison","iconBasename":"spell_nature_nullifypoison","iconPath":"/assets/ui/spells/spell_nature_nullifypoison.png","sourceUnlockLevel":14,"ranks":[{"spellId":8946,"rank":0,"level":14,"sourceLevel":14,"maxScalingLevel":0,"description":"Cures 1 poison the listed amount on the target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-aquatic-form","name":"Aquatic Form","iconBasename":"ability_druid_aquaticform","iconPath":"/assets/ui/spells/ability_druid_aquaticform.png","sourceUnlockLevel":16,"ranks":[{"spellId":1066,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Shapeshift into aquatic form, increasing swim speed by 50% and allowing the druid to breathe underwater. Also protects the caster from Polymorph effects. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-swipe-bear","name":"Swipe (Bear)","iconBasename":"inv_misc_monsterclaw_03","iconPath":"/assets/ui/spells/inv_misc_monsterclaw_03.png","sourceUnlockLevel":16,"ranks":[{"spellId":779,"rank":1,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 9 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":780,"rank":2,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 13 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":13,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":769,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 19 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":19,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9754,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 37 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9908,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 54 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":26997,"rank":6,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 76 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":76,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48561,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 95 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":95,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48562,"rank":8,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 108 damage. Damage increased by attack power.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":108,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-travel-form","name":"Travel Form","iconBasename":"ability_druid_travelform","iconPath":"/assets/ui/spells/ability_druid_travelform.png","sourceUnlockLevel":16,"ranks":[{"spellId":783,"rank":0,"level":16,"sourceLevel":16,"maxScalingLevel":0,"description":"Shapeshift into travel form, increasing movement speed by 40%. Also protects the caster from Polymorph effects. Only useable outdoors. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-faerie-fire","name":"Faerie Fire","iconBasename":"spell_nature_faeriefire","iconPath":"/assets/ui/spells/spell_nature_faeriefire.png","sourceUnlockLevel":18,"ranks":[{"spellId":770,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Decrease the armor of the target by 5% for 300 sec. While affected, the target cannot stealth or turn invisible.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":300000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":186,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-faerie-fire-feral","name":"Faerie Fire (Feral)","iconBasename":"spell_nature_faeriefire","iconPath":"/assets/ui/spells/spell_nature_faeriefire.png","sourceUnlockLevel":18,"ranks":[{"spellId":16857,"rank":0,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Decrease the armor of the target by 5% for 300 sec. While affected, the target cannot stealth or turn invisible. Deals the listed amountthe listed amount damage and additional threat when used in Bear Form or Dire Bear Form.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1000,"durationMs":300000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":101,"basePoints":-5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":186,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-hibernate","name":"Hibernate","iconBasename":"spell_nature_sleep","iconPath":"/assets/ui/spells/spell_nature_sleep.png","sourceUnlockLevel":18,"ranks":[{"spellId":2637,"rank":1,"level":18,"sourceLevel":18,"maxScalingLevel":0,"description":"Forces the enemy target to sleep for up to 20 sec. Any damage will awaken the target. Only one target can be forced to hibernate at a time. Only works on Beasts and Dragonkin.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":20000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18657,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Forces the enemy target to sleep for up to 30 sec. Any damage will awaken the target. Only one target can be forced to hibernate at a time. Only works on Beasts and Dragonkin.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":18658,"rank":3,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Forces the enemy target to sleep for up to 40 sec. Any damage will awaken the target. Only one target can be forced to hibernate at a time. Only works on Beasts and Dragonkin.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":40000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-cat-form","name":"Cat Form","iconBasename":"ability_druid_catform","iconPath":"/assets/ui/spells/ability_druid_catform.png","sourceUnlockLevel":20,"ranks":[{"spellId":768,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Shapeshift into cat form, increasing melee attack power by 40 plus Agility. Also protects the caster from Polymorph effects and allows the use of various cat abilities. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":5000,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-claw","name":"Claw","iconBasename":"ability_druid_rake","iconPath":"/assets/ui/spells/ability_druid_rake.png","sourceUnlockLevel":20,"ranks":[{"spellId":1082,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Claw the enemy, causing 27 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":27,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":3029,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Claw the enemy, causing 39 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":39,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":5201,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Claw the enemy, causing 57 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":57,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9849,"rank":4,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Claw the enemy, causing 88 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":88,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9850,"rank":5,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Claw the enemy, causing 115 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27000,"rank":6,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Claw the enemy, causing 190 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":190,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48569,"rank":7,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Claw the enemy, causing 300 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":300,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48570,"rank":8,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Claw the enemy, causing 370 additional damage. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":370,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-insect-swarm","name":"Insect Swarm","iconBasename":"spell_nature_insectswarm","iconPath":"/assets/ui/spells/spell_nature_insectswarm.png","sourceUnlockLevel":20,"talentNodeId":"talent-788","ranks":[{"spellId":5570,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":29,"description":"The enemy target is swarmed by insects, decreasing their chance to hit by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24974,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":39,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":39,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24975,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":49,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":62,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24976,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24977,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":9,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":124,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27013,"rank":6,"level":70,"sourceLevel":70,"maxScalingLevel":79,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":172,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48468,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":89,"description":"The enemy target is swarmed by insects, decreasing their chance to hit with melee and ranged attacks by 3% and causing the listed amount Nature damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":215,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0.20000000298023224},{"index":1,"effectType":6,"auraType":54,"basePoints":-3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-prowl","name":"Prowl","iconBasename":"ability_ambush","iconPath":"/assets/ui/spells/ability_ambush.png","sourceUnlockLevel":20,"ranks":[{"spellId":5215,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":39,"description":"Allows the Druid to prowl around, but reduces your movement speed by 40%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":16,"basePoints":100,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6783,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":59,"description":"Allows the Druid to prowl around, but reduces your movement speed by 35%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":16,"basePoints":200,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-35,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9913,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Allows the Druid to prowl around, but reduces your movement speed by 30%. Lasts until cancelled.","castTimeMs":0,"cooldownMs":10000,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":16,"basePoints":300,"dieSides":1,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":33,"basePoints":-30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-rebirth","name":"Rebirth","iconBasename":"spell_nature_reincarnation","iconPath":"/assets/ui/spells/spell_nature_reincarnation.png","sourceUnlockLevel":20,"ranks":[{"spellId":20484,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 400 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":700,"triggerSpellId":0,"coefficient":0}]},{"spellId":20739,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 750 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1200,"triggerSpellId":0,"coefficient":0}]},{"spellId":20742,"rank":3,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 1100 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1700,"triggerSpellId":0,"coefficient":0}]},{"spellId":20747,"rank":4,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 1600 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":1600,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2200,"triggerSpellId":0,"coefficient":0}]},{"spellId":20748,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 2200 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":2200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2800,"triggerSpellId":0,"coefficient":0}]},{"spellId":26994,"rank":6,"level":69,"sourceLevel":69,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 3200 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":3200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":3200,"triggerSpellId":0,"coefficient":0}]},{"spellId":48477,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Returns the spirit to the body, restoring a dead target to life with 6400 health and the listed amount mana.","castTimeMs":2000,"cooldownMs":1200000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":68,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":113,"auraType":0,"basePoints":6400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4700,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-rip","name":"Rip","iconBasename":"ability_ghoulfrenzy","iconPath":"/assets/ui/spells/ability_ghoulfrenzy.png","sourceUnlockLevel":20,"ranks":[{"spellId":1079,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(3+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9492,"rank":2,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(4+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":4,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9493,"rank":3,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(6+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":6,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9752,"rank":4,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(9+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":9,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9894,"rank":5,"level":52,"sourceLevel":52,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(12+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9896,"rank":6,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(17+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27008,"rank":7,"level":67,"sourceLevel":67,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(24+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49799,"rank":8,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(30+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49800,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Finishing move that causes damage over time. Damage increases per combo point and by your attack power: 1 point: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec. 2 points: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec. 3 points: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec. 4 points: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec. 5 points: the listed amount(36+the listed amountthe listed amount)*6} damage over 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":30,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":36,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-starfire","name":"Starfire","iconBasename":"spell_arcane_starfire","iconPath":"/assets/ui/spells/spell_arcane_starfire.png","sourceUnlockLevel":20,"ranks":[{"spellId":2912,"rank":1,"level":20,"sourceLevel":20,"maxScalingLevel":25,"description":"Causes 149 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":121,"dieSides":29,"pointsPerLevel":1.2000000476837158,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8949,"rank":2,"level":26,"sourceLevel":26,"maxScalingLevel":32,"description":"Causes 231 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":189,"dieSides":43,"pointsPerLevel":1.600000023841858,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8950,"rank":3,"level":34,"sourceLevel":34,"maxScalingLevel":40,"description":"Causes 328 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":272,"dieSides":57,"pointsPerLevel":1.899999976158142,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":8951,"rank":4,"level":42,"sourceLevel":42,"maxScalingLevel":48,"description":"Causes 442 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":370,"dieSides":73,"pointsPerLevel":2.299999952316284,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9875,"rank":5,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Causes 575 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":485,"dieSides":91,"pointsPerLevel":2.700000047683716,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":9876,"rank":6,"level":58,"sourceLevel":58,"maxScalingLevel":64,"description":"Causes 725 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":615,"dieSides":111,"pointsPerLevel":3,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":25298,"rank":7,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Causes 817 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":693,"dieSides":125,"pointsPerLevel":3.0999999046325684,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":26986,"rank":8,"level":67,"sourceLevel":67,"maxScalingLevel":71,"description":"Causes 964 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":818,"dieSides":147,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48464,"rank":9,"level":72,"sourceLevel":72,"maxScalingLevel":76,"description":"Causes 1006 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":854,"dieSides":153,"pointsPerLevel":4,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]},{"spellId":48465,"rank":10,"level":78,"sourceLevel":78,"maxScalingLevel":82,"description":"Causes 1212 Arcane damage to the target.","castTimeMs":3500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":16,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":1028,"dieSides":185,"pointsPerLevel":5,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-survival-instincts","name":"Survival Instincts","iconBasename":"ability_druid_tigersroar","iconPath":"/assets/ui/spells/ability_druid_tigersroar.png","sourceUnlockLevel":20,"talentNodeId":"talent-1162","ranks":[{"spellId":61336,"rank":0,"level":20,"sourceLevel":20,"maxScalingLevel":0,"description":"When activated, this ability temporarily grants you 30% of your maximum health for 20 sec while in Bear Form, Cat Form, or Dire Bear Form. After the effect expires, the health is lost.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":20000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":4,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-shred","name":"Shred","iconBasename":"spell_shadow_vampiricaura","iconPath":"/assets/ui/spells/spell_shadow_vampiricaura.png","sourceUnlockLevel":22,"ranks":[{"spellId":5221,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 54 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":24,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6800,"rank":2,"level":30,"sourceLevel":30,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 72 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8992,"rank":3,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 99 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":44,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9829,"rank":4,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 144 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9830,"rank":5,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 180 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":80,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27001,"rank":6,"level":61,"sourceLevel":61,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus 236 to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27002,"rank":7,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus the listed amount to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":180,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48571,"rank":8,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus the listed amount to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":251,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48572,"rank":9,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Shred the target, causing 225% damage plus the listed amount to the target. Must be behind the target. Awards 1 combo the listed amount Effects which increase Bleed damage also increase Shred damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":296,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-soothe-animal","name":"Soothe Animal","iconBasename":"ability_hunter_beastsoothe","iconPath":"/assets/ui/spells/ability_hunter_beastsoothe.png","sourceUnlockLevel":22,"ranks":[{"spellId":2908,"rank":1,"level":22,"sourceLevel":22,"maxScalingLevel":0,"description":"Soothes the target beast, reducing the range at which it will attack you by 10 yards. Only affects Beast and Dragonkin targets level 40 or lower. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":8955,"rank":2,"level":38,"sourceLevel":38,"maxScalingLevel":0,"description":"Soothes the target beast, reducing the range at which it will attack you by 10 yards. Only affects Beast and Dragonkin targets level 55 or lower. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9901,"rank":3,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Soothes the target beast, reducing the range at which it will attack you by 10 yards. Only affects Beast and Dragonkin targets level 70 or lower. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":7,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":26995,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Soothes the target beast, reducing the range at which it will attack you by 10 yards. Only affects Beast and Dragonkin targets level 85 or lower. Lasts 15 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":6,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":91,"basePoints":-10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-rake","name":"Rake","iconBasename":"ability_druid_disembowel","iconPath":"/assets/ui/spells/ability_druid_disembowel.png","sourceUnlockLevel":24,"ranks":[{"spellId":1822,"rank":1,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":17,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1823,"rank":2,"level":34,"sourceLevel":34,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":26,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":1824,"rank":3,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":46,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":69,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9904,"rank":4,"level":54,"sourceLevel":54,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":99,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27003,"rank":5,"level":64,"sourceLevel":64,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":90,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":138,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48573,"rank":6,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Rake the target for the listed amountthe listed amount bleed damage and an additional the listed amountthe listed amount damage over 9 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":9000,"channelDurationMs":0,"powerType":3,"powerCost":40,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":139,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":3,"basePoints":297,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-remove-curse","name":"Remove Curse","iconBasename":"spell_holy_removecurse","iconPath":"/assets/ui/spells/spell_holy_removecurse.png","sourceUnlockLevel":24,"ranks":[{"spellId":2782,"rank":0,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Dispels 1 Curse from a friendly target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":2,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-tiger-s-fury","name":"Tiger's Fury","iconBasename":"ability_mount_jungletiger","iconPath":"/assets/ui/spells/ability_mount_jungletiger.png","sourceUnlockLevel":24,"ranks":[{"spellId":5217,"rank":1,"level":24,"sourceLevel":24,"maxScalingLevel":0,"description":"Increases damage done by 10 for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":13,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":6793,"rank":2,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Increases damage done by 20 for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":13,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":9845,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Increases damage done by 30 for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":13,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]},{"spellId":9846,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Increases damage done by 40 for 6 sec.","castTimeMs":0,"cooldownMs":30000,"gcdMs":0,"durationMs":6000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":13,"basePoints":40,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-abolish-poison","name":"Abolish Poison","iconBasename":"spell_nature_nullifypoison_02","iconPath":"/assets/ui/spells/spell_nature_nullifypoison_02.png","sourceUnlockLevel":26,"ranks":[{"spellId":2893,"rank":0,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Attempts to cure 1 poison effect on the target, and 1 more poison effect every 3 seconds for 12 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":3137,"coefficient":0},{"index":1,"effectType":38,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":4,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-dash","name":"Dash","iconBasename":"ability_druid_dash","iconPath":"/assets/ui/spells/ability_druid_dash.png","sourceUnlockLevel":26,"ranks":[{"spellId":1850,"rank":1,"level":26,"sourceLevel":26,"maxScalingLevel":0,"description":"Increases movement speed by 50% while in Cat Form for 15 sec. Does not break prowling.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9821,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Increases movement speed by 60% while in Cat Form for 15 sec. Does not break prowling.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":60,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33357,"rank":3,"level":65,"sourceLevel":65,"maxScalingLevel":0,"description":"Increases movement speed by 70% while in Cat Form for 15 sec. Does not break prowling.","castTimeMs":0,"cooldownMs":180000,"gcdMs":0,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":31,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-challenging-roar","name":"Challenging Roar","iconBasename":"ability_druid_challangingroar","iconPath":"/assets/ui/spells/ability_druid_challangingroar.png","sourceUnlockLevel":28,"ranks":[{"spellId":5209,"rank":0,"level":28,"sourceLevel":28,"maxScalingLevel":0,"description":"Forces all nearby enemies within the listed amount yards to focus attacks on you for 6 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":11,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":22,"implicitTargetB":15,"radius":10,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-cower","name":"Cower","iconBasename":"ability_druid_cower","iconPath":"/assets/ui/spells/ability_druid_cower.png","sourceUnlockLevel":28,"ranks":[{"spellId":8998,"rank":1,"level":28,"sourceLevel":28,"maxScalingLevel":38,"description":"Cower, causing no damage but lowering your threat a small amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-240,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9000,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":50,"description":"Cower, causing no damage but lowering your threat a medium amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-390,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9892,"rank":3,"level":52,"sourceLevel":52,"maxScalingLevel":62,"description":"Cower, causing no damage but lowering your threat a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-600,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":31709,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":70,"description":"Cower, causing no damage but lowering your threat a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-800,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27004,"rank":5,"level":69,"sourceLevel":69,"maxScalingLevel":75,"description":"Cower, causing no damage but lowering your threat a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-1170,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48575,"rank":6,"level":76,"sourceLevel":76,"maxScalingLevel":82,"description":"Cower, causing no damage but lowering your threat a large amount, making the enemy less likely to attack you.","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":20,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":63,"auraType":0,"basePoints":-3474,"dieSides":1,"pointsPerLevel":-1,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-tranquility","name":"Tranquility","iconBasename":"spell_nature_tranquility","iconPath":"/assets/ui/spells/spell_nature_tranquility.png","sourceUnlockLevel":30,"ranks":[{"spellId":740,"rank":1,"level":30,"sourceLevel":30,"maxScalingLevel":36,"description":"Heals all nearby group members for 351 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":351,"dieSides":1,"pointsPerLevel":2.200000047683716,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44203,"coefficient":0}]},{"spellId":8918,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Heals all nearby group members for 515 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":515,"dieSides":1,"pointsPerLevel":2.5999999046325684,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44205,"coefficient":0}]},{"spellId":9862,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Heals all nearby group members for 765 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":765,"dieSides":1,"pointsPerLevel":3.4000000953674316,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44206,"coefficient":0}]},{"spellId":9863,"rank":4,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Heals all nearby group members for 1097 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":78,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":1097,"dieSides":1,"pointsPerLevel":3.700000047683716,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44207,"coefficient":0}]},{"spellId":26983,"rank":5,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals all nearby group members for 1518 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":70,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":1518,"dieSides":1,"pointsPerLevel":4.5,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":44208,"coefficient":0}]},{"spellId":48446,"rank":6,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals all nearby group members for 2598 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":70,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":2598,"dieSides":1,"pointsPerLevel":7.699999809265137,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":48444,"coefficient":0}]},{"spellId":48447,"rank":7,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals all nearby group members for 3035 every 2 seconds for 8 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":600000,"gcdMs":1500,"durationMs":8000,"channelDurationMs":8000,"powerType":0,"powerCost":0,"powerCostPercentage":70,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":35,"auraType":4,"basePoints":3035,"dieSides":1,"pointsPerLevel":9,"mechanic":0,"implicitTargetA":29,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.28600001335144043},{"index":1,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":2000,"miscValue":0,"triggerSpellId":48445,"coefficient":0}]}]},{"id":"wow335-druid-ferocious-bite","name":"Ferocious Bite","iconBasename":"ability_druid_ferociousbite","iconPath":"/assets/ui/spells/ability_druid_ferociousbite.png","sourceUnlockLevel":32,"ranks":[{"spellId":22568,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":14,"dieSides":17,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22827,"rank":2,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":20,"dieSides":25,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22828,"rank":3,"level":48,"sourceLevel":48,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":30,"dieSides":41,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":22829,"rank":4,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":45,"dieSides":51,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":31018,"rank":5,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":52,"dieSides":61,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":24248,"rank":6,"level":63,"sourceLevel":63,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":57,"dieSides":67,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48576,"rank":7,"level":72,"sourceLevel":72,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":98,"dieSides":113,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48577,"rank":8,"level":78,"sourceLevel":78,"maxScalingLevel":0,"description":"Finishing move that causes damage per combo point and converts each extra point of energy (up to a maximum of 30 extra energy) into the listed amountthe listed amountthe listed amount additional damage. Damage is increased by your attack power. 1 point : the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 2 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 3 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 4 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage 5 points: the listed amountthe listed amountthe listed amountthe listed amountthe listed amountthe listed amount damage","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":120,"dieSides":141,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":0,"auraType":0,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-ravage","name":"Ravage","iconBasename":"ability_druid_ravage","iconPath":"/assets/ui/spells/ability_druid_ravage.png","sourceUnlockLevel":32,"ranks":[{"spellId":6785,"rank":1,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":42,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":6787,"rank":2,"level":42,"sourceLevel":42,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":62,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9866,"rank":3,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":78,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9867,"rank":4,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27005,"rank":5,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":147,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48578,"rank":6,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":365,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48579,"rank":7,"level":79,"sourceLevel":79,"maxScalingLevel":0,"description":"Ravage the target, causing 385% damage plus the listed amount to the target. Must be prowling and behind the target. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":60,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":460,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":31,"auraType":0,"basePoints":385,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-track-humanoids","name":"Track Humanoids","iconBasename":"ability_tracking","iconPath":"/assets/ui/spells/ability_tracking.png","sourceUnlockLevel":32,"ranks":[{"spellId":5225,"rank":0,"level":32,"sourceLevel":32,"maxScalingLevel":0,"description":"Shows the location of all nearby humanoids on the minimap. Only one type of thing can be tracked at a time.","castTimeMs":0,"cooldownMs":1500,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":44,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":7,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-frenzied-regeneration","name":"Frenzied Regeneration","iconBasename":"ability_bullrush","iconPath":"/assets/ui/spells/ability_bullrush.png","sourceUnlockLevel":36,"ranks":[{"spellId":22842,"rank":1,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Converts up to 10 rage per second into health for 10 sec. Each point of rage is converted into the listed amount% of max health.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":1,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":226,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":3,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":118,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-pounce","name":"Pounce","iconBasename":"ability_druid_supriseattack","iconPath":"/assets/ui/spells/ability_druid_supriseattack.png","sourceUnlockLevel":36,"ranks":[{"spellId":9005,"rank":1,"level":36,"sourceLevel":36,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 18 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":9007,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9823,"rank":2,"level":46,"sourceLevel":46,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 18 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":9824,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":9827,"rank":3,"level":56,"sourceLevel":56,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 18 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":9826,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":27006,"rank":4,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 18 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":27007,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49803,"rank":5,"level":77,"sourceLevel":77,"maxScalingLevel":0,"description":"Pounce, stunning the target for 3 sec and causing the listed amount damage over 18 sec. Must be prowling. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":3000,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":49804,"coefficient":0},{"index":2,"effectType":80,"auraType":0,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-dire-bear-form","name":"Dire Bear Form","iconBasename":"ability_racial_bearform","iconPath":"/assets/ui/spells/ability_racial_bearform.png","sourceUnlockLevel":40,"ranks":[{"spellId":9634,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":100,"description":"Shapeshift into dire bear form, increasing melee attack power by 120, armor contribution from cloth and leather items by 370%, and Stamina by 25%. Also protects the caster from Polymorph effects and allows the use of various bear abilities. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":35,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":8,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-hurricane","name":"Hurricane","iconBasename":"spell_nature_cyclone","iconPath":"/assets/ui/spells/spell_nature_cyclone.png","sourceUnlockLevel":40,"ranks":[{"spellId":16914,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Creates a violent storm in the target area causing 100 Nature damage to enemies every 1 sec, and increasing the time between attacks of enemies by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":0,"powerCost":0,"powerCostPercentage":91,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":33,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42231,"coefficient":0}]},{"spellId":42231,"rank":1,"level":40,"sourceLevel":40,"maxScalingLevel":46,"description":"Creates a violent storm in the target area causing 100 Nature damage to enemies every 1 sec, and increasing the time between attacks of enemies by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":100,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]},{"spellId":17401,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Creates a violent storm in the target area causing 142 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":0,"powerCost":0,"powerCostPercentage":91,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":33,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42232,"coefficient":0}]},{"spellId":42232,"rank":2,"level":50,"sourceLevel":50,"maxScalingLevel":56,"description":"Creates a violent storm in the target area causing 142 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":142,"dieSides":1,"pointsPerLevel":0.20000000298023224,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]},{"spellId":17402,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Creates a violent storm in the target area causing 190 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":0,"powerCost":0,"powerCostPercentage":91,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":33,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42233,"coefficient":0}]},{"spellId":42233,"rank":3,"level":60,"sourceLevel":60,"maxScalingLevel":66,"description":"Creates a violent storm in the target area causing 190 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":190,"dieSides":1,"pointsPerLevel":0.30000001192092896,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]},{"spellId":27012,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Creates a violent storm in the target area causing 303 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":10000,"channelDurationMs":10000,"powerType":0,"powerCost":0,"powerCostPercentage":81,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":27,"auraType":33,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":27,"auraType":138,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":8,"implicitTargetA":28,"implicitTargetB":0,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":23,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":42230,"coefficient":0}]},{"spellId":42230,"rank":4,"level":70,"sourceLevel":70,"maxScalingLevel":76,"description":"Creates a violent storm in the target area causing 303 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":303,"dieSides":1,"pointsPerLevel":0.4000000059604645,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]},{"spellId":48466,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":86,"description":"Creates a violent storm in the target area causing 451 Nature damage to enemies every 1 sec, and increasing the time between attacks by 20%. Lasts 10 sec. Druid must channel to maintain the spell.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":135,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":2,"auraType":0,"basePoints":451,"dieSides":1,"pointsPerLevel":0.5,"mechanic":0,"implicitTargetA":76,"implicitTargetB":16,"radius":8,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.1289999932050705}]}]},{"id":"wow335-druid-innervate","name":"Innervate","iconBasename":"spell_nature_lightning","iconPath":"/assets/ui/spells/spell_nature_lightning.png","sourceUnlockLevel":40,"ranks":[{"spellId":29166,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Causes the target to regenerate mana equal to 225% of the casting Druid's base mana pool over 10 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":24,"basePoints":225,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":1}]}]},{"id":"wow335-druid-moonkin-form","name":"Moonkin Form","iconBasename":"spell_nature_forceofnature","iconPath":"/assets/ui/spells/spell_nature_forceofnature.png","sourceUnlockLevel":40,"talentNodeId":"talent-793","ranks":[{"spellId":24858,"rank":0,"level":40,"sourceLevel":40,"maxScalingLevel":0,"description":"Shapeshift into Moonkin Form. While in this form the armor contribution from items is increased by 370% and all party and raid members within the listed amount yards have their spell critical chance increased by 5%. Single target spell critical strikes in this form have a chance to instantly regenerate 2% of your total mana. The Moonkin can only cast Balance and Remove Curse spells while shapeshifted. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":31,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":64,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":24907,"coefficient":1}]}]},{"id":"wow335-druid-barkskin","name":"Barkskin","iconBasename":"spell_nature_stoneclawtotem","iconPath":"/assets/ui/spells/spell_nature_stoneclawtotem.png","sourceUnlockLevel":44,"ranks":[{"spellId":22812,"rank":0,"level":44,"sourceLevel":44,"maxScalingLevel":0,"description":"The druid's skin becomes as tough as bark. All damage taken is reduced by 20%. While protected, damaging attacks will not cause spellcasting delays. This spell is usable while stunned, frozen, incapacitated, feared or asleep. Useable in all forms. Lasts 12 sec.","castTimeMs":0,"cooldownMs":60000,"gcdMs":0,"durationMs":12000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":149,"basePoints":100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":87,"basePoints":-20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":42,"basePoints":1,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":50411,"coefficient":0}]}]},{"id":"wow335-druid-force-of-nature","name":"Force of Nature","iconBasename":"ability_druid_forceofnature","iconPath":"/assets/ui/spells/ability_druid_forceofnature.png","sourceUnlockLevel":50,"talentNodeId":"talent-1787","ranks":[{"spellId":33831,"rank":0,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Summons 3 treants to attack enemy targets for 30 sec.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1500,"durationMs":30000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":12,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":28,"auraType":0,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":8,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":1964,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":226,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":16,"implicitTargetB":0,"radius":2,"periodMs":200,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-gift-of-the-wild","name":"Gift of the Wild","iconBasename":"spell_nature_giftofthewild","iconPath":"/assets/ui/spells/spell_nature_giftofthewild.png","sourceUnlockLevel":50,"ranks":[{"spellId":21849,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Gives the Gift of the Wild to all party and raid members, increasing armor by 240, all attributes by 10 and all resistances by 15 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":240,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":10,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":15,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":21850,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Gives the Gift of the Wild to all party and raid members, increasing armor by 285, all attributes by 12 and all resistances by 20 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":72,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":285,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":12,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":20,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":26991,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Gives the Gift of the Wild to all party and raid members, increasing armor by 340, all attributes by 14 and all resistances by 25 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":340,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":14,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":25,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]},{"spellId":48470,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Gives the Gift of the Wild to all party and raid members, increasing armor by 750, all attributes by 37 and all resistances by 54 for 3600 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":3600000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":64,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":22,"basePoints":750,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":1,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":29,"basePoints":37,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":-1,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":143,"basePoints":54,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":56,"implicitTargetB":0,"radius":100,"periodMs":0,"miscValue":126,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-mangle-bear","name":"Mangle (Bear)","iconBasename":"ability_druid_mangle2","iconPath":"/assets/ui/spells/ability_druid_mangle2.png","sourceUnlockLevel":50,"ranks":[{"spellId":33878,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":75,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33986,"rank":2,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":105,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33987,"rank":3,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":135,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48563,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":219,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48564,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Mangle the target for 115% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":12000,"channelDurationMs":0,"powerType":1,"powerCost":200,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":260,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":115,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-mangle-cat","name":"Mangle (Cat)","iconBasename":"ability_druid_mangle2","iconPath":"/assets/ui/spells/ability_druid_mangle2.png","sourceUnlockLevel":50,"ranks":[{"spellId":33876,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":99,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33982,"rank":2,"level":58,"sourceLevel":58,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":128,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":33983,"rank":3,"level":68,"sourceLevel":68,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":165,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48565,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":239,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48566,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Mangle the target for 200% normal damage plus the listed amount and causes the target to take 30% additional damage from bleed effects for 12 sec. Awards 1 combo the listed amount","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":12000,"channelDurationMs":0,"powerType":3,"powerCost":45,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":283,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":255,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":15,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":31,"auraType":0,"basePoints":200,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-typhoon","name":"Typhoon","iconBasename":"ability_druid_typhoon","iconPath":"/assets/ui/spells/ability_druid_typhoon.png","sourceUnlockLevel":50,"talentNodeId":"talent-1923","ranks":[{"spellId":50516,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"You summon a violent Typhoon that does 400 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61391,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61391,"rank":1,"level":50,"sourceLevel":50,"maxScalingLevel":59,"description":"You summon a violent Typhoon that does 400 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":400,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53223,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"You summon a violent Typhoon that does 550 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":36,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":550,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61390,"coefficient":0}]},{"spellId":61390,"rank":2,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"You summon a violent Typhoon that does 550 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":550,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53225,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"You summon a violent Typhoon that does 735 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":735,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61388,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61388,"rank":3,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"You summon a violent Typhoon that does 735 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":735,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53226,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"You summon a violent Typhoon that does 1010 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1010,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":61387,"coefficient":0}]},{"spellId":61387,"rank":4,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"You summon a violent Typhoon that does 1010 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":1010,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53227,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You summon a violent Typhoon that does 1190 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":0,"gcdMs":0,"durationMs":3000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":0,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":98,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":150,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":1190,"dieSides":1,"pointsPerLevel":3.200000047683716,"mechanic":0,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.19300000369548798},{"index":2,"effectType":6,"auraType":33,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":11,"implicitTargetA":104,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":61384,"rank":5,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"You summon a violent Typhoon that does 1190 Nature damage when in contact with hostile targets, knocking them back and dazing them for 3 sec.","castTimeMs":0,"cooldownMs":20000,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":32,"rangeIndex":4,"rangeMin":0,"rangeMax":30,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":89,"implicitTargetB":0,"radius":30,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":64,"auraType":0,"basePoints":1190,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":53227,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-berserk","name":"Berserk","iconBasename":"ability_druid_berserk","iconPath":"/assets/ui/spells/ability_druid_berserk.png","sourceUnlockLevel":60,"talentNodeId":"talent-1927","ranks":[{"spellId":50334,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"When activated, this ability causes your Mangle (Bear) ability to hit up to 3 targets and have no cooldown, and reduces the energy cost of all your Cat Form abilities by 50%. Lasts 15 sec. You cannot use Tiger's Fury while Berserk is active. Clears the effect of Fear and makes you immune to Fear for the duration.","castTimeMs":0,"cooldownMs":180000,"gcdMs":1000,"durationMs":15000,"channelDurationMs":0,"powerType":3,"powerCost":0,"powerCostPercentage":0,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":108,"basePoints":-50,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":14,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":107,"basePoints":-6000,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":11,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":77,"basePoints":3,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":5,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-flight-form","name":"Flight Form","iconBasename":"ability_druid_flightform","iconPath":"/assets/ui/spells/ability_druid_flightform.png","sourceUnlockLevel":60,"ranks":[{"spellId":33943,"rank":0,"level":60,"sourceLevel":60,"maxScalingLevel":0,"description":"Shapeshift into flight form, increasing movement speed by 150% and allowing you to fly. Cannot use in combat. Can only use this form in Outland or Northrend. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":29,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":201,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-starfall","name":"Starfall","iconBasename":"ability_druid_starfall","iconPath":"/assets/ui/spells/ability_druid_starfall.png","sourceUnlockLevel":60,"talentNodeId":"talent-1926","ranks":[{"spellId":48505,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"You summon a flurry of stars from the sky on all targets within the listed amount yards of the caster, each dealing 129 Arcane damage. Also causes 20 Arcane damage to all other enemies within the listed amount yards of the enemy target. Maximum 20 stars. Lasts 10 sec. Shapeshifting into an animal form or mounting cancels the effect. Any effect which causes you to lose control of your character will suppress the starfall effect.","castTimeMs":0,"cooldownMs":90000,"gcdMs":1500,"durationMs":10000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":39,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":23,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":50286,"coefficient":0.12700000405311584},{"index":1,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-wild-growth","name":"Wild Growth","iconBasename":"ability_druid_flourish","iconPath":"/assets/ui/spells/ability_druid_flourish.png","sourceUnlockLevel":60,"talentNodeId":"talent-1917","ranks":[{"spellId":48438,"rank":1,"level":60,"sourceLevel":60,"maxScalingLevel":69,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for the listed amount over 7 sec. The amount healed is applied quickly at first, and slows down as the Wild Growth reaches its full duration.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":26,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":98,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11500000208616257},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53248,"rank":2,"level":70,"sourceLevel":70,"maxScalingLevel":74,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for the listed amount over 7 sec. The amount healed is applied quickly at first, and slows down as the Wild Growth reaches its full duration.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":123,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11500000208616257},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53249,"rank":3,"level":75,"sourceLevel":75,"maxScalingLevel":79,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for the listed amount over 7 sec. The amount healed is applied quickly at first, and slows down as the Wild Growth reaches its full duration.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":177,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11500000208616257},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":53251,"rank":4,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals up to 5 friendly party or raid members within the listed amount yards of the target for the listed amount over 7 sec. The amount healed is applied quickly at first, and slows down as the Wild Growth reaches its full duration.","castTimeMs":0,"cooldownMs":6000,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":23,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":206,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.11500000208616257},{"index":1,"effectType":6,"auraType":4,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":63,"implicitTargetB":31,"radius":15,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":0,"auraType":0,"basePoints":5,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-maim","name":"Maim","iconBasename":"ability_druid_mangle","iconPath":"/assets/ui/spells/ability_druid_mangle.png","sourceUnlockLevel":62,"ranks":[{"spellId":22570,"rank":1,"level":62,"sourceLevel":62,"maxScalingLevel":0,"description":"Finishing move that causes damage and stuns the target. Non-player victim spellcasting is also interrupted for 3 sec. Causes more damage and lasts longer per combo point: 1 point : the listed amountthe listed amountthe listed amountthe listed amount damage, 1 sec 2 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 2 sec 3 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 3 sec 4 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 4 sec 5 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 5 sec","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":45,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":49802,"rank":2,"level":74,"sourceLevel":74,"maxScalingLevel":0,"description":"Finishing move that causes damage and stuns the target. Non-player victim spellcasting is also interrupted for 3 sec. Causes more damage and lasts longer per combo point: 1 point : the listed amountthe listed amountthe listed amountthe listed amount damage, 1 sec 2 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 2 sec 3 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 3 sec 4 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 4 sec 5 points: the listed amountthe listed amountthe listed amountthe listed amount damage, 5 sec","castTimeMs":0,"cooldownMs":10000,"gcdMs":1000,"durationMs":5000,"channelDurationMs":0,"powerType":3,"powerCost":35,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":58,"auraType":0,"basePoints":66,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":12,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":12,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-lifebloom","name":"Lifebloom","iconBasename":"inv_misc_herb_felblossom","iconPath":"/assets/ui/spells/inv_misc_herb_felblossom.png","sourceUnlockLevel":64,"ranks":[{"spellId":33763,"rank":1,"level":64,"sourceLevel":64,"maxScalingLevel":71,"description":"Heals the target for the listed amount over 7 sec. When Lifebloom completes its duration or is dispelled, the target instantly heals themself for 480 and the Druid regains half the cost of the spell. This effect can stack up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":32,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09520000219345093},{"index":1,"effectType":6,"auraType":4,"basePoints":480,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48450,"rank":2,"level":72,"sourceLevel":72,"maxScalingLevel":79,"description":"Heals the target for the listed amount over 7 sec. When Lifebloom completes its duration or is dispelled, the target instantly heals themself for 616 and the Druid regains half the cost of the spell. This effect can stack up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":41,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09520000219345093},{"index":1,"effectType":6,"auraType":4,"basePoints":616,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48451,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":84,"description":"Heals the target for the listed amount over 7 sec. When Lifebloom completes its duration or is dispelled, the target instantly heals themself for 776 and the Druid regains half the cost of the spell. This effect can stack up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":7000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":28,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":8,"basePoints":53,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":1000,"miscValue":0,"triggerSpellId":0,"coefficient":0.09520000219345093},{"index":1,"effectType":6,"auraType":4,"basePoints":776,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-lacerate","name":"Lacerate","iconBasename":"ability_druid_lacerate","iconPath":"/assets/ui/spells/ability_druid_lacerate.png","sourceUnlockLevel":66,"ranks":[{"spellId":33745,"rank":1,"level":66,"sourceLevel":66,"maxScalingLevel":0,"description":"Lacerates the enemy target, dealing 31 damage and making them bleed for the listed amount damage over 15 sec and causing a high amount of threat. Damage increased by attack power. This effect stacks up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":31,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48567,"rank":2,"level":73,"sourceLevel":73,"maxScalingLevel":0,"description":"Lacerates the enemy target, dealing 70 damage and making them bleed for the listed amount damage over 15 sec and causing a high amount of threat. Damage increased by attack power. This effect stacks up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":51,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":70,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]},{"spellId":48568,"rank":3,"level":80,"sourceLevel":80,"maxScalingLevel":0,"description":"Lacerates the enemy target, dealing 88 damage and making them bleed for the listed amount damage over 15 sec and causing a high amount of threat. Damage increased by attack power. This effect stacks up to the listed amount times on the same target.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":15000,"channelDurationMs":0,"powerType":1,"powerCost":150,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":3,"basePoints":64,"dieSides":1,"pointsPerLevel":0,"mechanic":15,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":3000,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":2,"auraType":0,"basePoints":88,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-cyclone","name":"Cyclone","iconBasename":"spell_nature_earthbind","iconPath":"/assets/ui/spells/spell_nature_earthbind.png","sourceUnlockLevel":70,"ranks":[{"spellId":33786,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Tosses the enemy target into the air, preventing all action but making them invulnerable for up to 6 sec. Only one target can be affected by your Cyclone at a time.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":6000,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":8,"rangeIndex":3,"rangeMin":0,"rangeMax":20,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":12,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":39,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":118,"basePoints":-100,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":127,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-swift-flight-form","name":"Swift Flight Form","iconBasename":"ability_druid_flightform","iconPath":"/assets/ui/spells/ability_druid_flightform.png","sourceUnlockLevel":70,"ranks":[{"spellId":40120,"rank":0,"level":70,"sourceLevel":70,"maxScalingLevel":0,"description":"Shapeshift into swift flight form, increasing movement speed by 280% and allowing you to fly. Cannot use in combat. Can only use this form in Outland or Northrend. The act of shapeshifting frees the caster of Polymorph and Movement Impairing effects.","castTimeMs":0,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":13,"rangeIndex":1,"rangeMin":0,"rangeMax":0,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":6,"auraType":36,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":27,"triggerSpellId":0,"coefficient":0},{"index":1,"effectType":6,"auraType":77,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":17,"triggerSpellId":0,"coefficient":0},{"index":2,"effectType":6,"auraType":201,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-swipe-cat","name":"Swipe (Cat)","iconBasename":"inv_misc_monsterclaw_03","iconPath":"/assets/ui/spells/inv_misc_monsterclaw_03.png","sourceUnlockLevel":71,"ranks":[{"spellId":62078,"rank":1,"level":71,"sourceLevel":71,"maxScalingLevel":0,"description":"Swipe nearby enemies, inflicting 250% weapon damage.","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":0,"channelDurationMs":0,"powerType":3,"powerCost":50,"powerCostPercentage":0,"rangeIndex":2,"rangeMin":0,"rangeMax":5,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":31,"auraType":0,"basePoints":250,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-savage-roar","name":"Savage Roar","iconBasename":"ability_druid_skinteeth","iconPath":"/assets/ui/spells/ability_druid_skinteeth.png","sourceUnlockLevel":75,"ranks":[{"spellId":52610,"rank":1,"level":75,"sourceLevel":75,"maxScalingLevel":0,"description":"Finishing move that increases physical damage done by 30%. Only useable while in Cat Form. Lasts longer per combo point: 1 point : 14 seconds 2 points: 19 seconds 3 points: 24 seconds 4 points: 29 seconds 5 points: 34 seconds","castTimeMs":0,"cooldownMs":0,"gcdMs":1000,"durationMs":34000,"channelDurationMs":0,"powerType":3,"powerCost":25,"powerCostPercentage":0,"rangeIndex":6,"rangeMin":0,"rangeMax":100,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":3,"auraType":0,"basePoints":1,"dieSides":0,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":6,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":1},{"index":1,"effectType":6,"auraType":4,"basePoints":30,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":1,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]},{"id":"wow335-druid-nourish","name":"Nourish","iconBasename":"ability_druid_nourish","iconPath":"/assets/ui/spells/ability_druid_nourish.png","sourceUnlockLevel":80,"ranks":[{"spellId":50464,"rank":1,"level":80,"sourceLevel":80,"maxScalingLevel":85,"description":"Heals a friendly target for 2187. Heals for an additional 20% if you have a Rejuvenation, Regrowth, Lifebloom, or Wild Growth effect active on the target.","castTimeMs":1500,"cooldownMs":0,"gcdMs":1500,"durationMs":0,"channelDurationMs":0,"powerType":0,"powerCost":0,"powerCostPercentage":18,"rangeIndex":5,"rangeMin":0,"rangeMax":40,"equippedItemClass":0,"equippedItemSubclassMask":-1,"effects":[{"index":0,"effectType":10,"auraType":0,"basePoints":1883,"dieSides":305,"pointsPerLevel":9.699999809265137,"mechanic":0,"implicitTargetA":21,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0.671999990940094},{"index":2,"effectType":0,"auraType":0,"basePoints":0,"dieSides":1,"pointsPerLevel":0,"mechanic":0,"implicitTargetA":0,"implicitTargetB":0,"radius":0,"periodMs":0,"miscValue":0,"triggerSpellId":0,"coefficient":0}]}]}]}} diff --git a/src/game/wow335DeathKnightBladeBarrier.integration.test.ts b/src/game/wow335DeathKnightBladeBarrier.integration.test.ts new file mode 100644 index 00000000..e1a9a045 --- /dev/null +++ b/src/game/wow335DeathKnightBladeBarrier.integration.test.ts @@ -0,0 +1,124 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { abilitiesForCharacter } from "./abilityCatalog"; +import { installCombatClock } from "./combatClock"; +import { createDeathKnightRunes } from "./combatActors"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition, updatePartyRuntimeTargetVisibility } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID } from "./wow335DeathKnightBladeBarrierRuntime"; + +const TARGET_ID = "blade-barrier-target"; +const PARTY_SEED = "blade-barrier-party"; +let restoreClock: (() => void) | undefined; + +function bloodStrike() { + const found = abilitiesForCharacter("death-knight", null).find((ability) => ability.name === "Blood Strike"); + if (!found) throw new Error("Missing generated Death Knight Blood Strike."); + return found; +} + +function registerTarget() { + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Blade Barrier target", + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); + useCombatStore.getState().selectMob(TARGET_ID); +} + +function runesWithOneBloodAlreadyCooling(now: number) { + return createDeathKnightRunes(now).map((rune) => ( + rune.slot === 0 ? { ...rune, readyAt: now + 8_000 } : rune + )); +} + +describe("WoW Death Knight Blade Barrier combat integration", () => { + beforeEach(() => { + restoreClock = installCombatClock(() => 1_000); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "death-knight", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("wow335-death-knight-blade-barrier", 80, + useCombatStore.getState().health, "tank", 5); + registerTarget(); + }); + + afterEach(() => { + restoreClock?.(); + restoreClock = undefined; + }); + + it("activates the player's ten-second aura as the second Blood rune enters cooldown", () => { + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID]: 4 }, + deathKnightRunes: runesWithOneBloodAlreadyCooling(1_000), + })); + const strike = bloodStrike(); + + const cast = useCombatStore.getState().castAbility(strike.id, { targetActorId: TARGET_ID, now: 1_000 }); + + expect(cast.ok).toBe(true); + expect(useCombatStore.getState().deathKnightRunes.filter((rune) => rune.baseType === "blood") + .every((rune) => rune.readyAt > 1_000)).toBe(true); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: PLAYER_AURA_ENTITY_ID, + targetId: PLAYER_AURA_ENTITY_ID, + appliedAt: 1_000, + expiresAt: 11_000, + definition: expect.objectContaining({ name: "Blade Barrier", modifiers: [ + expect.objectContaining({ kind: "damage", direction: "taken", value: -0.04 }), + ] }), + })); + }); + + it("uses the generated companion's own rank and rune cooldown state", () => { + const talentRanks = { + [WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID]: 2, + "talent-1957": 1, + }; + const strike = abilitiesForCharacter("death-knight", null) + .find((ability) => ability.name === "Heart Strike"); + if (!strike) throw new Error("Missing generated Death Knight Heart Strike."); + const member = createConfiguredPartyMember({ + name: "Blade Barrier DK", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + talentRanks, + role: "damage", + }, 80, 0, PARTY_SEED); + const abilities = abilitiesForCharacter("death-knight", null); + usePartyStore.setState({ members: [{ + ...member, + talentRanks, + runes: runesWithOneBloodAlreadyCooling(1_000), + cooldowns: Object.fromEntries(abilities + .filter((ability) => ability.id !== strike.id) + .map((ability) => [ability.id, 60_000])), + }] }); + usePartyStore.getState().setCommand("attack"); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().damageMob(TARGET_ID, 1, 100); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + + advanceDungeonPartyCombat(1_000); + + expect(usePartyStore.getState().members[0].runes.filter((rune) => rune.baseType === "blood") + .every((rune) => rune.readyAt > 1_000)).toBe(true); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: member.id, + targetId: member.id, + appliedAt: 1_000, + expiresAt: 11_000, + definition: expect.objectContaining({ name: "Blade Barrier", modifiers: [ + expect.objectContaining({ kind: "damage", direction: "taken", value: -0.02 }), + ] }), + })); + }); +}); diff --git a/src/game/wow335DeathKnightBladeBarrierRuntime.test.ts b/src/game/wow335DeathKnightBladeBarrierRuntime.test.ts new file mode 100644 index 00000000..97fb7ccf --- /dev/null +++ b/src/game/wow335DeathKnightBladeBarrierRuntime.test.ts @@ -0,0 +1,65 @@ +import { describe, expect, it } from "vitest"; +import { createDeathKnightRunes } from "./combatActors"; +import { applyAura, resolveDamageValue } from "./combatAuras"; +import { + wow335DeathKnightBladeBarrierAuraDefinition, + wow335DeathKnightBladeBarrierProfile, + wow335DeathKnightBladeBarrierShouldActivate, +} from "./wow335DeathKnightBladeBarrierRuntime"; + +describe("WoW Death Knight Blade Barrier", () => { + it("reads all generated ranks, ten-second duration, and linked child IDs", () => { + expect([1, 2, 3, 4, 5].map(wow335DeathKnightBladeBarrierProfile)).toEqual([ + { rank: 1, damageTakenReduction: 0.01, durationMs: 10_000, triggerSpellId: 51_789 }, + { rank: 2, damageTakenReduction: 0.02, durationMs: 10_000, triggerSpellId: 64_855 }, + { rank: 3, damageTakenReduction: 0.03, durationMs: 10_000, triggerSpellId: 64_856 }, + { rank: 4, damageTakenReduction: 0.04, durationMs: 10_000, triggerSpellId: 64_858 }, + { rank: 5, damageTakenReduction: 0.05, durationMs: 10_000, triggerSpellId: 64_859 }, + ]); + expect(wow335DeathKnightBladeBarrierProfile(0)).toBeNull(); + expect(wow335DeathKnightBladeBarrierProfile(6)).toBeNull(); + }); + + it("requires a Blood rune spend while both original Blood runes are recharging", () => { + const readyRunes = createDeathKnightRunes(1_000); + const bothBloodRunesCooling = readyRunes.map((rune) => ( + rune.baseType === "blood" ? { ...rune, readyAt: 11_000 } : rune + )); + expect(wow335DeathKnightBladeBarrierShouldActivate(5, readyRunes, bothBloodRunesCooling, 1_000)).toBe(true); + expect(wow335DeathKnightBladeBarrierShouldActivate(0, readyRunes, bothBloodRunesCooling, 1_000)).toBe(false); + expect(wow335DeathKnightBladeBarrierShouldActivate(5, bothBloodRunesCooling, bothBloodRunesCooling, 1_000)) + .toBe(false); + expect(wow335DeathKnightBladeBarrierShouldActivate(5, readyRunes, bothBloodRunesCooling, 11_000)).toBe(false); + + const oneBloodRuneReady = bothBloodRunesCooling.map((rune) => ( + rune.baseType === "blood" && rune.slot === 0 ? { ...rune, readyAt: 1_000 } : rune + )); + expect(wow335DeathKnightBladeBarrierShouldActivate(5, readyRunes, oneBloodRuneReady, 1_000)).toBe(false); + }); + + it("does not refresh from a Death Rune cast while both base Blood runes were already cooling", () => { + const runesBefore = createDeathKnightRunes(1_000).map((rune) => { + if (rune.baseType === "blood") return { ...rune, readyAt: 11_000 }; + if (rune.slot === 2) return { ...rune, type: "death" as const }; + return rune; + }); + const runesAfter = runesBefore.map((rune) => ( + rune.slot === 2 ? { ...rune, readyAt: 11_000 } : rune + )); + expect(wow335DeathKnightBladeBarrierShouldActivate(5, runesBefore, runesAfter, 1_000)).toBe(false); + }); + + it("reduces all incoming schools and refreshes one nonstacking aura", () => { + const definition = wow335DeathKnightBladeBarrierAuraDefinition(4); + expect(definition).not.toBeNull(); + let auras = applyAura([], { definition: definition!, sourceId: "dk", targetId: "dk", now: 2_000 }).auras; + expect(resolveDamageValue(100, auras, { direction: "taken", school: "physical", attackKind: "melee" })) + .toBe(96); + expect(resolveDamageValue(100, auras, { direction: "taken", school: "shadow", attackKind: "spell" })) + .toBe(96); + const refreshed = applyAura(auras, { definition: definition!, sourceId: "dk", targetId: "dk", now: 4_000 }); + auras = refreshed.auras; + expect(auras).toHaveLength(1); + expect(refreshed.aura).toMatchObject({ stacks: 1, appliedAt: 4_000, expiresAt: 14_000 }); + }); +}); diff --git a/src/game/wow335DeathKnightBladeBarrierRuntime.ts b/src/game/wow335DeathKnightBladeBarrierRuntime.ts new file mode 100644 index 00000000..4997c090 --- /dev/null +++ b/src/game/wow335DeathKnightBladeBarrierRuntime.ts @@ -0,0 +1,82 @@ +import type { AuraDefinition } from "./combatAuras"; +import type { DeathKnightRuneState } from "./combatActors"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID = "talent-2017"; +export const WOW335_DEATH_KNIGHT_BLADE_BARRIER_AURA_ID = "wow335:death-knight:blade-barrier"; + +const BLADE_BARRIER_NODE = WOW335_TALENT_NODES.find( + (node) => node.id === WOW335_DEATH_KNIGHT_BLADE_BARRIER_TALENT_ID, +); + +export interface Wow335DeathKnightBladeBarrierProfile { + readonly rank: number; + readonly damageTakenReduction: number; + readonly durationMs: number; + readonly triggerSpellId: number; +} + +/** Read Blade Barrier's reduction, duration, and linked child from generated local talent data. */ +export function wow335DeathKnightBladeBarrierProfile( + rank: number, +): Wow335DeathKnightBladeBarrierProfile | null { + const normalizedRank = Math.trunc(rank); + const talentRank = BLADE_BARRIER_NODE?.rankEffects[normalizedRank - 1]; + const description = BLADE_BARRIER_NODE?.rankDescriptions[normalizedRank - 1]; + if (normalizedRank < 1 || !talentRank || !description || talentRank.procChance !== 100) return null; + + const values = description.match( + /^Whenever your Blood Runes are on cooldown, you gain the Blade Barrier effect, which decreases damage taken by (\d+(?:\.\d+)?)% for the next (\d+(?:\.\d+)?) seconds\.$/, + ); + const triggerSpellId = talentRank.effects.find((effect) => effect.triggerSpellId > 0)?.triggerSpellId ?? 0; + if (!values || triggerSpellId <= 0) return null; + + const damageTakenReduction = Number(values[1]) / 100; + const durationMs = Number(values[2]) * 1_000; + if (!Number.isFinite(damageTakenReduction) || damageTakenReduction <= 0 + || !Number.isFinite(durationMs) || durationMs <= 0) return null; + return { rank: normalizedRank, damageTakenReduction, durationMs, triggerSpellId }; +} + +/** Require a base Blood rune to enter recharge and both base Blood runes to be recharging afterward. */ +export function wow335DeathKnightBladeBarrierShouldActivate( + rank: number, + runesBefore: readonly DeathKnightRuneState[], + runesAfter: readonly DeathKnightRuneState[], + now: number, +): boolean { + if (!wow335DeathKnightBladeBarrierProfile(rank)) return false; + const bloodRunesBefore = runesBefore.filter((rune) => rune.baseType === "blood"); + const bloodRunesAfter = runesAfter.filter((rune) => rune.baseType === "blood"); + if (bloodRunesBefore.length !== 2 || bloodRunesAfter.length !== 2 + || !bloodRunesAfter.every((rune) => rune.readyAt > now)) return false; + + const beforeBySlot = new Map(bloodRunesBefore.map((rune) => [rune.slot, rune])); + return bloodRunesAfter.some((rune) => ( + (beforeBySlot.get(rune.slot)?.readyAt ?? Number.POSITIVE_INFINITY) <= now + && rune.readyAt > now + )); +} + +/** One source-owned, all-school defensive aura; subsequent activations refresh its 10-second window. */ +export function wow335DeathKnightBladeBarrierAuraDefinition( + rank: number, +): AuraDefinition | null { + const profile = wow335DeathKnightBladeBarrierProfile(rank); + if (!profile) return null; + return { + id: WOW335_DEATH_KNIGHT_BLADE_BARRIER_AURA_ID, + name: "Blade Barrier", + description: `Reduces damage taken by ${Math.round(profile.damageTakenReduction * 100)}% for ${profile.durationMs / 1_000} seconds.`, + disposition: "buff", + durationMs: profile.durationMs, + maxStacks: 1, + stackBehavior: "refresh", + modifiers: [{ + kind: "damage", + direction: "taken", + operation: "percent", + value: -profile.damageTakenReduction, + }], + }; +} diff --git a/src/game/wow335DeathKnightBloodCakedBlade.test.ts b/src/game/wow335DeathKnightBloodCakedBlade.test.ts new file mode 100644 index 00000000..1b42a596 --- /dev/null +++ b/src/game/wow335DeathKnightBloodCakedBlade.test.ts @@ -0,0 +1,245 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore, stableCombatUnit } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { + WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_PROC_TAG, + WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID, + WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID, + wow335DeathKnightBloodCakedBladeProcChance, + wow335DeathKnightBloodCakedBladeShouldProc, + wow335DeathKnightBloodCakedStrikeDamageCoefficient, +} from "./wow335DeathKnightBloodCakedBladeRuntime"; + +const TARGET_ID = "blood-caked-target"; + +function setupDeathKnight(): void { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "death-knight", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("blood-caked-blade-tests", 80, useCombatStore.getState().health); + useCombatStore.getState().synchronizeActors(); + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Blood-Caked target", + level: 80, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [3, 0, 0]); + useCombatStore.getState().selectMob(TARGET_ID); + useCombatStore.setState((state) => ({ + gearStats: { ...state.gearStats, hitRating: 10_000, expertiseRating: 10_000 }, + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID]: 3 }, + })); +} + +function seedWithProc(shouldProc: boolean): string { + for (let index = 0; index < 100_000; index += 1) { + const seed = `blood-caked-test:${index}`; + const roll = stableCombatUnit(`${seed}:${WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_PROC_TAG}`); + if ((roll < 0.3) === shouldProc) return seed; + } + throw new Error("Could not find a deterministic Blood-Caked Blade proc seed."); +} + +function dealAutoAttack(seed: string, periodic = false): void { + useCombatStore.getState().damageMob( + TARGET_ID, + 100, + 1_000, + { actorId: PLAYER_AGGRO_ID, role: "damage", abilityId: "player-auto-attack" }, + "physical", + { + attackKind: "melee", + seed, + abilityId: "player-auto-attack", + periodic, + rules: { isAutoAttack: true, canMiss: false, canDodge: false, canParry: false, canBlock: false }, + }, + ); +} + +function applyDisease(abilityName: "Icy Touch" | "Plague Strike"): void { + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.name === abilityName); + const disease = ability?.effects.find((effect) => effect.kind === "dot"); + if (!ability || !disease || disease.kind !== "dot") throw new Error(`Missing ${abilityName} disease data.`); + useCombatStore.getState().applyTimedActorEffect(PLAYER_AGGRO_ID, TARGET_ID, ability, disease, 1_000); +} + +describe("WoW 3.3.5 Death Knight Blood-Caked Blade", () => { + beforeEach(setupDeathKnight); + + it("uses the generated rank chances and local child-spell disease coefficient", () => { + expect([1, 2, 3].map(wow335DeathKnightBloodCakedBladeProcChance)).toEqual([0.1, 0.2, 0.3]); + expect([0, 1, 2].map(wow335DeathKnightBloodCakedStrikeDamageCoefficient)).toEqual([0.25, 0.375, 0.5]); + expect(wow335DeathKnightBloodCakedBladeShouldProc(2, 0.1999)).toBe(true); + expect(wow335DeathKnightBloodCakedBladeShouldProc(2, 0.2)).toBe(false); + }); + + it("triggers Blood-Caked Strike from a landed autoattack without allowing the proc to crit", () => { + dealAutoAttack(seedWithProc(true)); + + const strike = useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" && event.abilityId === WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID + )); + expect(strike).toMatchObject({ + sourceActorId: PLAYER_AGGRO_ID, + targetActorId: TARGET_ID, + critical: false, + }); + expect(strike?.rawAmount).toBeGreaterThan(0); + }); + + it("scales the proc from the source Death Knight's active diseases on that target", () => { + const seed = seedWithProc(true); + dealAutoAttack(seed); + const noDiseaseStrike = useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" && event.abilityId === WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID + )); + expect(noDiseaseStrike?.rawAmount).toBeGreaterThan(0); + + setupDeathKnight(); + applyDisease("Icy Touch"); + applyDisease("Plague Strike"); + expect(useCombatStore.getState().effects.filter((effect) => effect.kind === "dot") + .map((effect) => effect.kind === "dot" ? effect.tag : undefined).sort()) + .toEqual(["blood-plague", "frost-fever"]); + dealAutoAttack(seed); + const twoDiseaseStrike = useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" && event.abilityId === WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID + )); + expect(twoDiseaseStrike?.rawAmount).toBeGreaterThan(noDiseaseStrike!.rawAmount); + expect(twoDiseaseStrike!.rawAmount / noDiseaseStrike!.rawAmount).toBeCloseTo(2, 1); + }); + + it("uses the party Death Knight's talent rank when a companion lands an autoattack", () => { + const member = usePartyStore.getState().members[0]; + expect(member).toBeDefined(); + usePartyStore.setState((state) => ({ + members: state.members.map((candidate) => candidate.id === member!.id + ? { + ...candidate, + classId: "death-knight", + talentRanks: { ...candidate.talentRanks, [WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID]: 3 }, + } + : candidate), + })); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID]: 0 }, + })); + useCombatStore.getState().synchronizeActors(); + const seed = seedWithProc(true); + + useCombatStore.getState().damageMob( + TARGET_ID, + 100, + 1_000, + { actorId: member!.id, role: member!.role, abilityId: "party-auto-attack" }, + "physical", + { + attackKind: "melee", + seed, + abilityId: "party-auto-attack", + rules: { isAutoAttack: true, canMiss: false, canDodge: false, canParry: false, canBlock: false }, + weaponSpeedMs: member!.gearStats.meleeWeapon?.speedMs, + }, + ); + + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" + && event.abilityId === WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID + && event.sourceActorId === member!.id + ))).toBe(true); + }); + + it("checks each equipped player hand as a separate autoattack proc", () => { + const offHandWeaponId = "blood-caked-off-hand"; + useCombatStore.setState((state) => ({ + inventory: [...state.inventory, { + instanceId: offHandWeaponId, + itemId: 99002, + itemKey: offHandWeaponId, + name: "Blood-Caked test off-hand", + quality: "uncommon", + inventorySlot: "off-hand", + armorType: null, + weaponType: "mace", + itemLevel: 80, + sourceItemLevel: 80, + stats: { + ...EMPTY_ITEM_STATS, + meleeWeapon: { damageMin: 20, damageMax: 30, damageSchool: "physical", speedMs: 2_000 }, + }, + quantity: 1, + sourceBossKey: "test", + sourceBossName: "Test", + acquiredAt: 1, + }], + equipment: { + ...state.equipment, + player: { ...state.equipment.player, "off-hand": offHandWeaponId }, + }, + })); + const now = Array.from({ length: 100_000 }, (_, index) => index + 1_000).find((candidate) => ( + stableCombatUnit(`${PLAYER_AGGRO_ID}:auto:${TARGET_ID}:${candidate}:${WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_PROC_TAG}`) < 0.3 + && stableCombatUnit(`${PLAYER_AGGRO_ID}:offhand-auto:${TARGET_ID}:${candidate}:${WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_PROC_TAG}`) < 0.3 + )); + expect(now).toBeDefined(); + useCombatStore.setState({ + autoAttackTargetId: TARGET_ID, + nextAutoAttackAt: now!, + nextOffhandAutoAttackAt: now!, + }); + + useCombatStore.getState().tick(0.1, now!); + + expect(useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.abilityId === WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID + ))).toHaveLength(2); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.abilityId === "player-auto-attack-offhand" + ))).toBe(true); + }); + + it("does not trigger at rank zero, on a missed proc roll, a non-autoattack, or a periodic hit", () => { + const noProcSeed = seedWithProc(false); + dealAutoAttack(noProcSeed); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.abilityId === WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID + ))).toBe(false); + + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID]: 0 }, + })); + dealAutoAttack(seedWithProc(true)); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.abilityId === WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID + ))).toBe(false); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID]: 3 }, + })); + + const autoSeed = seedWithProc(true); + useCombatStore.getState().damageMob( + TARGET_ID, + 100, + 2_000, + { actorId: PLAYER_AGGRO_ID, role: "damage", abilityId: "wow335-death-knight-plague-strike" }, + "physical", + { + attackKind: "melee", + seed: autoSeed, + abilityId: "wow335-death-knight-plague-strike", + rules: { canMiss: false, canDodge: false, canParry: false, canBlock: false }, + }, + ); + dealAutoAttack(autoSeed, true); + + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.abilityId === WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID + ))).toBe(false); + }); +}); diff --git a/src/game/wow335DeathKnightBloodCakedBladeRuntime.ts b/src/game/wow335DeathKnightBloodCakedBladeRuntime.ts new file mode 100644 index 00000000..ae8de935 --- /dev/null +++ b/src/game/wow335DeathKnightBloodCakedBladeRuntime.ts @@ -0,0 +1,16 @@ +export const WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_TALENT_ID = "talent-2004"; +export const WOW335_DEATH_KNIGHT_BLOOD_CAKED_STRIKE_ABILITY_ID = "wow335-death-knight-blood-caked-strike"; +export const WOW335_DEATH_KNIGHT_BLOOD_CAKED_BLADE_PROC_TAG = "wow335-death-knight-blood-caked-blade"; + +export function wow335DeathKnightBloodCakedBladeProcChance(rank: number): number { + return [0, 0.1, 0.2, 0.3][Math.min(3, Math.max(0, Math.trunc(rank)))] ?? 0; +} + +export function wow335DeathKnightBloodCakedStrikeDamageCoefficient(diseaseCount: number): number { + return 0.25 + Math.max(0, Math.trunc(diseaseCount)) * 0.125; +} + +export function wow335DeathKnightBloodCakedBladeShouldProc(rank: number, roll: number): boolean { + const chance = wow335DeathKnightBloodCakedBladeProcChance(rank); + return chance > 0 && Number.isFinite(roll) && roll >= 0 && roll < chance; +} diff --git a/src/game/wow335DeathKnightBloodGorged.integration.test.ts b/src/game/wow335DeathKnightBloodGorged.integration.test.ts new file mode 100644 index 00000000..31f03eac --- /dev/null +++ b/src/game/wow335DeathKnightBloodGorged.integration.test.ts @@ -0,0 +1,200 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilitiesForCharacter, abilityAtLevel } from "./abilityCatalog"; +import { installCombatClock } from "./combatClock"; +import { createDeathKnightRunes } from "./combatActors"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID } from "./wow335DeathKnightBloodGorgedRuntime"; + +const TARGET_ID = "blood-gorged-target"; +const PARTY_SEED = "blood-gorged-party"; +const PLAGUE_STRIKE_80_ID = 49921; +const ALWAYS_LAND_RULES = { + canMiss: false, + canDodge: false, + canParry: false, + canBlock: false, + canCrit: false, + resistanceMode: "none" as const, +}; + +let restoreClock: (() => void) | undefined; + +function abilityId(name: string): string { + const ability = abilitiesForCharacter("death-knight", null).find((candidate) => candidate.name === name); + if (!ability) throw new Error(`Missing generated Death Knight ${name}.`); + return ability.id; +} + +function spellIdFor(name: string): number { + const ability = abilitiesForCharacter("death-knight", null).find((candidate) => candidate.name === name); + if (!ability) throw new Error(`Missing generated Death Knight ${name}.`); + return abilityAtLevel(ability, 80).dbcSpellId; +} + +function registerTarget(armor = 0) { + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Blood Gorged target", + maxHealth: 1_000_000, + xpReward: 0, + }); + useCombatStore.setState((state) => ({ + mobs: { ...state.mobs, [TARGET_ID]: { ...state.mobs[TARGET_ID], armor } }, + })); + setMobPosition(TARGET_ID, [2, 0, 0]); + useCombatStore.getState().selectMob(TARGET_ID); +} + +function resolveHit(sourceActorId: string, spellId: number, name = "Plague Strike") { + const selectedAbilityId = abilityId(name); + return useCombatStore.getState().damageMob( + TARGET_ID, + 1_000, + 2_000, + { actorId: sourceActorId, role: "damage", abilityId: selectedAbilityId }, + "physical", + { + attackKind: "melee", + abilityId: selectedAbilityId, + dbcSpellId: spellId, + seed: `${sourceActorId}:${spellId}:blood-gorged-test`, + rules: ALWAYS_LAND_RULES, + }, + ); +} + +function createTestCompanion(rank: number, healthFraction = 1) { + const talentRanks: Record = rank > 0 + ? { [WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID]: rank } + : {}; + const base = createConfiguredPartyMember({ + name: "Blood Gorged DK", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + talentRanks, + role: "damage", + }, 80, 0, PARTY_SEED); + const member = { + ...base, + maxHealth: 1_000, + health: Math.round(1_000 * healthFraction), + gearStats: EMPTY_ITEM_STATS, + talentRanks, + runes: createDeathKnightRunes(1_000), + }; + usePartyStore.setState({ members: [member] }); + useCombatStore.getState().synchronizeActors(); + return member; +} + +describe("WoW Death Knight Blood Gorged combat integration", () => { + beforeEach(() => { + restoreClock = installCombatClock(() => 1_000); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "death-knight", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty( + "wow335-death-knight-blood-gorged", 80, useCombatStore.getState().health, "tank", 5, + ); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID]: 5 }, + health: state.maxHealth, + deathKnightRunes: createDeathKnightRunes(1_000), + })); + registerTarget(); + }); + + afterEach(() => { + restoreClock?.(); + restoreClock = undefined; + }); + + it.each([ + [0.751, 1_100], + [0.75, 1_000], + [0.749, 1_000], + ])("applies the player damage clause only strictly above 75%% health (%s)", (healthFraction, expectedRaw) => { + useCombatStore.setState(() => ({ maxHealth: 1_000, health: Math.round(1_000 * healthFraction) })); + + const result = resolveHit(PLAYER_AGGRO_ID, PLAGUE_STRIKE_80_ID); + + expect(result.combatResult?.rawDamage).toBe(expectedRaw); + }); + + it.each([ + [0.751, 1_100], + [0.75, 1_000], + [0.749, 1_000], + ])("uses the generated companion's own current health for the 75%% gate (%s)", (healthFraction, expectedRaw) => { + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + registerTarget(); + const member = createTestCompanion(5, healthFraction); + + const result = resolveHit(member.id, PLAGUE_STRIKE_80_ID); + + expect(result.combatResult?.rawDamage).toBe(expectedRaw); + }); + + it.each([ + [PLAYER_AGGRO_ID, "player"], + ["party-source", "companion"], + ])("keeps nonmatching generated spell IDs ineligible for %s", (sourceActorId, sourceKind) => { + let actorId = sourceActorId; + if (sourceKind === "companion") { + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + registerTarget(); + actorId = createTestCompanion(5, 1).id; + } + registerTarget(6_000); + + const nonmatchingRankId = spellIdFor("Death Strike"); + const result = resolveHit(actorId, nonmatchingRankId, "Death Strike").combatResult; + if (sourceKind === "companion") createTestCompanion(0, 1); + else useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID]: 0 }, + })); + const withoutTalent = resolveHit(actorId, nonmatchingRankId, "Death Strike").combatResult; + + expect(result?.rawDamage).toBe(1_000); + expect(withoutTalent?.rawDamage).toBe(1_000); + expect(result?.finalDamage).toBe(withoutTalent?.finalDamage); + }); + + it.each([ + [PLAYER_AGGRO_ID, "player"], + ["party-source", "companion"], + ])("adds the armor clause below 75%% health for eligible physical hits from a %s", (sourceActorId, sourceKind) => { + let actorId = sourceActorId; + if (sourceKind === "companion") { + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty( + "wow335-death-knight-blood-gorged", 80, useCombatStore.getState().health, "damage", 5, + ); + registerTarget(); + actorId = createTestCompanion(5, 0.5).id; + } else { + useCombatStore.setState((state) => ({ health: Math.round(state.maxHealth * 0.5) })); + } + registerTarget(6_000); + + const withTalent = resolveHit(actorId, PLAGUE_STRIKE_80_ID).combatResult; + if (sourceKind === "companion") createTestCompanion(0, 0.5); + else useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID]: 0 }, + })); + const withoutTalent = resolveHit(actorId, PLAGUE_STRIKE_80_ID).combatResult; + + expect(withTalent?.rawDamage).toBe(1_000); + expect(withoutTalent?.rawDamage).toBe(1_000); + expect(withTalent?.finalDamage).toBeGreaterThan(withoutTalent?.finalDamage ?? 0); + }); + +}); diff --git a/src/game/wow335DeathKnightBloodGorgedRuntime.test.ts b/src/game/wow335DeathKnightBloodGorgedRuntime.test.ts new file mode 100644 index 00000000..3c8610c6 --- /dev/null +++ b/src/game/wow335DeathKnightBloodGorgedRuntime.test.ts @@ -0,0 +1,59 @@ +import { describe, expect, it } from "vitest"; +import { + WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME, + wow335DeathKnightBloodGorgedAffectsSpell, + wow335DeathKnightBloodGorgedArmorPenetrationPercent, + wow335DeathKnightBloodGorgedDamageBonusPercent, + wow335DeathKnightBloodGorgedProfile, +} from "./wow335DeathKnightBloodGorgedRuntime"; + +const PLAGUE_STRIKE_FLAGS = [0x1, 0, 0] as const; +const BLOOD_STRIKE_FLAGS = [0x400000, 0, 0] as const; +const HEART_STRIKE_FLAGS = [0x1000000, 0, 0] as const; +const NON_MATCHING_FLAGS = [0x2, 0, 0] as const; + +describe("WoW 3.3.5 Death Knight Blood Gorged", () => { + it("reads all five local generated ranks and their child spell links", () => { + const profiles = [1, 2, 3, 4, 5].map((rank) => wow335DeathKnightBloodGorgedProfile(rank)); + + expect(profiles.map((profile) => profile?.damageBonusPercent)).toEqual([2, 4, 6, 8, 10]); + expect(profiles.map((profile) => profile?.armorPenetrationPercent)).toEqual([2, 4, 6, 8, 10]); + expect(profiles.map((profile) => profile?.damageChildSpellId)).toEqual([50096, 50108, 50109, 50110, 50111]); + expect(profiles.map((profile) => profile?.armorChildSpellId)).toEqual([61274, 61275, 61276, 61277, 61278]); + expect(profiles.every((profile) => profile?.damageAuraType === 79 + && profile.armorAuraType === 280 + && profile.damageSchoolMask === 127)).toBe(true); + expect(wow335DeathKnightBloodGorgedProfile(0)).toBeNull(); + expect(wow335DeathKnightBloodGorgedProfile(6)).toBeNull(); + }); + + it("follows the local family-15 mask for Plague Strike, Blood Strike, and Heart Strike", () => { + expect(wow335DeathKnightBloodGorgedAffectsSpell(WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME, PLAGUE_STRIKE_FLAGS)) + .toBe(true); + expect(wow335DeathKnightBloodGorgedAffectsSpell(WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME, BLOOD_STRIKE_FLAGS)) + .toBe(true); + expect(wow335DeathKnightBloodGorgedAffectsSpell(WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME, HEART_STRIKE_FLAGS)) + .toBe(true); + expect(wow335DeathKnightBloodGorgedAffectsSpell(0, BLOOD_STRIKE_FLAGS)).toBe(false); + expect(wow335DeathKnightBloodGorgedAffectsSpell(WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME, NON_MATCHING_FLAGS)) + .toBe(false); + expect(wow335DeathKnightBloodGorgedAffectsSpell(15, [-1, 0, 0])).toBe(false); + }); + + it("requires health strictly above 75% for the damage bonus", () => { + expect(wow335DeathKnightBloodGorgedDamageBonusPercent(5, 751, 1000, 15, BLOOD_STRIKE_FLAGS)).toBe(10); + expect(wow335DeathKnightBloodGorgedDamageBonusPercent(5, 750, 1000, 15, BLOOD_STRIKE_FLAGS)).toBe(0); + expect(wow335DeathKnightBloodGorgedDamageBonusPercent(5, 749, 1000, 15, BLOOD_STRIKE_FLAGS)).toBe(0); + expect(wow335DeathKnightBloodGorgedDamageBonusPercent(3, 100, 100, 15, PLAGUE_STRIKE_FLAGS)).toBe(6); + expect(wow335DeathKnightBloodGorgedDamageBonusPercent(3, 90, 100, 15, NON_MATCHING_FLAGS)).toBe(0); + expect(wow335DeathKnightBloodGorgedDamageBonusPercent(3, 90, 100, 0, BLOOD_STRIKE_FLAGS)).toBe(0); + expect(wow335DeathKnightBloodGorgedDamageBonusPercent(3, 1, 0, 15, BLOOD_STRIKE_FLAGS)).toBe(0); + }); + + it("keeps armor penetration unconditional on health and gated to local-mask abilities", () => { + expect(wow335DeathKnightBloodGorgedArmorPenetrationPercent(1, 15, BLOOD_STRIKE_FLAGS)).toBe(2); + expect(wow335DeathKnightBloodGorgedArmorPenetrationPercent(5, 15, HEART_STRIKE_FLAGS)).toBe(10); + expect(wow335DeathKnightBloodGorgedArmorPenetrationPercent(5, 15, NON_MATCHING_FLAGS)).toBe(0); + expect(wow335DeathKnightBloodGorgedArmorPenetrationPercent(0, 15, BLOOD_STRIKE_FLAGS)).toBe(0); + }); +}); diff --git a/src/game/wow335DeathKnightBloodGorgedRuntime.ts b/src/game/wow335DeathKnightBloodGorgedRuntime.ts new file mode 100644 index 00000000..19a5ea89 --- /dev/null +++ b/src/game/wow335DeathKnightBloodGorgedRuntime.ts @@ -0,0 +1,116 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID = "talent-2034"; + +const BLOOD_GORGED_DAMAGE_CHILD_IDS = [50096, 50108, 50109, 50110, 50111] as const; +const BLOOD_GORGED_ARMOR_CHILD_IDS = [61274, 61275, 61276, 61277, 61278] as const; + +/** Local Spell.dbc uses Death Knight family 15 and this three-word aura mask. */ +export const WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME = 15; +export const WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_MASK = [0x01400001, 0, 0] as const; + +const BLOOD_GORGED_NODE = WOW335_TALENT_NODES.find( + (node) => node.id === WOW335_DEATH_KNIGHT_BLOOD_GORGED_TALENT_ID, +); + +export interface Wow335DeathKnightBloodGorgedProfile { + readonly rank: number; + readonly damageBonusPercent: number; + readonly armorPenetrationPercent: number; + readonly damageChildSpellId: number; + readonly armorChildSpellId: number; + readonly damageAuraType: 79; + readonly damageSchoolMask: 127; + readonly armorAuraType: 280; + readonly spellFamilyName: 15; + readonly spellFamilyMask: readonly [number, number, number]; +} + +/** + * Read the rank values and child-spell links from the generated local talent + * rows. Aura types and the family mask are verified against the local 3.3.5 + * Spell.dbc and recorded in docs/WOW_DEATH_KNIGHT_BLOOD_GORGED.md. + */ +export function wow335DeathKnightBloodGorgedProfile( + rank: number, +): Wow335DeathKnightBloodGorgedProfile | null { + const normalizedRank = Math.trunc(rank); + const rankEffect = BLOOD_GORGED_NODE?.rankEffects[normalizedRank - 1]; + const rankDescription = BLOOD_GORGED_NODE?.rankDescriptions[normalizedRank - 1]; + if (normalizedRank < 1 || !rankEffect || !rankDescription) return null; + + const descriptionValues = rankDescription.match( + /^When you are above 75% health, you deal (\d+)% more damage\. In addition, your attacks ignore up to (\d+)% of your opponent's armor at all times\.$/, + ); + const damageBonusPercent = Number(descriptionValues?.[1]); + const armorPenetrationPercent = Number(descriptionValues?.[2]); + const damageChild = rankEffect.effects.find( + (effect) => effect.triggerSpellId === BLOOD_GORGED_DAMAGE_CHILD_IDS[normalizedRank - 1], + ); + const armorChild = rankEffect.effects.find( + (effect) => effect.triggerSpellId === BLOOD_GORGED_ARMOR_CHILD_IDS[normalizedRank - 1], + ); + + if (!descriptionValues + || !damageChild + || !armorChild + || damageChild.basePoints !== damageBonusPercent + || armorChild.basePoints !== armorPenetrationPercent + || damageBonusPercent <= 0 + || armorPenetrationPercent <= 0) return null; + + return { + rank: normalizedRank, + damageBonusPercent, + armorPenetrationPercent, + damageChildSpellId: damageChild.triggerSpellId, + armorChildSpellId: armorChild.triggerSpellId, + damageAuraType: 79, + damageSchoolMask: 127, + armorAuraType: 280, + spellFamilyName: WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME, + spellFamilyMask: WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_MASK, + }; +} + +/** The local DBC aura applies only to matching Death Knight family-15 spells. */ +export function wow335DeathKnightBloodGorgedAffectsSpell( + spellFamilyName: number, + spellFamilyFlags: readonly [number, number, number], +): boolean { + if (spellFamilyName !== WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME) return false; + if (spellFamilyFlags.some((flags) => !Number.isSafeInteger(flags) || flags < 0 || flags > 0xFFFFFFFF)) return false; + return WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_MASK.some((mask, index) => ( + (spellFamilyFlags[index] & mask) !== 0 + )); +} + +/** Above 75% is strict; exactly 75% does not receive the damage bonus. */ +export function wow335DeathKnightBloodGorgedDamageBonusPercent( + rank: number, + currentHealth: number, + maximumHealth: number, + spellFamilyName: number, + spellFamilyFlags: readonly [number, number, number], +): number { + const profile = wow335DeathKnightBloodGorgedProfile(rank); + if (!profile + || !wow335DeathKnightBloodGorgedAffectsSpell(spellFamilyName, spellFamilyFlags) + || !Number.isFinite(currentHealth) + || currentHealth < 0 + || !Number.isFinite(maximumHealth) + || maximumHealth <= 0 + || currentHealth <= maximumHealth * 0.75) return 0; + return profile.damageBonusPercent; +} + +/** Armor penetration is unconditional on health, but remains family-mask gated. */ +export function wow335DeathKnightBloodGorgedArmorPenetrationPercent( + rank: number, + spellFamilyName: number, + spellFamilyFlags: readonly [number, number, number], +): number { + const profile = wow335DeathKnightBloodGorgedProfile(rank); + if (!profile || !wow335DeathKnightBloodGorgedAffectsSpell(spellFamilyName, spellFamilyFlags)) return 0; + return profile.armorPenetrationPercent; +} diff --git a/src/game/wow335DeathKnightBloodGorgedSpellFamily.test.ts b/src/game/wow335DeathKnightBloodGorgedSpellFamily.test.ts new file mode 100644 index 00000000..e9aa3cb6 --- /dev/null +++ b/src/game/wow335DeathKnightBloodGorgedSpellFamily.test.ts @@ -0,0 +1,103 @@ +import { describe, expect, it } from "vitest"; +import { + abilityAtLevel, + learnedAbilityForBuild, + type AbilityDefinition, +} from "./abilityCatalog"; +import { + WOW335_ABILITIES_BY_CLASS, +} from "./wow335AbilityCatalog"; +import generatedData from "./wow335AbilityData.generated.json"; +import { + WOW335_DEATH_KNIGHT_BLOOD_GORGED_ELIGIBLE_SPELL_IDS, + WOW335_DEATH_KNIGHT_BLOOD_GORGED_INELIGIBLE_SPELL_IDS, + WOW335_DEATH_KNIGHT_GENERATED_SPELL_IDS, + wow335DeathKnightSpellFamilyInfoForSpellId, + wow335DeathKnightSpellIdMatchesBloodGorgedMask, +} from "./wow335DeathKnightBloodGorgedSpellFamily"; + +const EXPECTED_ELIGIBLE_IDS = [45462, 45902, 49917, 49918, 49919, 49920, 49921, 55050] as const; +const EXPECTED_INELIGIBLE_IDS = [ + 42650, 43265, 45463, 45477, 45524, 45529, 46584, 47476, 47528, 47541, 47568, 47632, + 47633, 48263, 48265, 48266, 48707, 48721, 48743, 48778, 48792, 48982, 49005, 49016, + 49020, 49028, 49039, 49143, 49146, 49158, 49184, 49189, 49203, 49206, 49222, 49576, + 49796, 49892, 49893, 49894, 49895, 49896, 49903, 49904, 49909, 49923, 49924, 49936, + 49937, 49938, 49939, 49940, 49941, 49998, 49999, 50149, 50150, 50842, 51052, 51267, + 51271, 55090, 55233, 61154, 61155, 61156, 61157, 61158, 63560, +] as const; + +function abilityNamed(name: string): AbilityDefinition { + const ability = WOW335_ABILITIES_BY_CLASS["death-knight"].find((candidate) => candidate.name === name); + expect(ability, name).toBeDefined(); + return ability!; +} + +describe("WoW 3.3.5 Death Knight Blood Gorged Spell.dbc family mapping", () => { + it("covers every raw spell rank in the generated Death Knight ability catalog", () => { + const sourceSpellIds = generatedData.classes["death-knight"] + .flatMap((ability) => ability.ranks.map((rank) => rank.spellId)) + .sort((left, right) => left - right); + const selectableCatalogSpellIds = WOW335_ABILITIES_BY_CLASS["death-knight"] + .flatMap((ability) => ability.ranks?.map((rank) => rank.spellId) ?? []) + .sort((left, right) => left - right); + + expect(sourceSpellIds).toEqual(WOW335_DEATH_KNIGHT_GENERATED_SPELL_IDS); + expect(sourceSpellIds).toHaveLength(77); + expect(selectableCatalogSpellIds).toEqual(sourceSpellIds.filter((spellId) => spellId !== 47632 && spellId !== 47633)); + expect(selectableCatalogSpellIds).toHaveLength(75); + for (const spellId of sourceSpellIds) { + const info = wow335DeathKnightSpellFamilyInfoForSpellId(spellId); + expect(info, `DBC family fields for ${spellId}`).not.toBeNull(); + expect(info?.spellFamilyName).toBe(15); + expect(info?.spellFamilyFlags).toHaveLength(3); + } + }); + + it("matches the exact modeled ranks selected by the local Blood Gorged mask", () => { + expect(WOW335_DEATH_KNIGHT_BLOOD_GORGED_ELIGIBLE_SPELL_IDS).toEqual(EXPECTED_ELIGIBLE_IDS); + expect(WOW335_DEATH_KNIGHT_BLOOD_GORGED_INELIGIBLE_SPELL_IDS).toEqual(EXPECTED_INELIGIBLE_IDS); + expect(WOW335_DEATH_KNIGHT_BLOOD_GORGED_ELIGIBLE_SPELL_IDS.length + + WOW335_DEATH_KNIGHT_BLOOD_GORGED_INELIGIBLE_SPELL_IDS.length).toBe(77); + + for (const spellId of [45462, 49917, 49918, 49919, 49920, 49921]) { + expect(wow335DeathKnightSpellFamilyInfoForSpellId(spellId)?.spellFamilyFlags).toEqual([0x1, 0, 0]); + expect(wow335DeathKnightSpellIdMatchesBloodGorgedMask(spellId)).toBe(true); + } + expect(wow335DeathKnightSpellFamilyInfoForSpellId(45902)?.spellFamilyFlags).toEqual([0x400000, 0, 0]); + expect(wow335DeathKnightSpellIdMatchesBloodGorgedMask(45902)).toBe(true); + expect(wow335DeathKnightSpellFamilyInfoForSpellId(55050)?.spellFamilyFlags).toEqual([0x1000000, 0, 0]); + expect(wow335DeathKnightSpellIdMatchesBloodGorgedMask(55050)).toBe(true); + }); + + it("maps the actual player-selected and companion-selected strike ranks by raw DBC ID", () => { + const bloodStrike = abilityNamed("Blood Strike"); + const heartStrike = abilityNamed("Heart Strike"); + const plagueStrike = abilityNamed("Plague Strike"); + + const playerCastIds = [ + abilityAtLevel(bloodStrike, 80).dbcSpellId, + abilityAtLevel(heartStrike, 80).dbcSpellId, + abilityAtLevel(plagueStrike, 80).dbcSpellId, + ]; + expect(playerCastIds).toEqual([45902, 55050, 49921]); + expect(playerCastIds.map((spellId) => wow335DeathKnightSpellIdMatchesBloodGorgedMask(spellId))) + .toEqual([true, true, true]); + + const companionActionIds = [ + learnedAbilityForBuild(bloodStrike, 80, {})?.dbcSpellId, + learnedAbilityForBuild(heartStrike, 80, { "talent-1957": 1 })?.dbcSpellId, + learnedAbilityForBuild(plagueStrike, 80, {})?.dbcSpellId, + ]; + expect(companionActionIds).toEqual([45902, 55050, 49921]); + expect(companionActionIds.map((spellId) => spellId === undefined + ? false + : wow335DeathKnightSpellIdMatchesBloodGorgedMask(spellId))).toEqual([true, true, true]); + }); + + it("keeps raw IDs outside the generated catalog unknown instead of guessing from spell names", () => { + expect(wow335DeathKnightSpellFamilyInfoForSpellId(56815)).toBeNull(); + expect(wow335DeathKnightSpellIdMatchesBloodGorgedMask(56815)).toBe(false); + expect(wow335DeathKnightSpellFamilyInfoForSpellId(0)).toBeNull(); + expect(wow335DeathKnightSpellFamilyInfoForSpellId(-1)).toBeNull(); + }); +}); diff --git a/src/game/wow335DeathKnightBloodGorgedSpellFamily.ts b/src/game/wow335DeathKnightBloodGorgedSpellFamily.ts new file mode 100644 index 00000000..acbe745d --- /dev/null +++ b/src/game/wow335DeathKnightBloodGorgedSpellFamily.ts @@ -0,0 +1,135 @@ +import { + wow335DeathKnightBloodGorgedAffectsSpell, + WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME, +} from "./wow335DeathKnightBloodGorgedRuntime"; + +export type Wow335DeathKnightSpellFamilyFlags = readonly [number, number, number]; + +export interface Wow335DeathKnightSpellFamilyInfo { + readonly spellId: number; + readonly spellFamilyName: number; + readonly spellFamilyFlags: Wow335DeathKnightSpellFamilyFlags; +} + +/** + * SpellFamilyName and SpellFamilyFlags extracted by raw spell ID from the + * local patch-D 3.3.5 Spell.dbc for every spell row in the generated DK data. + * The generated ability JSON omits these fields, so this explicit ID table is + * required; ability names are never used to infer a mask. Two generated + * rank-0 Death Coil variants (47632/47633) are retained here as known DBC rows, + * though the selectable ability catalog filters them from runtime ranks. + */ +const DBC_FLAGS_BY_MODELED_DEATH_KNIGHT_SPELL_ID: Readonly>> = + Object.freeze({ + 42650: [0x800, 0, 0], + 43265: [0x20, 0, 0], + 45462: [0x1, 0, 0], + 45463: [0x10, 0, 0], + 45477: [0x2, 0, 0], + 45524: [0x4, 0xC000, 0], + 45529: [0x8, 0, 0], + 45902: [0x400000, 0, 0], + 46584: [0x1000, 0, 0], + 47476: [0x200, 0, 0], + 47528: [0x400, 0, 0], + 47541: [0x2000, 0, 0], + 47568: [0x4000, 0, 0], + 47632: [0x2000, 0, 0x1], + 47633: [0x80002000, 0, 0], + 48263: [0x8000, 0, 0], + 48265: [0x10000, 0, 0], + 48266: [0x800000, 0, 0], + 48707: [0x20000, 0, 0], + 48721: [0x40000, 0, 0], + 48743: [0x80000, 0, 0], + 48778: [0x4000000, 0, 0], + 48792: [0x100000, 0, 0], + 48982: [0x8000000, 0, 0], + 49005: [0x10000000, 0, 0], + 49016: [0x20000000, 0, 0], + 49020: [0, 0x20000, 0], + 49028: [0x40000000, 0, 0], + 49039: [0, 0x10, 0], + 49143: [0, 0x4, 0], + 49146: [0, 0, 0], + 49158: [0, 0, 0], + 49184: [0, 0x2, 0], + 49189: [0, 0, 0], + 49203: [0, 0x9000, 0], + 49206: [0, 0x80, 0], + 49222: [0, 0x40, 0], + 49576: [0x2000000, 0, 0], + 49796: [0, 0x1, 0], + 49892: [0x2000, 0, 0], + 49893: [0x2000, 0, 0], + 49894: [0x2000, 0, 0], + 49895: [0x2000, 0, 0], + 49896: [0x2, 0, 0], + 49903: [0x2, 0, 0], + 49904: [0x2, 0, 0], + 49909: [0x2, 0, 0], + 49917: [0x1, 0, 0], + 49918: [0x1, 0, 0], + 49919: [0x1, 0, 0], + 49920: [0x1, 0, 0], + 49921: [0x1, 0, 0], + 49923: [0x10, 0, 0], + 49924: [0x10, 0, 0], + 49936: [0x20, 0, 0], + 49937: [0x20, 0, 0], + 49938: [0x20, 0, 0], + 49939: [0x40000, 0, 0], + 49940: [0x40000, 0, 0], + 49941: [0x40000, 0, 0], + 49998: [0x10, 0, 0], + 49999: [0x10, 0, 0], + 50149: [0, 0, 0], + 50150: [0, 0, 0], + 50842: [0, 0x10000, 0], + 51052: [0, 0x80000, 0], + 51267: [0, 0, 0], + 51271: [0x200000, 0, 0], + 55050: [0x1000000, 0, 0], + 55090: [0, 0x8000000, 0], + 55233: [0, 0x8, 0], + 61154: [0, 0, 0], + 61155: [0, 0, 0], + 61156: [0, 0, 0], + 61157: [0, 0, 0], + 61158: [0, 0, 0], + 63560: [0, 0, 0x20], + }); + +export const WOW335_DEATH_KNIGHT_GENERATED_SPELL_IDS = Object.freeze( + Object.keys(DBC_FLAGS_BY_MODELED_DEATH_KNIGHT_SPELL_ID).map(Number).sort((left, right) => left - right), +); + +export function wow335DeathKnightSpellFamilyInfoForSpellId( + spellId: number, +): Wow335DeathKnightSpellFamilyInfo | null { + if (!Number.isSafeInteger(spellId) || spellId <= 0) return null; + const spellFamilyFlags = DBC_FLAGS_BY_MODELED_DEATH_KNIGHT_SPELL_ID[spellId]; + if (!spellFamilyFlags) return null; + return { + spellId, + spellFamilyName: WOW335_DEATH_KNIGHT_BLOOD_GORGED_FAMILY_NAME, + spellFamilyFlags, + }; +} + +/** Query the Blood Gorged aura mask from the raw DBC rank spell ID. */ +export function wow335DeathKnightSpellIdMatchesBloodGorgedMask(spellId: number): boolean { + const info = wow335DeathKnightSpellFamilyInfoForSpellId(spellId); + return Boolean(info && wow335DeathKnightBloodGorgedAffectsSpell( + info.spellFamilyName, + info.spellFamilyFlags, + )); +} + +export const WOW335_DEATH_KNIGHT_BLOOD_GORGED_ELIGIBLE_SPELL_IDS = Object.freeze( + WOW335_DEATH_KNIGHT_GENERATED_SPELL_IDS.filter(wow335DeathKnightSpellIdMatchesBloodGorgedMask), +); + +export const WOW335_DEATH_KNIGHT_BLOOD_GORGED_INELIGIBLE_SPELL_IDS = Object.freeze( + WOW335_DEATH_KNIGHT_GENERATED_SPELL_IDS.filter((spellId) => !wow335DeathKnightSpellIdMatchesBloodGorgedMask(spellId)), +); diff --git a/src/game/wow335DeathKnightBloodyVengeance.integration.test.ts b/src/game/wow335DeathKnightBloodyVengeance.integration.test.ts new file mode 100644 index 00000000..afdd380d --- /dev/null +++ b/src/game/wow335DeathKnightBloodyVengeance.integration.test.ts @@ -0,0 +1,167 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilitiesForCharacter } from "./abilityCatalog"; +import { installCombatClock } from "./combatClock"; +import { createDeathKnightRunes } from "./combatActors"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition, updatePartyRuntimeTargetVisibility } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { + WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID, +} from "./wow335DeathKnightBloodyVengeanceRuntime"; + +const TARGET_ID = "bloody-vengeance-target"; +const PARTY_SEED = "bloody-vengeance-party"; +let restoreClock: (() => void) | undefined; + +function bloodStrike() { + const found = abilitiesForCharacter("death-knight", null) + .find((ability) => ability.name === "Blood Strike"); + if (!found) throw new Error("Missing generated Death Knight Blood Strike."); + return found; +} + +function registerTarget() { + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Bloody Vengeance target", + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); + useCombatStore.getState().selectMob(TARGET_ID); +} + +function guaranteedCriticalBloodStrike(sourceActorId: string, now: number) { + const strike = bloodStrike(); + return useCombatStore.getState().damageMob( + TARGET_ID, + 100, + now, + { actorId: sourceActorId, role: "damage", abilityId: strike.id }, + "physical", + { + attackKind: "melee", + seed: `${sourceActorId}:${now}:bloody-vengeance-test`, + abilityId: strike.id, + criticalChanceBonusPercent: 100, + rules: { + canMiss: false, + canDodge: false, + canParry: false, + canBlock: false, + resistanceMode: "none", + }, + }, + ); +} + +describe("WoW Death Knight Bloody Vengeance combat integration", () => { + beforeEach(() => { + restoreClock = installCombatClock(() => 1_000); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "death-knight", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty( + "wow335-death-knight-bloody-vengeance", 80, useCombatStore.getState().health, "tank", 5, + ); + useCombatStore.setState({ deathKnightRunes: createDeathKnightRunes(1_000) }); + registerTarget(); + }); + + afterEach(() => { + restoreClock?.(); + restoreClock = undefined; + }); + + it("adds up to three stacks for player critical hits and refreshes the generated duration", () => { + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID]: 3 }, + })); + + const first = guaranteedCriticalBloodStrike(PLAYER_AGGRO_ID, 1_000); + expect(first.combatResult?.critical).toBe(true); + let aura = useCombatStore.getState().auras.find((candidate) => candidate.targetId === PLAYER_AURA_ENTITY_ID + && candidate.definition.name === "Bloody Vengeance"); + expect(aura).toMatchObject({ stacks: 1, appliedAt: 1_000, expiresAt: 31_000 }); + + for (const now of [2_000, 3_000, 4_000]) { + expect(guaranteedCriticalBloodStrike(PLAYER_AGGRO_ID, now).combatResult?.critical).toBe(true); + aura = useCombatStore.getState().auras.find((candidate) => candidate.targetId === PLAYER_AURA_ENTITY_ID + && candidate.definition.name === "Bloody Vengeance"); + } + expect(aura).toMatchObject({ stacks: 3, appliedAt: 4_000, expiresAt: 34_000 }); + }); + + it("uses a companion Death Knight's own rank and applies its aura to that companion", () => { + const talentRanks = { [WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID]: 2 }; + const member = createConfiguredPartyMember({ + name: "Bloody Vengeance DK", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + talentRanks, + role: "damage", + }, 80, 0, PARTY_SEED); + usePartyStore.setState({ members: [{ + ...member, + gearStats: EMPTY_ITEM_STATS, + talentRanks, + runes: createDeathKnightRunes(1_000), + }] }); + useCombatStore.getState().synchronizeActors(); + + const result = guaranteedCriticalBloodStrike(member.id, 2_000); + expect(result.combatResult?.critical).toBe(true); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: member.id, + targetId: member.id, + appliedAt: 2_000, + expiresAt: 32_000, + definition: expect.objectContaining({ + name: "Bloody Vengeance", + modifiers: [expect.objectContaining({ kind: "damage", direction: "dealt", value: 0.02, school: "physical" })], + }), + })); + }); + + it("gives a talented companion critical-result contexts for auto attacks", () => { + const talentRanks = { [WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID]: 1 }; + const member = createConfiguredPartyMember({ + name: "Bloody Vengeance auto attacker", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + talentRanks, + role: "damage", + }, 80, 0, `${PARTY_SEED}:auto`); + usePartyStore.setState({ members: [{ + ...member, + gearStats: { + ...EMPTY_ITEM_STATS, + criticalStrikeRating: 1_000_000, + hitRating: 1_000_000, + expertiseRating: 1_000_000, + }, + talentRanks, + runes: createDeathKnightRunes(1_000), + }] }); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().damageMob(TARGET_ID, 1, 100); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + + advanceDungeonPartyCombat(1_000); + + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: member.id, + targetId: member.id, + definition: expect.objectContaining({ name: "Bloody Vengeance" }), + })); + }); +}); diff --git a/src/game/wow335DeathKnightBloodyVengeanceRuntime.test.ts b/src/game/wow335DeathKnightBloodyVengeanceRuntime.test.ts new file mode 100644 index 00000000..8a8e7d36 --- /dev/null +++ b/src/game/wow335DeathKnightBloodyVengeanceRuntime.test.ts @@ -0,0 +1,51 @@ +import { describe, expect, it } from "vitest"; +import { applyAura, resolveDamageValue, type ActiveAura } from "./combatAuras"; +import { + wow335DeathKnightBloodyVengeanceAuraDefinition, + wow335DeathKnightBloodyVengeanceProfile, + wow335DeathKnightBloodyVengeanceShouldTrigger, +} from "./wow335DeathKnightBloodyVengeanceRuntime"; + +describe("WoW Death Knight Bloody Vengeance", () => { + it("reads each generated rank's bonus, duration, stack cap, and child link", () => { + expect([1, 2, 3].map(wow335DeathKnightBloodyVengeanceProfile)).toEqual([ + { rank: 1, physicalDamageBonusPerStack: 0.01, durationMs: 15_000, maxStacks: 3, triggerSpellId: 50_447 }, + { rank: 2, physicalDamageBonusPerStack: 0.02, durationMs: 30_000, maxStacks: 3, triggerSpellId: 50_448 }, + { rank: 3, physicalDamageBonusPerStack: 0.03, durationMs: 30_000, maxStacks: 3, triggerSpellId: 50_449 }, + ]); + expect(wow335DeathKnightBloodyVengeanceProfile(0)).toBeNull(); + expect(wow335DeathKnightBloodyVengeanceProfile(4)).toBeNull(); + }); + + it("triggers from critical damage only when the Death Knight has a valid rank", () => { + expect(wow335DeathKnightBloodyVengeanceShouldTrigger(3, true)).toBe(true); + expect(wow335DeathKnightBloodyVengeanceShouldTrigger(3, false)).toBe(false); + expect(wow335DeathKnightBloodyVengeanceShouldTrigger(0, true)).toBe(false); + }); + + it("stacks to three, refreshes duration on each critical hit, and affects physical damage only", () => { + const definition = wow335DeathKnightBloodyVengeanceAuraDefinition(3); + expect(definition).not.toBeNull(); + let auras: readonly ActiveAura[] = []; + let applied = applyAura(auras, { definition: definition!, sourceId: "dk", targetId: "dk", now: 1_000 }); + auras = applied.auras; + expect(applied.aura.stacks).toBe(1); + expect(applied.aura.expiresAt).toBe(31_000); + + for (const now of [2_000, 3_000, 4_000]) { + applied = applyAura(auras, { definition: definition!, sourceId: "dk", targetId: "dk", now }); + auras = applied.auras; + } + expect(applied.aura.stacks).toBe(3); + expect(applied.aura.expiresAt).toBe(34_000); + expect(resolveDamageValue(100, auras, { direction: "dealt", school: "physical", attackKind: "melee" })) + .toBeCloseTo(109); + expect(resolveDamageValue(100, auras, { direction: "dealt", school: "shadow", attackKind: "spell" })) + .toBe(100); + }); + + it("preserves the generated rank-one 15-second duration", () => { + const definition = wow335DeathKnightBloodyVengeanceAuraDefinition(1); + expect(definition?.durationMs).toBe(15_000); + }); +}); diff --git a/src/game/wow335DeathKnightBloodyVengeanceRuntime.ts b/src/game/wow335DeathKnightBloodyVengeanceRuntime.ts new file mode 100644 index 00000000..39236503 --- /dev/null +++ b/src/game/wow335DeathKnightBloodyVengeanceRuntime.ts @@ -0,0 +1,73 @@ +import type { AuraDefinition } from "./combatAuras"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID = "talent-1944"; +export const WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_AURA_ID = "wow335:death-knight:bloody-vengeance"; + +const BLOODY_VENGEANCE_NODE = WOW335_TALENT_NODES.find( + (node) => node.id === WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_TALENT_ID, +); + +export interface Wow335DeathKnightBloodyVengeanceProfile { + readonly rank: number; + readonly physicalDamageBonusPerStack: number; + readonly durationMs: number; + readonly maxStacks: number; + readonly triggerSpellId: number; +} + +/** Read the exact per-rank values and linked aura child from the generated local talent row. */ +export function wow335DeathKnightBloodyVengeanceProfile( + rank: number, +): Wow335DeathKnightBloodyVengeanceProfile | null { + const normalizedRank = Math.trunc(rank); + const talentRank = BLOODY_VENGEANCE_NODE?.rankEffects[normalizedRank - 1]; + const description = BLOODY_VENGEANCE_NODE?.rankDescriptions[normalizedRank - 1]; + if (normalizedRank < 1 || !talentRank || !description || talentRank.procChance !== 100) return null; + + const values = description.match( + /^Gives you a (\d+(?:\.\d+)?)% bonus to physical damage you deal for (\d+(?:\.\d+)?) seconds after dealing a critical strike from a weapon swing, spell, or ability\. This effect stacks up to (\d+) times\.$/, + ); + const triggerSpellId = talentRank.effects.find((effect) => effect.triggerSpellId > 0)?.triggerSpellId ?? 0; + if (!values || triggerSpellId <= 0) return null; + + const physicalDamageBonusPerStack = Number(values[1]) / 100; + const durationMs = Number(values[2]) * 1_000; + const maxStacks = Number(values[3]); + if (!Number.isFinite(physicalDamageBonusPerStack) || physicalDamageBonusPerStack <= 0 + || !Number.isFinite(durationMs) || durationMs <= 0 + || !Number.isInteger(maxStacks) || maxStacks <= 0) return null; + return { rank: normalizedRank, physicalDamageBonusPerStack, durationMs, maxStacks, triggerSpellId }; +} + +/** Every eligible critical-damage event can add one stack; noncrit damage cannot trigger the talent. */ +export function wow335DeathKnightBloodyVengeanceShouldTrigger( + rank: number, + criticalDamageEvent: boolean, +): boolean { + return criticalDamageEvent && wow335DeathKnightBloodyVengeanceProfile(rank) !== null; +} + +/** The generated tooltip scopes the stack to physical damage, regardless of attack kind. */ +export function wow335DeathKnightBloodyVengeanceAuraDefinition( + rank: number, +): AuraDefinition | null { + const profile = wow335DeathKnightBloodyVengeanceProfile(rank); + if (!profile) return null; + return { + id: WOW335_DEATH_KNIGHT_BLOODY_VENGEANCE_AURA_ID, + name: "Bloody Vengeance", + description: `Critical strikes increase physical damage dealt by ${Math.round(profile.physicalDamageBonusPerStack * 100)}% per stack for ${profile.durationMs / 1_000} seconds, stacking up to ${profile.maxStacks} times.`, + disposition: "buff", + durationMs: profile.durationMs, + maxStacks: profile.maxStacks, + stackBehavior: "add", + modifiers: [{ + kind: "damage", + direction: "dealt", + operation: "percent", + school: "physical", + value: profile.physicalDamageBonusPerStack, + }], + }; +} diff --git a/src/game/wow335DeathKnightDancingRuneWeaponRuntime.test.ts b/src/game/wow335DeathKnightDancingRuneWeaponRuntime.test.ts new file mode 100644 index 00000000..ac3888dd --- /dev/null +++ b/src/game/wow335DeathKnightDancingRuneWeaponRuntime.test.ts @@ -0,0 +1,171 @@ +import { describe, expect, it } from "vitest"; +import generatedData from "./wow335AbilityData.generated.json"; +import { + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DURATION_MS, + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA, + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID, + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_EXCLUDED_UTILITY_SPELLS, + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DAMAGE_MULTIPLIER, + WOW335_DEATH_KNIGHT_DEATH_COIL_DAMAGE_SPELL_ID, + wow335DeathKnightDancingRuneWeaponCanMirrorEvent, + wow335DeathKnightDancingRuneWeaponDamage, + wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName, + wow335DeathKnightDancingRuneWeaponIsActive, + type Wow335DeathKnightDancingRuneWeaponOwnerEvent, +} from "./wow335DeathKnightDancingRuneWeaponRuntime"; + +describe("WoW Death Knight Dancing Rune Weapon runtime", () => { + it("uses the sourced 12-second duration and 50% reduced-damage child payload", () => { + const dancingRuneWeapon = generatedData.classes["death-knight"].find((ability) => + ability.ranks.some((rank) => rank.spellId === 49_028), + ); + const rank = dancingRuneWeapon?.ranks.find((candidate) => candidate.spellId === 49_028); + + expect(rank?.description).toContain("50% reduced damage"); + expect(rank).toMatchObject({ durationMs: 12_000, cooldownMs: 90_000, powerCost: 600 }); + expect(rank?.effects[2]).toMatchObject({ + effectType: 6, + auraType: 4, + basePoints: 10, + }); + expect(WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DURATION_MS).toBe(12_000); + expect(WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DAMAGE_MULTIPLIER).toBe(0.5); + expect(WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID) + .toBe("wow335-death-knight-dancing-rune-weapon"); + expect(WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA).toMatchObject({ + durationMs: 12_000, + maxStacks: 1, + utilityTags: ["wow335-death-knight-dancing-rune-weapon"], + }); + }); + + it("is active at summon and expires exactly at 12 seconds", () => { + expect(wow335DeathKnightDancingRuneWeaponIsActive(1_000, 1_000)).toBe(true); + expect(wow335DeathKnightDancingRuneWeaponIsActive(1_000, 12_999)).toBe(true); + expect(wow335DeathKnightDancingRuneWeaponIsActive(1_000, 13_000)).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponIsActive(1_000, 999)).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponIsActive(Number.NaN, 1_000)).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponIsActive(1_000, Number.POSITIVE_INFINITY)).toBe(false); + }); + + it("allows a living hostile modeled melee event", () => { + const event: Wow335DeathKnightDancingRuneWeaponOwnerEvent = { + kind: "melee", + targetAlive: true, + targetHostile: true, + }; + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent(event)).toBe(true); + }); + + it("requires a living hostile target for every event kind", () => { + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + kind: "melee", + targetAlive: false, + targetHostile: true, + })).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + kind: "melee", + targetAlive: true, + targetHostile: false, + })).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + kind: "spell", + spellId: 49_895, + ownerKnowsSpell: true, + targetAlive: true, + targetHostile: false, + isPositiveSpell: false, + hasSummonEffect: false, + isAreaTargeted: false, + actionTargetIsOwner: false, + })).toBe(false); + }); + + it("requires learned spells except for Death Coil's damage child", () => { + const event: Wow335DeathKnightDancingRuneWeaponOwnerEvent = { + kind: "spell", + spellId: 49_895, + ownerKnowsSpell: false, + targetAlive: true, + targetHostile: true, + isPositiveSpell: false, + hasSummonEffect: false, + isAreaTargeted: false, + actionTargetIsOwner: false, + }; + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent(event)).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + ...event, + spellId: WOW335_DEATH_KNIGHT_DEATH_COIL_DAMAGE_SPELL_ID, + })).toBe(true); + }); + + it("rejects each source-listed DK utility spell", () => { + const baseEvent: Wow335DeathKnightDancingRuneWeaponOwnerEvent = { + kind: "spell", + spellId: 49_895, + ownerKnowsSpell: true, + targetAlive: true, + targetHostile: true, + isPositiveSpell: false, + hasSummonEffect: false, + isAreaTargeted: false, + actionTargetIsOwner: false, + }; + + for (const excludedUtilitySpell of WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_EXCLUDED_UTILITY_SPELLS) { + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + ...baseEvent, + excludedUtilitySpell, + })).toBe(false); + } + }); + + it("maps generated spell names to source utility exclusions", () => { + expect(wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName("Death and Decay")) + .toBe("death-and-decay"); + expect(wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName("Anti-Magic Shell")) + .toBe("anti-magic-shell"); + expect(wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName("Death Strike")).toBeUndefined(); + }); + + it("rejects positive spells, summons, and repeated area events on secondary targets", () => { + const baseEvent: Wow335DeathKnightDancingRuneWeaponOwnerEvent = { + kind: "spell", + spellId: 49_895, + ownerKnowsSpell: true, + targetAlive: true, + targetHostile: true, + isPositiveSpell: false, + hasSummonEffect: false, + isAreaTargeted: false, + actionTargetIsOwner: false, + }; + + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ ...baseEvent, isPositiveSpell: true })).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ ...baseEvent, hasSummonEffect: true })).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + ...baseEvent, + isAreaTargeted: true, + actionTargetIsOwner: false, + })).toBe(false); + expect(wow335DeathKnightDancingRuneWeaponCanMirrorEvent({ + ...baseEvent, + isAreaTargeted: true, + actionTargetIsOwner: true, + })).toBe(true); + }); + + it("mirrors an attack at half damage and floors to whole damage", () => { + expect(wow335DeathKnightDancingRuneWeaponDamage(101)).toBe(50); + expect(wow335DeathKnightDancingRuneWeaponDamage(100)).toBe(50); + expect(wow335DeathKnightDancingRuneWeaponDamage(1)).toBe(0); + }); + + it("returns zero for non-positive or non-finite attack damage", () => { + expect(wow335DeathKnightDancingRuneWeaponDamage(0)).toBe(0); + expect(wow335DeathKnightDancingRuneWeaponDamage(-2)).toBe(0); + expect(wow335DeathKnightDancingRuneWeaponDamage(Number.NaN)).toBe(0); + expect(wow335DeathKnightDancingRuneWeaponDamage(Number.POSITIVE_INFINITY)).toBe(0); + }); +}); diff --git a/src/game/wow335DeathKnightDancingRuneWeaponRuntime.ts b/src/game/wow335DeathKnightDancingRuneWeaponRuntime.ts new file mode 100644 index 00000000..a2f0707b --- /dev/null +++ b/src/game/wow335DeathKnightDancingRuneWeaponRuntime.ts @@ -0,0 +1,103 @@ +/** + * Dancing Rune Weapon (49028) mirrors the Death Knight's damaging attacks at + * half damage. Local Spell.dbc links its tooltip to child 51906, whose third + * effect applies -50% damage done. The parent's third effect is only a dummy + * payload with 10 base points; it does not override that child scaling. + */ +export const WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DAMAGE_MULTIPLIER = 0.5; +export const WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DURATION_MS = 12_000; +export const WOW335_DEATH_KNIGHT_DEATH_COIL_DAMAGE_SPELL_ID = 47_632; +export const WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_ABILITY_ID = "wow335-death-knight-dancing-rune-weapon"; +export const WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA_TAG = "wow335-death-knight-dancing-rune-weapon"; + +export const WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA = { + id: "wow335:death-knight:dancing-rune-weapon", + name: "Dancing Rune Weapon", + description: "Mirrors eligible Death Knight attacks at 50% damage for 12 seconds.", + disposition: "buff" as const, + durationMs: WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DURATION_MS, + maxStacks: 1, + stackBehavior: "replace" as const, + utilityTags: [WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_AURA_TAG], +}; + +/** + * The AzerothCore 3.3.5-derived DRW handler excludes these utility spells. It + * checks spell-family flags; this explicit tag lets callers provide that + * classification without making this helper depend on catalog data. + */ +export const WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_EXCLUDED_UTILITY_SPELLS = [ + "raise-dead", + "raise-ally", + "death-grip", + "dark-command", + "death-pact", + "death-and-decay", + "anti-magic-shell", +] as const; + +export type Wow335DeathKnightDancingRuneWeaponExcludedUtilitySpell = + (typeof WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_EXCLUDED_UTILITY_SPELLS)[number]; + +export function wow335DeathKnightDancingRuneWeaponExcludedUtilitySpellForName( + abilityName: string, +): Wow335DeathKnightDancingRuneWeaponExcludedUtilitySpell | undefined { + const normalizedName = abilityName.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-"); + return WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_EXCLUDED_UTILITY_SPELLS + .find((name) => name === normalizedName); +} + +export type Wow335DeathKnightDancingRuneWeaponOwnerEvent = + | { + kind: "melee"; + targetAlive: boolean; + targetHostile: boolean; + } + | { + kind: "spell"; + spellId: number; + /** Whether this spell is represented in the owner's learned spell set. */ + ownerKnowsSpell: boolean; + targetAlive: boolean; + targetHostile: boolean; + isPositiveSpell: boolean; + hasSummonEffect: boolean; + isAreaTargeted: boolean; + /** Source filters repeated AoE procs when the proc target is not the owner. */ + actionTargetIsOwner: boolean; + excludedUtilitySpell?: Wow335DeathKnightDancingRuneWeaponExcludedUtilitySpell; + }; + +/** The Rune Weapon exists for the source-defined 12-second window. */ +export function wow335DeathKnightDancingRuneWeaponIsActive( + summonedAtMs: number, + nowMs: number, +): boolean { + if (!Number.isFinite(summonedAtMs) || !Number.isFinite(nowMs)) return false; + return nowMs >= summonedAtMs + && nowMs < summonedAtMs + WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DURATION_MS; +} + +/** + * Check whether an explicit owner event meets the server handler's mirror + * gates. The caller supplies combat facts so this helper can be reused for + * player and generated-companion actions without inventing stat behavior. + */ +export function wow335DeathKnightDancingRuneWeaponCanMirrorEvent( + event: Wow335DeathKnightDancingRuneWeaponOwnerEvent, +): boolean { + if (!event.targetAlive || !event.targetHostile) return false; + if (event.kind === "melee") return true; + + if (event.spellId <= 0 || !Number.isFinite(event.spellId)) return false; + if (!event.ownerKnowsSpell && event.spellId !== WOW335_DEATH_KNIGHT_DEATH_COIL_DAMAGE_SPELL_ID) return false; + if (event.excludedUtilitySpell || event.isPositiveSpell || event.hasSummonEffect) return false; + if (event.isAreaTargeted && !event.actionTargetIsOwner) return false; + return true; +} + +/** Apply the sourced half-damage scaling to a mirrored attack. */ +export function wow335DeathKnightDancingRuneWeaponDamage(ownerAttackDamage: number): number { + if (!Number.isFinite(ownerAttackDamage) || ownerAttackDamage <= 0) return 0; + return Math.floor(ownerAttackDamage * WOW335_DEATH_KNIGHT_DANCING_RUNE_WEAPON_DAMAGE_MULTIPLIER); +} diff --git a/src/game/wow335DeathKnightDesolation.integration.test.ts b/src/game/wow335DeathKnightDesolation.integration.test.ts new file mode 100644 index 00000000..b53d21f7 --- /dev/null +++ b/src/game/wow335DeathKnightDesolation.integration.test.ts @@ -0,0 +1,132 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilitiesForCharacter } from "./abilityCatalog"; +import { installCombatClock } from "./combatClock"; +import { createDeathKnightRunes } from "./combatActors"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { + WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID, + WOW335_DEATH_KNIGHT_DESOLATION_TALENT_ID, +} from "./wow335DeathKnightDesolationRuntime"; + +const TARGET_ID = "desolation-target"; +const PARTY_SEED = "desolation-party-dk"; + +let restoreClock: (() => void) | undefined; + +function bloodStrike() { + const found = abilitiesForCharacter("death-knight", null) + .find((ability) => ability.id === WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID); + if (!found) throw new Error("Missing generated Blood Strike ability."); + return found; +} + +function registerTarget() { + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Desolation target", + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); + useCombatStore.getState().selectMob(TARGET_ID); +} + +function guaranteedLandedBloodStrike(sourceActorId: string, now: number) { + const strike = bloodStrike(); + return useCombatStore.getState().damageMob( + TARGET_ID, + 100, + now, + { actorId: sourceActorId, role: "damage", abilityId: strike.id }, + "physical", + { + attackKind: "melee", + seed: `${sourceActorId}:${now}:desolation-test`, + abilityId: strike.id, + rules: { + canMiss: false, + canDodge: false, + canParry: false, + canBlock: false, + canCrit: false, + resistanceMode: "none", + }, + }, + ); +} + +describe("WoW Death Knight Desolation combat integration", () => { + beforeEach(() => { + restoreClock = installCombatClock(() => 1_000); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "death-knight", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty( + "wow335-death-knight-desolation", 80, useCombatStore.getState().health, "tank", 5, + ); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_DESOLATION_TALENT_ID]: 5 }, + deathKnightRunes: createDeathKnightRunes(1_000), + })); + registerTarget(); + }); + + afterEach(() => { + restoreClock?.(); + restoreClock = undefined; + }); + + it("activates the generated rank aura for the player after a landed Blood Strike", () => { + const result = guaranteedLandedBloodStrike(PLAYER_AGGRO_ID, 1_000); + expect(result.combatResult?.landed).toBe(true); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: PLAYER_AURA_ENTITY_ID, + targetId: PLAYER_AURA_ENTITY_ID, + appliedAt: 1_000, + expiresAt: 21_000, + definition: expect.objectContaining({ + name: "Desolation", + modifiers: [expect.objectContaining({ kind: "damage", direction: "dealt", value: 0.05 })], + }), + })); + }); + + it("uses a generated companion's own talent rank and source-owned aura", () => { + const talentRanks = { [WOW335_DEATH_KNIGHT_DESOLATION_TALENT_ID]: 3 }; + const member = createConfiguredPartyMember({ + name: "Desolation DK", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + talentRanks, + role: "damage", + }, 80, 0, PARTY_SEED); + usePartyStore.setState({ members: [{ + ...member, + gearStats: EMPTY_ITEM_STATS, + talentRanks, + runes: createDeathKnightRunes(1_000), + }] }); + useCombatStore.getState().synchronizeActors(); + + const result = guaranteedLandedBloodStrike(member.id, 2_000); + expect(result.combatResult?.landed).toBe(true); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: member.id, + targetId: member.id, + appliedAt: 2_000, + expiresAt: 22_000, + definition: expect.objectContaining({ + name: "Desolation", + modifiers: [expect.objectContaining({ kind: "damage", direction: "dealt", value: 0.03 })], + }), + })); + }); +}); diff --git a/src/game/wow335DeathKnightDesolationRuntime.test.ts b/src/game/wow335DeathKnightDesolationRuntime.test.ts new file mode 100644 index 00000000..c38a93b8 --- /dev/null +++ b/src/game/wow335DeathKnightDesolationRuntime.test.ts @@ -0,0 +1,53 @@ +import { describe, expect, it } from "vitest"; +import { applyAura, resolveDamageValue } from "./combatAuras"; +import { + WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID, + wow335DeathKnightDesolationAuraDefinition, + wow335DeathKnightDesolationProfile, + wow335DeathKnightDesolationShouldTrigger, +} from "./wow335DeathKnightDesolationRuntime"; + +describe("WoW Death Knight Desolation", () => { + it("reads +1–5% and the 20-second duration from the generated talent ranks", () => { + expect([1, 2, 3, 4, 5].map(wow335DeathKnightDesolationProfile)).toEqual([ + { rank: 1, damageBonus: 0.01, durationMs: 20_000, triggerSpellId: 63_583 }, + { rank: 2, damageBonus: 0.02, durationMs: 20_000, triggerSpellId: 66_800 }, + { rank: 3, damageBonus: 0.03, durationMs: 20_000, triggerSpellId: 66_801 }, + { rank: 4, damageBonus: 0.04, durationMs: 20_000, triggerSpellId: 66_802 }, + { rank: 5, damageBonus: 0.05, durationMs: 20_000, triggerSpellId: 66_803 }, + ]); + expect(wow335DeathKnightDesolationProfile(0)).toBeNull(); + expect(wow335DeathKnightDesolationProfile(6)).toBeNull(); + }); + + it("triggers only for a landed Blood Strike with a learned Desolation rank", () => { + expect(wow335DeathKnightDesolationShouldTrigger(5, WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID, true)).toBe(true); + expect(wow335DeathKnightDesolationShouldTrigger(5, WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID, false)).toBe(false); + expect(wow335DeathKnightDesolationShouldTrigger(5, WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID, true, false)).toBe(false); + expect(wow335DeathKnightDesolationShouldTrigger(0, WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID, true)).toBe(false); + expect(wow335DeathKnightDesolationShouldTrigger(5, "wow335-death-knight-plague-strike", true)).toBe(false); + }); + + it("applies the rank's all-damage bonus and refreshes the 20-second aura", () => { + const definition = wow335DeathKnightDesolationAuraDefinition(5); + expect(definition).not.toBeNull(); + expect(definition?.modifiers).toEqual([{ + kind: "damage", + direction: "dealt", + operation: "percent", + value: 0.05, + }]); + + const first = applyAura([], { definition: definition!, sourceId: "dk", targetId: "dk", now: 1_000 }); + expect(first.aura.expiresAt).toBe(21_000); + expect(resolveDamageValue(100, first.auras, { direction: "dealt", school: "physical", attackKind: "melee" })) + .toBe(105); + expect(resolveDamageValue(100, first.auras, { direction: "dealt", school: "shadow", attackKind: "spell" })) + .toBe(105); + + const refreshed = applyAura(first.auras, { definition: definition!, sourceId: "dk", targetId: "dk", now: 15_000 }); + expect(refreshed.auras).toHaveLength(1); + expect(refreshed.aura.appliedAt).toBe(15_000); + expect(refreshed.aura.expiresAt).toBe(35_000); + }); +}); diff --git a/src/game/wow335DeathKnightDesolationRuntime.ts b/src/game/wow335DeathKnightDesolationRuntime.ts new file mode 100644 index 00000000..05defd19 --- /dev/null +++ b/src/game/wow335DeathKnightDesolationRuntime.ts @@ -0,0 +1,83 @@ +import type { AuraDefinition } from "./combatAuras"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_DEATH_KNIGHT_DESOLATION_TALENT_ID = "talent-2285"; +export const WOW335_DEATH_KNIGHT_BLOOD_STRIKE_SPELL_ID = 45_902; +export const WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID = "wow335-death-knight-blood-strike"; +export const WOW335_DEATH_KNIGHT_DESOLATION_AURA_ID = "wow335:death-knight:desolation"; + +const DESOLATION_NODE = WOW335_TALENT_NODES.find( + (node) => node.id === WOW335_DEATH_KNIGHT_DESOLATION_TALENT_ID, +); + +export interface Wow335DeathKnightDesolationProfile { + readonly rank: number; + readonly damageBonus: number; + readonly durationMs: number; + readonly triggerSpellId: number; +} + +/** + * Read the rank value and child trigger directly from the generated local DBC + * talent row. The resolved tooltip is the source for the hidden child buff's + * percentage and duration; fail closed if that generated text no longer fits. + */ +export function wow335DeathKnightDesolationProfile( + rank: number, +): Wow335DeathKnightDesolationProfile | null { + const normalizedRank = Math.trunc(rank); + const talentRank = DESOLATION_NODE?.rankEffects[normalizedRank - 1]; + const description = DESOLATION_NODE?.rankDescriptions[normalizedRank - 1]; + if (normalizedRank < 1 || !talentRank || !description || talentRank.procChance !== 100) return null; + + const values = description.match( + /^Your Blood Strikes cause you to deal (\d+(?:\.\d+)?)% additional damage with all attacks for the next (\d+(?:\.\d+)?) seconds\.$/, + ); + const triggerSpellId = talentRank.effects.find((effect) => effect.triggerSpellId > 0)?.triggerSpellId ?? 0; + if (!values || triggerSpellId <= 0) return null; + + const damageBonus = Number(values[1]) / 100; + const durationMs = Number(values[2]) * 1_000; + if (!Number.isFinite(damageBonus) || damageBonus <= 0 || !Number.isFinite(durationMs) || durationMs <= 0) return null; + return { rank: normalizedRank, damageBonus, durationMs, triggerSpellId }; +} + +/** A landed Blood Strike refreshes the source-defined child buff. */ +export function wow335DeathKnightDesolationShouldTrigger( + rank: number, + triggeringAbilityId: string, + hitLanded: boolean, + isMainHandHit = true, +): boolean { + return hitLanded + && isMainHandHit + && triggeringAbilityId === WOW335_DEATH_KNIGHT_BLOOD_STRIKE_ABILITY_ID + && wow335DeathKnightDesolationProfile(rank) !== null; +} + +/** + * Build the generic all-school damage-done aura used by both player and + * generated-companion casts. No school or attack-kind filter is present: + * the generated tooltip says "all attacks". + */ +export function wow335DeathKnightDesolationAuraDefinition( + rank: number, +): AuraDefinition | null { + const profile = wow335DeathKnightDesolationProfile(rank); + if (!profile) return null; + return { + id: WOW335_DEATH_KNIGHT_DESOLATION_AURA_ID, + name: "Desolation", + description: `Blood Strike increases damage dealt by ${Math.round(profile.damageBonus * 100)}% for ${profile.durationMs / 1_000} seconds.`, + disposition: "buff", + durationMs: profile.durationMs, + maxStacks: 1, + stackBehavior: "replace", + modifiers: [{ + kind: "damage", + direction: "dealt", + operation: "percent", + value: profile.damageBonus, + }], + }; +} diff --git a/src/game/wow335DeathKnightEpidemicRuntime.test.ts b/src/game/wow335DeathKnightEpidemicRuntime.test.ts new file mode 100644 index 00000000..70e203a4 --- /dev/null +++ b/src/game/wow335DeathKnightEpidemicRuntime.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from "vitest"; +import type { AbilityEffect } from "./abilityCatalog"; +import { + wow335DeathKnightEpidemicDotEffect, + wow335DeathKnightEpidemicDurationMs, +} from "./wow335DeathKnightEpidemicRuntime"; + +const frostFever: AbilityEffect = { + kind: "dot", + coefficient: 0.22, + ticks: 5, + intervalMs: 3_000, + tag: "frost-fever", +}; + +describe("WoW Death Knight Epidemic", () => { + it("uses the generated 3- and 6-second disease duration ranks", () => { + expect([0, 1, 2].map(wow335DeathKnightEpidemicDurationMs)).toEqual([0, 3_000, 6_000]); + }); + + it("adds one periodic tick per three seconds to both Death Knight diseases", () => { + expect(wow335DeathKnightEpidemicDotEffect(frostFever, 1)).toMatchObject({ ticks: 6 }); + expect(wow335DeathKnightEpidemicDotEffect({ ...frostFever, tag: "blood-plague" }, 2)) + .toMatchObject({ ticks: 7 }); + }); + + it("leaves unrelated periodic effects and zero-rank diseases unchanged", () => { + const unrelated = { ...frostFever, tag: "other-disease" } as AbilityEffect; + expect(wow335DeathKnightEpidemicDotEffect(frostFever, 0)).toBe(frostFever); + expect(wow335DeathKnightEpidemicDotEffect(unrelated, 2)).toBe(unrelated); + }); +}); diff --git a/src/game/wow335DeathKnightEpidemicRuntime.ts b/src/game/wow335DeathKnightEpidemicRuntime.ts new file mode 100644 index 00000000..238ca421 --- /dev/null +++ b/src/game/wow335DeathKnightEpidemicRuntime.ts @@ -0,0 +1,30 @@ +import type { AbilityEffect } from "./abilityCatalog"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_DEATH_KNIGHT_EPIDEMIC_TALENT_ID = "talent-1963"; + +const DISEASE_TAGS = new Set(["blood-plague", "frost-fever"]); +const EPIDEMIC_TALENT = WOW335_TALENT_NODES.find( + (node) => node.id === WOW335_DEATH_KNIGHT_EPIDEMIC_TALENT_ID, +); + +/** Read the added disease duration directly from the local generated DBC rank effect. */ +export function wow335DeathKnightEpidemicDurationMs(rank: number): number { + const normalizedRank = Math.trunc(rank); + const effect = EPIDEMIC_TALENT?.rankEffects[normalizedRank - 1]?.effects.find( + (candidate) => candidate.auraType === 107, + ); + return normalizedRank > 0 ? Math.max(0, effect?.basePoints ?? 0) : 0; +} + +/** Extend only Death Knight Blood Plague and Frost Fever by the sourced duration. */ +export function wow335DeathKnightEpidemicDotEffect( + effect: AbilityEffect, + rank: number, +): AbilityEffect { + if (effect.kind !== "dot" || !effect.tag || !DISEASE_TAGS.has(effect.tag)) return effect; + const durationMs = wow335DeathKnightEpidemicDurationMs(rank); + if (durationMs <= 0 || effect.intervalMs <= 0) return effect; + const additionalTicks = Math.floor(durationMs / effect.intervalMs); + return additionalTicks > 0 ? { ...effect, ticks: effect.ticks + additionalTicks } : effect; +} diff --git a/src/game/wow335DeathKnightMercilessCombat.integration.test.ts b/src/game/wow335DeathKnightMercilessCombat.integration.test.ts new file mode 100644 index 00000000..a8b15e6b --- /dev/null +++ b/src/game/wow335DeathKnightMercilessCombat.integration.test.ts @@ -0,0 +1,189 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { createDeathKnightRunes } from "./combatActors"; +import { useCombatStore } from "./combatStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + advanceDungeonPartyCombat, + resetPartyRuntimeClock, +} from "./partyRuntime"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { abilitiesForCharacter, learnedAbilityForBuild } from "./abilityCatalog"; + +const TARGET_ID = "merciless-combat-target"; +const TARGET_MAX_HEALTH = 1_000_000; +const CAST_AT = 1_000; + +function setTargetHealthFraction(fraction: number): void { + useCombatStore.setState((state) => ({ mobs: { + ...state.mobs, + [TARGET_ID]: { + ...state.mobs[TARGET_ID], + health: Math.round(TARGET_MAX_HEALTH * fraction), + dead: false, + }, + } })); +} + +function targetDamageEvent(sourceActorId: string, abilityId: string, occurredAt: number) { + return useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" + && event.sourceActorId === sourceActorId + && event.targetActorId === TARGET_ID + && event.abilityId === abilityId + && event.occurredAt === occurredAt + )); +} + +function resolvePlayerStrike( + abilityName: string, + rank: number, + targetHealthFraction: number, + includeFirstDiseaseTick = false, +) { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "death-knight", level: 80, xp: 0 }); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, "talent-1993": rank }, + gearStats: { ...EMPTY_ITEM_STATS, hitRating: 10_000, expertiseRating: 10_000 }, + })); + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Merciless Combat target", + maxHealth: TARGET_MAX_HEALTH, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); + useCombatStore.getState().selectMob(TARGET_ID); + setTargetHealthFraction(targetHealthFraction); + + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.name === abilityName); + if (!ability) throw new Error(`Missing Death Knight ability: ${abilityName}`); + expect(useCombatStore.getState().castAbility(ability.id, [0, 0, 0], CAST_AT).ok).toBe(true); + const direct = targetDamageEvent(PLAYER_AGGRO_ID, ability.id, CAST_AT); + if (!direct) throw new Error(`${abilityName} did not produce a player damage event.`); + + let firstDiseaseTick: ReturnType; + if (includeFirstDiseaseTick) { + useCombatStore.getState().tick(0.1, CAST_AT + 3_000); + firstDiseaseTick = useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" + && event.sourceActorId === PLAYER_AGGRO_ID + && event.targetActorId === TARGET_ID + && event.abilityId === ability.id + && event.occurredAt === CAST_AT + 3_000 + )); + if (!firstDiseaseTick) throw new Error("Icy Touch did not produce its first disease tick."); + } + return { direct, firstDiseaseTick }; +} + +function resolveCompanionIcyTouch(rank: number, targetHealthFraction: number) { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "priest", level: 80, xp: 0 }); + const seed = `merciless-combat-companion-${rank}-${targetHealthFraction}`; + const configured = createConfiguredPartyMember({ + name: "Frost Death Knight", + classId: "death-knight", + specialization: "Frost", + specializationId: "death-knight:frost", + talentTreeId: "death-knight-frost", + talentRanks: { "talent-1993": rank }, + role: "damage", + }, 80, 0, seed); + const icyTouch = abilitiesForCharacter("death-knight", null).find((ability) => ability.name === "Icy Touch"); + if (!icyTouch) throw new Error("Death Knight Icy Touch is missing from the ability catalog."); + const learnedIcyTouch = learnedAbilityForBuild(icyTouch, 80, configured.talentRanks); + if (!learnedIcyTouch) throw new Error("Companion Death Knight did not learn Icy Touch."); + + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ + members: [{ + ...configured, + gearStats: { ...EMPTY_ITEM_STATS, hitRating: 10_000, expertiseRating: 10_000 }, + resource: 100, + maxResource: 100, + resourcePools: { ...configured.resourcePools, "runic-power": 100 }, + runes: createDeathKnightRunes(CAST_AT), + globalCooldownEndsAt: 0, + nextActionAt: 0, + activeCast: { + abilityId: learnedIcyTouch.id, + school: "frost", + mode: "cast", + startedAt: CAST_AT, + completesAt: CAST_AT, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: TARGET_ID, + }, + activeCastTargetId: TARGET_ID, + status: "attacking", + }], + command: "attack", + activeMobId: TARGET_ID, + }); + registerPartyRuntimePosition(configured.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Merciless Combat companion target", + maxHealth: TARGET_MAX_HEALTH, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); + useCombatStore.getState().damageMob(TARGET_ID, 1, 100); + updatePartyRuntimeTargetVisibility(configured.id, TARGET_ID, true); + setTargetHealthFraction(targetHealthFraction); + + advanceDungeonPartyCombat(CAST_AT); + const hit = targetDamageEvent(configured.id, learnedIcyTouch.id, CAST_AT); + if (!hit) throw new Error("Companion Icy Touch did not produce a damage event."); + return hit; +} + +describe("WoW Death Knight Merciless Combat integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + }); + + it("applies both player ranks below 35%, with the strict threshold and spell-list controls", () => { + const baseline = resolvePlayerStrike("Icy Touch", 0, 0.34).direct; + const rankOne = resolvePlayerStrike("Icy Touch", 1, 0.34).direct; + const rankTwo = resolvePlayerStrike("Icy Touch", 2, 0.34).direct; + const atThreshold = resolvePlayerStrike("Icy Touch", 2, 0.35).direct; + const otherStrikeBaseline = resolvePlayerStrike("Plague Strike", 0, 0.34).direct; + const otherStrikeWithTalent = resolvePlayerStrike("Plague Strike", 2, 0.34).direct; + + expect(rankOne.rawAmount).toBe(Math.round(baseline.rawAmount * 1.06)); + expect(rankTwo.rawAmount).toBe(Math.round(baseline.rawAmount * 1.12)); + expect(atThreshold.rawAmount).toBe(baseline.rawAmount); + expect(otherStrikeWithTalent.rawAmount).toBe(otherStrikeBaseline.rawAmount); + }); + + it("does not apply the execute bonus to Icy Touch's periodic Fever ticks", () => { + const baseline = resolvePlayerStrike("Icy Touch", 0, 0.34, true).firstDiseaseTick; + const talented = resolvePlayerStrike("Icy Touch", 2, 0.34, true).firstDiseaseTick; + expect(talented?.rawAmount).toBe(baseline?.rawAmount); + }); + + it("applies both ranks to generated companion direct hits only below 35%", () => { + const baseline = resolveCompanionIcyTouch(0, 0.34); + const rankOne = resolveCompanionIcyTouch(1, 0.34); + const rankTwo = resolveCompanionIcyTouch(2, 0.34); + const atThreshold = resolveCompanionIcyTouch(2, 0.35); + + expect(rankOne.rawAmount).toBe(Math.round(baseline.rawAmount * 1.06)); + expect(rankTwo.rawAmount).toBe(Math.round(baseline.rawAmount * 1.12)); + expect(atThreshold.rawAmount).toBe(baseline.rawAmount); + }); +}); diff --git a/src/game/wow335DeathKnightMercilessCombatRuntime.test.ts b/src/game/wow335DeathKnightMercilessCombatRuntime.test.ts new file mode 100644 index 00000000..fc2cc823 --- /dev/null +++ b/src/game/wow335DeathKnightMercilessCombatRuntime.test.ts @@ -0,0 +1,44 @@ +import { describe, expect, it } from "vitest"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import { + WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_HEALTH_THRESHOLD, + WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_TALENT_ID, + wow335DeathKnightMercilessCombatDamage, + wow335DeathKnightMercilessCombatDamageBonusPercent, + wow335DeathKnightMercilessCombatRankBonusPercent, +} from "./wow335DeathKnightMercilessCombatRuntime"; + +describe("WoW Death Knight Merciless Combat", () => { + it("uses the local generated 6% and 12% rank payloads", () => { + const talent = WOW335_TALENT_NODES.find((node) => node.id === WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_TALENT_ID); + expect(talent).toMatchObject({ + name: "Merciless Combat", + rankSpellIds: [49024, 49538], + rankDescriptions: [ + expect.stringContaining("additional 6% damage"), + expect.stringContaining("additional 12% damage"), + ], + }); + expect([0, 1, 2, 3].map(wow335DeathKnightMercilessCombatRankBonusPercent)).toEqual([0, 6, 12, 0]); + }); + + it("applies the rank bonus only to the four named spells below 35% health", () => { + const eligibleSpells = ["Icy Touch", "Howling Blast", "Obliterate", "Frost Strike"]; + for (const abilityName of eligibleSpells) { + expect(wow335DeathKnightMercilessCombatDamageBonusPercent(1, abilityName, 0.349)).toBe(6); + expect(wow335DeathKnightMercilessCombatDamageBonusPercent(2, abilityName, 0.349)).toBe(12); + expect(wow335DeathKnightMercilessCombatDamageBonusPercent(2, abilityName, + WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_HEALTH_THRESHOLD)).toBe(0); + } + expect(wow335DeathKnightMercilessCombatDamageBonusPercent(2, "Death Coil", 0.1)).toBe(0); + expect(wow335DeathKnightMercilessCombatDamageBonusPercent(2, "Howling Blast", 0.5)).toBe(0); + expect(wow335DeathKnightMercilessCombatDamageBonusPercent(0, "Howling Blast", 0.1)).toBe(0); + expect(wow335DeathKnightMercilessCombatDamageBonusPercent(2, "Howling Blast", Number.NaN)).toBe(0); + }); + + it("adds the selected percentage to the hit amount", () => { + expect(wow335DeathKnightMercilessCombatDamage(1_000, 1, "Icy Touch", 0.34)).toBe(1_060); + expect(wow335DeathKnightMercilessCombatDamage(1_000, 2, "Frost Strike", 0.34)).toBe(1_120); + expect(wow335DeathKnightMercilessCombatDamage(1_000, 2, "Frost Strike", 0.35)).toBe(1_000); + }); +}); diff --git a/src/game/wow335DeathKnightMercilessCombatRuntime.ts b/src/game/wow335DeathKnightMercilessCombatRuntime.ts new file mode 100644 index 00000000..a067368f --- /dev/null +++ b/src/game/wow335DeathKnightMercilessCombatRuntime.ts @@ -0,0 +1,53 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_TALENT_ID = "talent-1993"; +export const WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_HEALTH_THRESHOLD = 0.35; + +const MERCILESS_COMBAT_SPELL_NAMES = new Set([ + "Icy Touch", + "Howling Blast", + "Obliterate", + "Frost Strike", +]); +const MERCILESS_COMBAT_TALENT = WOW335_TALENT_NODES.find( + (node) => node.id === WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_TALENT_ID, +); + +/** Read the named spell's bonus from the local generated talent rank payload. */ +export function wow335DeathKnightMercilessCombatRankBonusPercent(rank: number): number { + const normalizedRank = Math.trunc(rank); + if (normalizedRank < 1) return 0; + const rankEffect = MERCILESS_COMBAT_TALENT?.rankEffects[normalizedRank - 1]; + const effect = rankEffect?.effects.find((candidate) => ( + candidate.auraType === 112 && candidate.miscValue === 7277 + )); + return Math.max(0, effect?.basePoints ?? 0); +} + +/** Return the source-ranked bonus only for its four named abilities below 35% target health. */ +export function wow335DeathKnightMercilessCombatDamageBonusPercent( + rank: number, + abilityName: string, + targetHealthFraction: number, +): number { + if (!MERCILESS_COMBAT_SPELL_NAMES.has(abilityName) + || !Number.isFinite(targetHealthFraction) + || targetHealthFraction < 0 + || targetHealthFraction >= WOW335_DEATH_KNIGHT_MERCILESS_COMBAT_HEALTH_THRESHOLD) return 0; + return wow335DeathKnightMercilessCombatRankBonusPercent(rank); +} + +/** Apply Merciless Combat to one resolved hit before target mitigation. */ +export function wow335DeathKnightMercilessCombatDamage( + baseDamage: number, + rank: number, + abilityName: string, + targetHealthFraction: number, +): number { + const bonusPercent = wow335DeathKnightMercilessCombatDamageBonusPercent( + rank, + abilityName, + targetHealthFraction, + ); + return baseDamage * (1 + bonusPercent / 100); +} diff --git a/src/game/wow335DeathKnightReaping.integration.test.ts b/src/game/wow335DeathKnightReaping.integration.test.ts new file mode 100644 index 00000000..a4b4a8a0 --- /dev/null +++ b/src/game/wow335DeathKnightReaping.integration.test.ts @@ -0,0 +1,237 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { abilitiesForCharacter } from "./abilityCatalog"; +import { installCombatClock } from "./combatClock"; +import { createDeathKnightRunes } from "./combatActors"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + advanceDungeonPartyCombat, + resetPartyRuntimeClock, +} from "./partyRuntime"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { WOW335_DEATH_KNIGHT_REAPING_TALENT_ID } from "./wow335DeathKnightReapingRuntime"; + +const TARGET_ID = "reaping-target"; +const PARTY_SEED = "wow335-death-knight-reaping"; +let restoreClock: (() => void) | undefined; + +function bloodStrike() { + const found = abilitiesForCharacter("death-knight", null).find((ability) => ability.name === "Blood Strike"); + if (!found) throw new Error("Missing generated Death Knight Blood Strike."); + return found; +} + +function pestilence() { + const found = abilitiesForCharacter("death-knight", null).find((ability) => ability.name === "Pestilence"); + if (!found) throw new Error("Missing generated Death Knight Pestilence."); + return found; +} + +function registerTarget() { + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Reaping target", + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); + useCombatStore.getState().selectMob(TARGET_ID); +} + +describe("WoW Death Knight Reaping combat integration", () => { + beforeEach(() => { + restoreClock = installCombatClock(() => 1_000); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "death-knight", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("wow335-death-knight-reaping", 80, + useCombatStore.getState().health, "tank", 5); + registerTarget(); + }); + + afterEach(() => { + restoreClock?.(); + restoreClock = undefined; + }); + + it("keeps the player's Reaping conversion after Blood Strike's second direct damage packet", () => { + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_REAPING_TALENT_ID]: 3 }, + deathKnightRunes: createDeathKnightRunes(1_000), + })); + const cast = useCombatStore.getState().castAbility(bloodStrike().id, { + targetActorId: TARGET_ID, + now: 1_000, + }); + + expect(cast.ok).toBe(true); + expect(useCombatStore.getState().combatEvents.filter((event) => ( + event.sourceActorId === "__player__" && event.abilityId === bloodStrike().id && event.kind === "damage" + ))).toHaveLength(2); + expect(useCombatStore.getState().deathKnightRunes[0]).toMatchObject({ + slot: 0, + baseType: "blood", + type: "death", + readyAt: expect.any(Number), + deathRuneExpiresAt: 31_000, + deathRuneConversions: [{ source: "reaping", expiresAt: 31_000 }], + }); + }); + + it("spreads the player's disease through Pestilence before applying its single Reaping proc", () => { + const abilities = abilitiesForCharacter("death-knight", null); + const pest = pestilence(); + const icyTouch = abilities.find((ability) => ability.name === "Icy Touch")!; + const secondaryTargetId = "reaping-player-pestilence-secondary"; + useCombatStore.getState().registerMob(secondaryTargetId, { + name: "Pestilence secondary", + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(secondaryTargetId, [4, 0, 0]); + useCombatStore.getState().damageMob(secondaryTargetId, 1, 999); + + expect(useCombatStore.getState().castAbility(icyTouch.id, { + targetActorId: TARGET_ID, + now: 1_000, + }).ok).toBe(true); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_REAPING_TALENT_ID]: 3 }, + deathKnightRunes: createDeathKnightRunes(2_500), + })); + + expect(useCombatStore.getState().castAbility(pest.id, { + targetActorId: TARGET_ID, + now: 2_500, + }).ok).toBe(true); + + expect(useCombatStore.getState().effects).toContainEqual(expect.objectContaining({ + kind: "dot", + tag: "frost-fever", + sourceActorId: "__player__", + targetId: secondaryTargetId, + })); + expect(useCombatStore.getState().deathKnightRunes[0]).toMatchObject({ + slot: 0, + baseType: "blood", + type: "death", + deathRuneExpiresAt: 32_500, + deathRuneConversions: [{ source: "reaping", expiresAt: 32_500 }], + }); + expect(useCombatStore.getState().deathKnightRunes[1]).toMatchObject({ + slot: 1, + baseType: "blood", + type: "blood", + }); + }); + + it("converts the generated companion's just-spent Blood rune on its landed Blood Strike", () => { + const strike = bloodStrike(); + const abilities = abilitiesForCharacter("death-knight", null); + const member = createConfiguredPartyMember({ + name: "Reaping DK", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + talentRanks: { [WOW335_DEATH_KNIGHT_REAPING_TALENT_ID]: 3 }, + role: "damage", + }, 80, 0, PARTY_SEED); + usePartyStore.setState({ members: [{ + ...member, + talentRanks: { [WOW335_DEATH_KNIGHT_REAPING_TALENT_ID]: 3 }, + runes: createDeathKnightRunes(1_000), + cooldowns: Object.fromEntries(abilities + .filter((ability) => ability.id !== strike.id) + .map((ability) => [ability.id, 60_000])), + }] }); + usePartyStore.getState().setCommand("attack"); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().damageMob(TARGET_ID, 1, 100); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + + advanceDungeonPartyCombat(1_000); + + const updated = usePartyStore.getState().members.find((candidate) => candidate.id === member.id); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.sourceActorId === member.id && event.abilityId === strike.id && event.kind === "damage" + ))).toBe(true); + expect(updated?.runes[0]).toMatchObject({ + slot: 0, + baseType: "blood", + type: "death", + readyAt: expect.any(Number), + deathRuneExpiresAt: 31_000, + deathRuneConversions: [{ source: "reaping", expiresAt: 31_000 }], + }); + expect(useCombatStore.getState().actors[member.id]?.runes[0]).toMatchObject({ type: "death" }); + }); + + it("spreads a companion-owned disease with Pestilence and procs Reaping once for the successful cast", () => { + const pest = pestilence(); + const abilities = abilitiesForCharacter("death-knight", null); + const member = createConfiguredPartyMember({ + name: "Reaping Pestilence DK", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + talentRanks: { [WOW335_DEATH_KNIGHT_REAPING_TALENT_ID]: 3 }, + role: "damage", + }, 80, 0, `${PARTY_SEED}-pestilence`); + const secondaryTargetId = "reaping-pestilence-secondary"; + useCombatStore.getState().registerMob(secondaryTargetId, { + name: "Pestilence secondary", + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(secondaryTargetId, [4, 0, 0]); + usePartyStore.setState({ members: [{ + ...member, + talentRanks: { [WOW335_DEATH_KNIGHT_REAPING_TALENT_ID]: 3 }, + runes: createDeathKnightRunes(1_000), + cooldowns: Object.fromEntries(abilities + .filter((ability) => ability.id !== pest.id) + .map((ability) => [ability.id, 60_000])), + }] }); + usePartyStore.getState().setCommand("attack"); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().damageMob(TARGET_ID, 1, 100); + useCombatStore.getState().damageMob(secondaryTargetId, 1, 100); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + + const icyTouch = abilities.find((ability) => ability.name === "Icy Touch")!; + const frostFever = icyTouch.effects.find((effect) => effect.kind === "dot")!; + expect(useCombatStore.getState().applyTimedActorEffect( + member.id, + TARGET_ID, + icyTouch, + frostFever as Extract, + 1_000, + )).toBe(true); + + advanceDungeonPartyCombat(1_000); + + const updated = usePartyStore.getState().members.find((candidate) => candidate.id === member.id); + expect(useCombatStore.getState().effects).toContainEqual(expect.objectContaining({ + kind: "dot", + tag: "frost-fever", + sourceActorId: member.id, + targetId: secondaryTargetId, + })); + expect(updated?.runes[0]).toMatchObject({ + slot: 0, + baseType: "blood", + type: "death", + deathRuneExpiresAt: 31_000, + deathRuneConversions: [{ source: "reaping", expiresAt: 31_000 }], + }); + }); +}); diff --git a/src/game/wow335DeathKnightReapingRuntime.test.ts b/src/game/wow335DeathKnightReapingRuntime.test.ts new file mode 100644 index 00000000..889b9ad9 --- /dev/null +++ b/src/game/wow335DeathKnightReapingRuntime.test.ts @@ -0,0 +1,165 @@ +import { describe, expect, it } from "vitest"; +import { + WOW335_DEATH_KNIGHT_REAPING_TALENT_ID, + WOW335_DEATH_KNIGHT_REAPING_TRIGGER_SPELL_IDS, + wow335DeathKnightReapingAuraPeriodMs, + wow335DeathKnightReapingApplyProcPlan, + wow335DeathKnightReapingExpiredRuneSlots, + wow335DeathKnightReapingProcPlan, + wow335DeathKnightReapingProcChancePercent, + wow335DeathKnightReapingRestoreLandedSpend, + wow335DeathKnightReapingRestoreSpentRunes, + wow335DeathKnightReapingStateForRunes, + wow335DeathKnightReapingShouldProc, +} from "./wow335DeathKnightReapingRuntime"; +import { createDeathKnightRunes, type DeathKnightRuneState } from "./combatActors"; +import { normalizeDeathKnightRunes } from "./combatResources"; + +const emptyReapingState = { convertedRuneSlots: [], expiresAt: null } as const; + +function runeTransition(slot: number): readonly [readonly DeathKnightRuneState[], readonly DeathKnightRuneState[]] { + const before = createDeathKnightRunes(1_000); + const after = before.map((rune) => rune.slot === slot + ? { ...rune, readyAt: 11_000 } + : rune); + return [before, after]; +} + +describe("WoW 3.3.5a Death Knight Reaping source profile", () => { + it("reads the 33/66/100 percent chances from the generated rank rows", () => { + expect(WOW335_DEATH_KNIGHT_REAPING_TALENT_ID).toBe("talent-2001"); + expect([1, 2, 3].map(wow335DeathKnightReapingProcChancePercent)).toEqual([33, 66, 100]); + expect(wow335DeathKnightReapingProcChancePercent(0)).toBe(0); + expect(wow335DeathKnightReapingProcChancePercent(4)).toBe(0); + }); + + it("accepts only landed Blood Strike or Pestilence hits", () => { + expect(WOW335_DEATH_KNIGHT_REAPING_TRIGGER_SPELL_IDS).toEqual([45902, 50842]); + for (const spellId of WOW335_DEATH_KNIGHT_REAPING_TRIGGER_SPELL_IDS) { + expect(wow335DeathKnightReapingShouldProc(3, { spellId, landed: true, roll: 0.25 })).toBe(true); + expect(wow335DeathKnightReapingShouldProc(3, { spellId, landed: false, roll: 0.25 })).toBe(false); + } + expect(wow335DeathKnightReapingShouldProc(3, { spellId: 49998, landed: true, roll: 0 })).toBe(false); + expect(wow335DeathKnightReapingShouldProc(0, { spellId: 45902, landed: true, roll: 0 })).toBe(false); + }); + + it("uses an exclusive chance boundary and rejects malformed rolls", () => { + expect(wow335DeathKnightReapingShouldProc(1, { spellId: 45902, landed: true, roll: 0.3299 })).toBe(true); + expect(wow335DeathKnightReapingShouldProc(1, { spellId: 45902, landed: true, roll: 0.33 })).toBe(false); + for (const roll of [-0.01, 1, Number.NaN, Number.POSITIVE_INFINITY]) { + expect(wow335DeathKnightReapingShouldProc(3, { spellId: 45902, landed: true, roll })).toBe(false); + } + }); + + it("uses the hidden aura's 30-second periodic reset interval, not a base aura duration", () => { + expect([1, 2, 3].map(wow335DeathKnightReapingAuraPeriodMs)).toEqual([30_000, 30_000, 30_000]); + }); + + it("converts one just-spent base Blood slot in rune order and queues the 30-second expiry", () => { + const [before, after] = runeTransition(1); + const plan = wow335DeathKnightReapingProcPlan(3, emptyReapingState, before, after, 1_000); + expect(plan).toEqual({ + newlyConvertedRuneSlot: 1, + state: { convertedRuneSlots: [1], expiresAt: 31_000 }, + }); + }); + + it("does not convert a base Blood rune that was already cooling or an unrelated rune", () => { + const initial = createDeathKnightRunes(1_000); + const alreadyCooling = initial.map((rune) => rune.slot === 0 ? { ...rune, readyAt: 5_000 } : rune); + expect(wow335DeathKnightReapingProcPlan(3, emptyReapingState, alreadyCooling, alreadyCooling, 1_000)).toBeNull(); + const [before, after] = runeTransition(2); + expect(wow335DeathKnightReapingProcPlan(3, emptyReapingState, before, after, 1_000)).toBeNull(); + }); + + it("refreshes one shared aura timer and tracks additional proc-owned Blood runes", () => { + const [firstBefore, firstAfter] = runeTransition(0); + const first = wow335DeathKnightReapingProcPlan(1, emptyReapingState, firstBefore, firstAfter, 1_000)!; + const secondBefore = firstAfter.map((rune) => rune.slot === 0 ? { ...rune, type: "death" as const } : rune); + const secondAfter = secondBefore.map((rune) => rune.slot === 1 ? { ...rune, readyAt: 11_500 } : rune); + const second = wow335DeathKnightReapingProcPlan(1, first.state, secondBefore, secondAfter, 1_500)!; + expect(second.newlyConvertedRuneSlot).toBe(1); + expect(second.state).toEqual({ convertedRuneSlots: [0, 1], expiresAt: 31_500 }); + }); + + it("restores a converted Death Rune after a successful spend, but preserves it on a miss", () => { + const active = { convertedRuneSlots: [0, 1], expiresAt: 31_000 } as const; + expect(wow335DeathKnightReapingRestoreSpentRunes(active, [0], true, 2_000)).toEqual({ + restoredRuneSlots: [0], + state: { convertedRuneSlots: [1], expiresAt: 31_000 }, + }); + expect(wow335DeathKnightReapingRestoreSpentRunes(active, [0], false, 2_000)).toEqual({ + restoredRuneSlots: [], + state: active, + }); + expect(wow335DeathKnightReapingRestoreSpentRunes( + { convertedRuneSlots: [0], expiresAt: 31_000 }, [0], true, 2_000, + ).state).toEqual({ convertedRuneSlots: [], expiresAt: 31_000 }); + }); + + it("returns all remaining aura-owned slots only when the shared timer expires", () => { + const active = { convertedRuneSlots: [0, 1], expiresAt: 31_000 } as const; + expect(wow335DeathKnightReapingExpiredRuneSlots(active, 30_999)).toEqual([]); + expect(wow335DeathKnightReapingExpiredRuneSlots(active, 31_000)).toEqual([0, 1]); + }); + + it("adds Reaping ownership without overwriting another conversion owner", () => { + const before = createDeathKnightRunes(1_000).map((rune) => rune.slot === 0 ? { + ...rune, + type: "death" as const, + deathRuneExpiresAt: 25_000, + deathRuneConversions: [ + { source: "blood-tap" as const, expiresAt: 25_000 }, + { source: "reaping" as const, expiresAt: 8_000 }, + ], + } : rune); + const after = before.map((rune) => rune.slot === 0 ? { ...rune, readyAt: 11_000 } : rune); + const state = wow335DeathKnightReapingStateForRunes(before, 1_000); + expect(state).toEqual({ convertedRuneSlots: [0], expiresAt: 8_000 }); + const plan = wow335DeathKnightReapingProcPlan(3, state, before, after, 1_000)!; + const updated = wow335DeathKnightReapingApplyProcPlan(after, plan); + expect(updated[0]).toMatchObject({ + type: "death", + deathRuneExpiresAt: 31_000, + deathRuneConversions: [ + { source: "blood-tap", expiresAt: 25_000 }, + { source: "reaping", expiresAt: 31_000 }, + ], + }); + }); + + it("restores only the landed spent Reaping conversion and lets each source expire independently", () => { + const runes = createDeathKnightRunes(1_000).map((rune) => rune.slot === 0 ? { + ...rune, + type: "death" as const, + deathRuneExpiresAt: 21_000, + deathRuneConversions: [ + { source: "blood-tap" as const, expiresAt: 21_000 }, + { source: "reaping" as const, expiresAt: 16_000 }, + ], + } : rune.slot === 1 ? { + ...rune, + type: "death" as const, + deathRuneExpiresAt: 16_000, + deathRuneConversions: [{ source: "reaping" as const, expiresAt: 16_000 }], + } : rune); + const landed = wow335DeathKnightReapingRestoreLandedSpend(runes, [0], true); + expect(landed[0]).toMatchObject({ + type: "death", + deathRuneExpiresAt: 21_000, + deathRuneConversions: [{ source: "blood-tap", expiresAt: 21_000 }], + }); + expect(landed[1].type).toBe("death"); + expect(wow335DeathKnightReapingRestoreLandedSpend(runes, [0], false)).toEqual(runes); + + const afterReapingExpiry = normalizeDeathKnightRunes(runes, 16_000); + expect(afterReapingExpiry[0]).toMatchObject({ + type: "death", + deathRuneExpiresAt: 21_000, + deathRuneConversions: [{ source: "blood-tap", expiresAt: 21_000 }], + }); + expect(afterReapingExpiry[1]).toMatchObject({ type: "blood" }); + const afterBloodTapExpiry = normalizeDeathKnightRunes(afterReapingExpiry, 21_000); + expect(afterBloodTapExpiry[0]).toMatchObject({ type: "blood" }); + }); +}); diff --git a/src/game/wow335DeathKnightReapingRuntime.ts b/src/game/wow335DeathKnightReapingRuntime.ts new file mode 100644 index 00000000..16cb0645 --- /dev/null +++ b/src/game/wow335DeathKnightReapingRuntime.ts @@ -0,0 +1,254 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import type { DeathKnightRuneState } from "./combatActors"; + +/** + * Reaping's talent chance and 30-second hidden Periodic Dummy interval come + * from the local generated 3.3.5a talent rows, owned by + * `scripts/generate-wow335-talents.mjs`. Rune selection/expiry and hit-versus- + * miss spend semantics follow the inspected AzerothCore-derived reference + * (the linked WotLKDB row reports interval 30s and duration n/a): + * https://wotlkdb.com/index.php?spell=56835 + * https://github.com/mod-playerbots/azerothcore-wotlk/blob/e822d718322289dd036fb2daf8867ba41283bf9a/src/server/scripts/Spells/spell_dk.cpp#L2640-L2705 + * https://github.com/mod-playerbots/azerothcore-wotlk/blob/e822d718322289dd036fb2daf8867ba41283bf9a/src/server/game/Spells/Spell.cpp#L5413-L5474 + * This server handler is a fork reference, not a claim about pristine upstream + * TrinityCore behavior. + */ +export const WOW335_DEATH_KNIGHT_REAPING_TALENT_ID = "talent-2001"; +export const WOW335_DEATH_KNIGHT_REAPING_PROC_AURA_TYPE = 226; +export const WOW335_DEATH_KNIGHT_REAPING_TRIGGER_SPELL_IDS = Object.freeze([ + 45902, // Blood Strike + 50842, // Pestilence +]); + +const reapingTalent = WOW335_TALENT_NODES.find( + (talent) => talent.id === WOW335_DEATH_KNIGHT_REAPING_TALENT_ID, +); + +/** Reads the selected proc chance directly from the generated local 3.3.5a rank row. */ +export function wow335DeathKnightReapingProcChancePercent(rank: number): number { + const selectedRank = Math.max(0, Math.trunc(Number.isFinite(rank) ? rank : 0)); + const row = reapingTalent?.rankEffects[selectedRank - 1]; + const chance = row?.procChance ?? 0; + return Math.max(0, Math.min(100, Number.isFinite(chance) ? chance : 0)); +} + +/** + * The hidden Reaping proc aura uses a periodic dummy as its removal timer. + * This is not a normal aura duration: each successful proc resets the timer. + */ +export function wow335DeathKnightReapingAuraPeriodMs(rank: number): number { + const selectedRank = Math.max(0, Math.trunc(Number.isFinite(rank) ? rank : 0)); + const effect = reapingTalent?.rankEffects[selectedRank - 1]?.effects.find( + (candidate) => candidate.auraType === WOW335_DEATH_KNIGHT_REAPING_PROC_AURA_TYPE, + ); + const periodMs = effect?.periodMs ?? 0; + return Math.max(0, Number.isFinite(periodMs) ? periodMs : 0); +} + +export interface Wow335DeathKnightReapingRuneState { + /** Base-Blood slots currently converted by the active Reaping proc aura. */ + readonly convertedRuneSlots: readonly number[]; + /** The aura's shared 30-second removal timer, refreshed by each proc. */ + readonly expiresAt: number | null; +} + +export interface Wow335DeathKnightReapingProcPlan { + readonly newlyConvertedRuneSlot: number; + readonly state: Wow335DeathKnightReapingRuneState; +} + +/** + * Plans the stock conversion after a Reaping proc succeeds. Exactly one + * original Blood slot that just entered cooldown is selected, in slot order, + * matching the core handler. The caller applies/records the plan with its rune + * state. The aura-owned removal timer comes from the rank's Periodic Dummy + * interval, not from the rune cooldown. + */ +export function wow335DeathKnightReapingProcPlan( + rank: number, + state: Wow335DeathKnightReapingRuneState, + runesBefore: readonly DeathKnightRuneState[], + runesAfter: readonly DeathKnightRuneState[], + now: number, +): Wow335DeathKnightReapingProcPlan | null { + const auraPeriodMs = wow335DeathKnightReapingAuraPeriodMs(rank); + if (auraPeriodMs <= 0 || !Number.isFinite(now)) return null; + const afterBySlot = new Map(runesAfter.map((rune) => [rune.slot, rune])); + const consumedBloodRune = [...runesBefore] + .sort((left, right) => left.slot - right.slot) + .find((before) => { + const after = afterBySlot.get(before.slot); + return before.baseType === "blood" + && before.readyAt <= now + && after?.baseType === "blood" + && after.readyAt > now; + }); + if (!consumedBloodRune) return null; + + const activePreviousSlots = state.expiresAt !== null && state.expiresAt > now + ? state.convertedRuneSlots + : []; + const convertedRuneSlots = [...new Set([...activePreviousSlots, consumedBloodRune.slot])] + .sort((left, right) => left - right); + return Object.freeze({ + newlyConvertedRuneSlot: consumedBloodRune.slot, + state: Object.freeze({ + convertedRuneSlots: Object.freeze(convertedRuneSlots), + expiresAt: now + auraPeriodMs, + }), + }); +} + +export interface Wow335DeathKnightReapingRuneRestorePlan { + /** Rune slots whose Death type must be restored to their base Blood type. */ + readonly restoredRuneSlots: readonly number[]; + readonly state: Wow335DeathKnightReapingRuneState; +} + +/** Extracts the active Reaping-owned rune conversions without claiming Blood Tap runes. */ +export function wow335DeathKnightReapingStateForRunes( + runes: readonly DeathKnightRuneState[], + now: number, +): Wow335DeathKnightReapingRuneState { + const conversions = runes.flatMap((rune) => (rune.deathRuneConversions ?? []) + .filter((conversion) => conversion.source === "reaping" + && Number.isFinite(conversion.expiresAt) + && conversion.expiresAt > now) + .map((conversion) => ({ slot: rune.slot, expiresAt: conversion.expiresAt }))); + return Object.freeze({ + convertedRuneSlots: Object.freeze([...new Set(conversions.map((conversion) => conversion.slot))] + .sort((left, right) => left - right)), + expiresAt: conversions.length ? Math.max(...conversions.map((conversion) => conversion.expiresAt)) : null, + }); +} + +/** Applies a planned Reaping conversion while preserving other aura owners. */ +export function wow335DeathKnightReapingApplyProcPlan( + runes: readonly DeathKnightRuneState[], + plan: Wow335DeathKnightReapingProcPlan | null, +): readonly DeathKnightRuneState[] { + if (!plan) return runes; + const affectedSlots = new Set([...plan.state.convertedRuneSlots]); + return Object.freeze(runes.map((rune) => { + if (!affectedSlots.has(rune.slot)) return rune; + const conversions = [...(rune.deathRuneConversions ?? [])] + .filter((conversion) => conversion.source !== "reaping"); + conversions.push({ source: "reaping", expiresAt: plan.state.expiresAt! }); + const expiresAt = Math.max(...conversions.map((conversion) => conversion.expiresAt)); + return Object.freeze({ + ...rune, + type: "death" as const, + deathRuneExpiresAt: expiresAt, + deathRuneConversions: Object.freeze(conversions), + }); + })); +} + +/** Successful landed spending clears only Reaping ownership on the exact spent slots. */ +export function wow335DeathKnightReapingRestoreLandedSpend( + runes: readonly DeathKnightRuneState[], + spentRuneSlots: readonly number[], + didLand: boolean, +): readonly DeathKnightRuneState[] { + if (!didLand || spentRuneSlots.length === 0) return runes; + const spent = new Set(spentRuneSlots); + return Object.freeze(runes.map((rune) => { + if (!spent.has(rune.slot)) return rune; + const conversions = (rune.deathRuneConversions ?? []) + .filter((conversion) => conversion.source !== "reaping"); + if (conversions.length > 0) { + return Object.freeze({ + ...rune, + type: "death" as const, + deathRuneExpiresAt: Math.max(...conversions.map((conversion) => conversion.expiresAt)), + deathRuneConversions: Object.freeze(conversions), + }); + } + const { deathRuneExpiresAt: _expiresAt, deathRuneConversions: _conversions, ...baseRune } = rune; + void _expiresAt; + void _conversions; + return Object.freeze({ ...baseRune, type: rune.baseType }); + })); +} + +/** Identifies rune slots that became unavailable in this use, ignoring pre-existing cooldowns. */ +export function wow335DeathKnightSpentRuneSlots( + runesBefore: readonly DeathKnightRuneState[], + runesAfter: readonly DeathKnightRuneState[], + now: number, +): readonly number[] { + const afterBySlot = new Map(runesAfter.map((rune) => [rune.slot, rune])); + return Object.freeze(runesBefore + .filter((rune) => rune.readyAt <= now && (afterBySlot.get(rune.slot)?.readyAt ?? rune.readyAt) > now) + .map((rune) => rune.slot) + .sort((left, right) => left - right)); +} + +/** + * A successful ability spend restores an aura-converted Death Rune to its + * base type immediately. A miss retains the Death type. The caller supplies + * the exact spent slots from the committed rune-cost result. + */ +export function wow335DeathKnightReapingRestoreSpentRunes( + state: Wow335DeathKnightReapingRuneState, + spentRuneSlots: readonly number[], + didHit: boolean, + now: number, +): Wow335DeathKnightReapingRuneRestorePlan { + if (!Number.isFinite(now) || state.expiresAt === null || state.expiresAt <= now) { + return Object.freeze({ + restoredRuneSlots: Object.freeze([]), + state: Object.freeze({ convertedRuneSlots: Object.freeze([]), expiresAt: null }), + }); + } + if (!didHit) { + return Object.freeze({ restoredRuneSlots: Object.freeze([]), state }); + } + const spent = new Set(spentRuneSlots); + const restoredRuneSlots = state.convertedRuneSlots.filter((slot) => spent.has(slot)); + if (!restoredRuneSlots.length) { + return Object.freeze({ restoredRuneSlots: Object.freeze([]), state }); + } + const restored = new Set(restoredRuneSlots); + const convertedRuneSlots = state.convertedRuneSlots.filter((slot) => !restored.has(slot)); + return Object.freeze({ + restoredRuneSlots: Object.freeze(restoredRuneSlots), + state: Object.freeze({ + convertedRuneSlots: Object.freeze(convertedRuneSlots), + // The hidden periodic aura remains until its timer ticks even if every + // converted rune has already been restored by successful rune spends. + expiresAt: state.expiresAt, + }), + }); +} + +/** Returns Reaping-owned rune slots that the caller must restore at aura expiry. */ +export function wow335DeathKnightReapingExpiredRuneSlots( + state: Wow335DeathKnightReapingRuneState, + now: number, +): readonly number[] { + return state.expiresAt !== null && Number.isFinite(now) && now >= state.expiresAt + ? state.convertedRuneSlots + : Object.freeze([]); +} + +/** Resolves Reaping's generated trigger and chance; caller applies the proc plan. */ +export function wow335DeathKnightReapingShouldProc( + rank: number, + event: { + readonly spellId: number; + /** True only for a resolved hit; misses and evades must pass false. */ + readonly landed: boolean; + /** A deterministic roll in [0, 1), supplied by the calling combat path. */ + readonly roll: number; + }, +): boolean { + const chancePercent = wow335DeathKnightReapingProcChancePercent(rank); + if (chancePercent <= 0 + || !event.landed + || !WOW335_DEATH_KNIGHT_REAPING_TRIGGER_SPELL_IDS.includes(event.spellId) + || !Number.isFinite(event.roll) + || event.roll < 0 + || event.roll >= 1) return false; + return event.roll < chancePercent / 100; +} diff --git a/src/game/wow335DeathKnightSpellDeflection.integration.test.ts b/src/game/wow335DeathKnightSpellDeflection.integration.test.ts new file mode 100644 index 00000000..35ff96bf --- /dev/null +++ b/src/game/wow335DeathKnightSpellDeflection.integration.test.ts @@ -0,0 +1,140 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore, stableCombatUnit, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { DEFAULT_ENEMY_ATTACK, type EnemyDamageSchool } from "./enemyAttacks"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { WOW335_DEATH_KNIGHT_SPELL_DEFLECTION_TALENT_ID } from "./wow335DeathKnightSpellDeflectionRuntime"; + +const ATTACK = { + ...DEFAULT_ENEMY_ATTACK, + id: "spell-deflection-incoming-test", + name: "Spell Deflection incoming test", + delivery: "projectile" as const, + animation: "cast" as const, + castTimeMs: 0, + range: 20, + cooldownMs: 10_000, + initialCooldownMs: [0, 0] as const, + repeatCooldownMs: [10_000, 10_000] as const, + damageMultiplier: 1, +}; + +const MAX_PARRY_GEAR = { ...EMPTY_ITEM_STATS, parryRating: 50_000 }; + +function incomingEvent(mobId: string, targetId: string) { + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "damage" && candidate.sourceActorId === mobId && candidate.targetActorId === targetId + )); + if (!event) throw new Error(`Expected an incoming damage event on ${targetId}.`); + return event; +} + +function hitTime(mobId: string, targetId: string): number { + for (let now = 1_000; now < 200_000; now += 1) { + const resultRoll = stableCombatUnit(`${mobId}:${ATTACK.id}:${targetId}:0:${now}:outcome`); + if (resultRoll >= 0.2 && resultRoll < 0.9) return now; + } + throw new Error("Could not find a landed incoming spell hit seed."); +} + +function setupAttacker(mobId: string, targetId: string, now: number, school: EnemyDamageSchool): void { + useCombatStore.getState().registerMob(mobId, { + name: "Spell Deflection test attacker", level: 80, maxHealth: 100_000, xpReward: 0, + attacks: [{ ...ATTACK, school }], + }); + setMobPosition(mobId, [2, 0, 0]); + useCombatStore.setState((state) => ({ + mobs: { ...state.mobs, [mobId]: { ...state.mobs[mobId]!, attackDamage: 4_000 } }, + })); + useCombatStore.getState().damageMob(mobId, 1, now - 1, { actorId: targetId, role: "tank" }, "physical"); +} + +function resetForHit(playerClass: "death-knight" | "warrior", runId: string): void { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: playerClass, level: 80, xp: 0 }); + usePartyStore.getState().initializeParty( + `wow335-spell-deflection-${runId}`, + 80, + useCombatStore.getState().health, + "tank", + 1, + ); +} + +function runPlayerHit(rank: number) { + resetForHit("death-knight", `player-${rank}`); + useCombatStore.setState((state) => ({ + gearStats: MAX_PARRY_GEAR, + talentRanks: { ...state.talentRanks, [WOW335_DEATH_KNIGHT_SPELL_DEFLECTION_TALENT_ID]: rank }, + })); + const mobId = "spell-deflection-player-attacker"; + const now = hitTime(mobId, PLAYER_AGGRO_ID); + setupAttacker(mobId, PLAYER_AGGRO_ID, now, "shadow"); + useCombatStore.getState().advanceMobCombat(now); + return incomingEvent(mobId, PLAYER_AURA_ENTITY_ID); +} + +function runCompanionHit(rank: number) { + resetForHit("warrior", `companion-${rank}`); + const talentRanks = { [WOW335_DEATH_KNIGHT_SPELL_DEFLECTION_TALENT_ID]: rank }; + const member = createConfiguredPartyMember({ + name: "Spell Deflection DK", + classId: "death-knight", + specialization: "Blood", + specializationId: "death-knight:blood", + talentTreeId: "death-knight-blood", + role: "tank", + talentRanks, + }, 80, 0, `wow335-spell-deflection-companion-${rank}`); + usePartyStore.setState({ + members: [{ + ...member, + health: 100_000, + maxHealth: 100_000, + gearStats: MAX_PARRY_GEAR, + talentRanks, + globalCooldownEndsAt: 61_000, + nextActionAt: 61_000, + }], + }); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + const mobId = "spell-deflection-companion-attacker"; + const now = hitTime(mobId, member.id); + setupAttacker(mobId, member.id, now, "shadow"); + advanceDungeonPartyCombat(now); + useCombatStore.getState().advanceMobCombat(now, [100, 0, 0]); + return incomingEvent(mobId, member.id); +} + +describe("WoW Death Knight Spell Deflection combat integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + }); + + it("absorbs the rank percentage of a direct shadow hit for player and generated companion", () => { + const playerBaseline = runPlayerHit(0); + const playerDeflected = runPlayerHit(3); + const companionBaseline = runCompanionHit(0); + const companionDeflected = runCompanionHit(3); + + expect(playerBaseline.effectiveAmount).toBeGreaterThan(0); + expect(playerBaseline.absorbed).toBe(0); + expect(playerDeflected.absorbed).toBe(Math.floor(playerBaseline.effectiveAmount * 0.45)); + expect(playerDeflected.effectiveAmount).toBe(playerBaseline.effectiveAmount - playerDeflected.absorbed); + + expect(companionBaseline.effectiveAmount).toBeGreaterThan(0); + expect(companionBaseline.absorbed).toBe(0); + expect(companionDeflected.absorbed).toBe(Math.floor(companionBaseline.effectiveAmount * 0.45)); + expect(companionDeflected.effectiveAmount).toBe(companionBaseline.effectiveAmount - companionDeflected.absorbed); + }); +}); diff --git a/src/game/wow335DeathKnightSpellDeflectionRuntime.test.ts b/src/game/wow335DeathKnightSpellDeflectionRuntime.test.ts new file mode 100644 index 00000000..56773c67 --- /dev/null +++ b/src/game/wow335DeathKnightSpellDeflectionRuntime.test.ts @@ -0,0 +1,48 @@ +import { describe, expect, it } from "vitest"; +import { + wow335DeathKnightSpellDeflectionAbsorbedAmount, + wow335DeathKnightSpellDeflectionDamage, + wow335DeathKnightSpellDeflectionProfile, + wow335DeathKnightSpellDeflectionSchoolMask, + wow335DeathKnightSpellDeflectionShouldProc, +} from "./wow335DeathKnightSpellDeflectionRuntime"; + +describe("WoW Death Knight Spell Deflection", () => { + it("reads all generated ranks and DBC school-absorb metadata", () => { + expect([1, 2, 3].map(wow335DeathKnightSpellDeflectionProfile)).toEqual([ + { rank: 1, absorbFraction: 0.15, procChanceSource: "live-parry", auraType: 69, schoolMask: 126 }, + { rank: 2, absorbFraction: 0.3, procChanceSource: "live-parry", auraType: 69, schoolMask: 126 }, + { rank: 3, absorbFraction: 0.45, procChanceSource: "live-parry", auraType: 69, schoolMask: 126 }, + ]); + expect(wow335DeathKnightSpellDeflectionProfile(0)).toBeNull(); + expect(wow335DeathKnightSpellDeflectionProfile(4)).toBeNull(); + const schools = ["physical", "holy", "fire", "nature", "frost", "shadow", "arcane"] as const; + expect(schools.map(wow335DeathKnightSpellDeflectionSchoolMask)).toEqual([1, 2, 4, 8, 16, 32, 64]); + }); + + it("uses Parry chance as the proc chance, including 0%, threshold, and 100% edges", () => { + const event = { directDamageSpell: true, schoolMask: 4, damage: 100, parryChancePercent: 5, roll: 0.0499 }; + expect(wow335DeathKnightSpellDeflectionShouldProc(3, event)).toBe(true); + expect(wow335DeathKnightSpellDeflectionShouldProc(3, { ...event, roll: 0.05 })).toBe(false); + expect(wow335DeathKnightSpellDeflectionShouldProc(3, { ...event, parryChancePercent: 0, roll: 0 })).toBe(false); + expect(wow335DeathKnightSpellDeflectionShouldProc(3, { ...event, parryChancePercent: 100, roll: 0.9999 })) + .toBe(true); + expect(wow335DeathKnightSpellDeflectionShouldProc(3, { ...event, parryChancePercent: 150, roll: 0.9999 })) + .toBe(true); + expect(wow335DeathKnightSpellDeflectionShouldProc(3, { ...event, schoolMask: 1 })).toBe(false); + }); + + it("excludes periodic, non-spell, and zero-damage events", () => { + const event = { directDamageSpell: false, schoolMask: 4, damage: 100, parryChancePercent: 100, roll: 0 }; + expect(wow335DeathKnightSpellDeflectionShouldProc(3, event)).toBe(false); + expect(wow335DeathKnightSpellDeflectionShouldProc(3, { ...event, directDamageSpell: true, damage: 0 })) + .toBe(false); + }); + + it("reduces damage by the generated rank value after a successful proc", () => { + expect([1, 2, 3].map((rank) => wow335DeathKnightSpellDeflectionDamage(101, rank))).toEqual([86, 71, 56]); + expect([1, 2, 3].map((rank) => wow335DeathKnightSpellDeflectionAbsorbedAmount(99, rank))).toEqual([14, 29, 44]); + expect([1, 2, 3].map((rank) => wow335DeathKnightSpellDeflectionDamage(99, rank))).toEqual([85, 70, 55]); + expect(wow335DeathKnightSpellDeflectionDamage(101, 0)).toBe(101); + }); +}); diff --git a/src/game/wow335DeathKnightSpellDeflectionRuntime.ts b/src/game/wow335DeathKnightSpellDeflectionRuntime.ts new file mode 100644 index 00000000..33edbc15 --- /dev/null +++ b/src/game/wow335DeathKnightSpellDeflectionRuntime.ts @@ -0,0 +1,115 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import type { EnemyDamageSchool } from "./enemyAttacks"; + +export const WOW335_DEATH_KNIGHT_SPELL_DEFLECTION_TALENT_ID = "talent-2018"; + +const WOW335_DAMAGE_SCHOOL_MASKS: Readonly> = { + physical: 1, + holy: 2, + fire: 4, + nature: 8, + frost: 16, + shadow: 32, + arcane: 64, +}; + +/** Translate the incoming combat-school label into its 3.3.5 DBC school bit. */ +export function wow335DeathKnightSpellDeflectionSchoolMask(school: EnemyDamageSchool): number { + return WOW335_DAMAGE_SCHOOL_MASKS[school]; +} + +const SPELL_DEFLECTION_NODE = WOW335_TALENT_NODES.find( + (node) => node.id === WOW335_DEATH_KNIGHT_SPELL_DEFLECTION_TALENT_ID, +); + +export interface Wow335DeathKnightSpellDeflectionProfile { + readonly rank: number; + readonly absorbFraction: number; + readonly procChanceSource: "live-parry"; + readonly auraType: 69; + readonly schoolMask: number; +} + +/** Read rank reduction and spell-school mask from generated local talent rows. */ +export function wow335DeathKnightSpellDeflectionProfile( + rank: number, +): Wow335DeathKnightSpellDeflectionProfile | null { + const normalizedRank = Math.trunc(rank); + const rankEffect = SPELL_DEFLECTION_NODE?.rankEffects[normalizedRank - 1]; + const description = SPELL_DEFLECTION_NODE?.rankDescriptions[normalizedRank - 1]; + if (normalizedRank < 1 || !rankEffect || !description + || rankEffect.procCharges !== 0 + || rankEffect.recoveryTimeMs !== 0 + || rankEffect.categoryRecoveryTimeMs !== 0) return null; + + const values = description.match( + /^You have a chance equal to your Parry chance of taking (\d+(?:\.\d+)?)% less damage from a direct damage spell\.$/, + ); + const effect = rankEffect.effects.find((candidate) => candidate.effectType === 6 && candidate.auraType === 69); + const reductionPercent = Number(values?.[1]); + if (!values || !effect || effect.miscValue !== 126 + || !Number.isFinite(reductionPercent) || reductionPercent <= 0 || reductionPercent >= 100) return null; + + return { + rank: normalizedRank, + absorbFraction: reductionPercent / 100, + procChanceSource: "live-parry", + auraType: effect.auraType, + schoolMask: effect.miscValue, + }; +} + +export interface Wow335DeathKnightSpellDeflectionEvent { + /** True only for one direct spell-damage hit; periodic ticks and weapon hits are excluded. */ + readonly directDamageSpell: boolean; + /** DBC school mask for the incoming spell hit; Spell Deflection has mask 126. */ + readonly schoolMask: number; + /** Defender's current, fully derived Parry chance in percentage points, such as 7.5. */ + readonly parryChancePercent: number; + /** Deterministic unit roll in [0, 1). */ + readonly roll: number; + /** Resolved spell damage before this talent's absorb; misses and zero-damage hits cannot proc. */ + readonly damage: number; +} + +/** + * Proc chance equals the defender's current Parry chance. The generated aura is + * School Absorb (69), limited by school mask 126, and applies to direct hits. + */ +export function wow335DeathKnightSpellDeflectionShouldProc( + rank: number, + event: Wow335DeathKnightSpellDeflectionEvent, +): boolean { + const profile = wow335DeathKnightSpellDeflectionProfile(rank); + if (!profile + || !event.directDamageSpell + || !Number.isSafeInteger(event.schoolMask) || event.schoolMask <= 0 + || (event.schoolMask & profile.schoolMask) === 0 + || !Number.isFinite(event.damage) || event.damage <= 0 + || !Number.isFinite(event.parryChancePercent) + || !Number.isFinite(event.roll) || event.roll < 0 || event.roll >= 1) return false; + const chance = Math.min(100, Math.max(0, event.parryChancePercent)) / 100; + return chance > 0 && event.roll < chance; +} + +/** + * Return the amount absorbed from this hit. Generated rows specify the percent, + * not fractional-damage rounding; this simulator floors to whole damage points. + */ +export function wow335DeathKnightSpellDeflectionAbsorbedAmount( + damage: number, + rank: number, +): number { + const profile = wow335DeathKnightSpellDeflectionProfile(rank); + if (!profile || !Number.isFinite(damage) || damage <= 0) return 0; + return Math.min(Math.floor(damage), Math.floor(Math.floor(damage) * profile.absorbFraction)); +} + +/** Apply the generated partial absorb after the proc roll has succeeded. */ +export function wow335DeathKnightSpellDeflectionDamage( + damage: number, + rank: number, +): number { + if (!Number.isFinite(damage) || damage <= 0) return Math.max(0, Number.isFinite(damage) ? Math.floor(damage) : 0); + return Math.max(0, Math.floor(damage) - wow335DeathKnightSpellDeflectionAbsorbedAmount(damage, rank)); +} diff --git a/src/game/wow335DruidMasterShapeshifterIntegration.test.ts b/src/game/wow335DruidMasterShapeshifterIntegration.test.ts new file mode 100644 index 00000000..faee57c4 --- /dev/null +++ b/src/game/wow335DruidMasterShapeshifterIntegration.test.ts @@ -0,0 +1,110 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { applyAura } from "./combatAuras"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { PLAYER_AURA_ENTITY_ID, useCombatStore } from "./combatStore"; +import { usePartyStore } from "./partyStore"; +import { WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID } from "./wow335DruidMasterShapeshifterRuntime"; + +const TARGET_ID = "druid-master-shapeshifter-target"; + +function playerAbilityId(name: string): string { + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.name === name); + expect(ability, name).toBeDefined(); + return ability!.id; +} + +describe("WoW Druid Master Shapeshifter integration", () => { + beforeEach(async () => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + await preloadAbilityCatalogsForClasses(["druid"]); + useCombatStore.getState().initializeCharacter({ classId: "druid", level: 80, xp: 0 }); + useCombatStore.getState().resetSettings(); + usePartyStore.getState().initializeParty("wow335-master-shapeshifter-tests", 1, useCombatStore.getState().health); + useCombatStore.setState((state) => ({ + resource: state.maxResource, + resourcePools: { ...state.resourcePools, mana: state.maxResourcePools.mana }, + })); + useCombatStore.getState().registerMob(TARGET_ID, { name: "Target", maxHealth: 1_000_000 }); + useCombatStore.setState((state) => ({ + mobs: { + ...state.mobs, + [TARGET_ID]: { + ...state.mobs[TARGET_ID]!, + characterDefender: { + level: 80, + armor: 0, + dodgePercent: 0, + parryPercent: 0, + blockPercent: 0, + blockValue: 0, + }, + }, + }, + })); + setMobPosition(TARGET_ID, [4, 0, 0]); + }); + + it("adds Bear Form physical damage to a player melee hit", () => { + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID]: 2 }, + })); + const form = useCombatStore.getState().castAbility(playerAbilityId("Bear Form"), { + targetActorId: null, + now: 1_000, + }); + expect(form.ok).toBe(true); + + const result = useCombatStore.getState().damageMob( + TARGET_ID, + 100, + 2_000, + undefined, + "physical", + { + attackKind: "melee", + seed: "master-shapeshifter-player-bear-hit", + rules: { canMiss: false, canCrit: false, canDodge: false, canParry: false, canBlock: false }, + }, + ); + + expect(result.amount).toBe(104); + }); + + it("adds Tree of Life healing to a party Druid's direct heal", () => { + usePartyStore.setState((state) => ({ + members: state.members.map((member, index) => index === 0 + ? { + ...member, + classId: "druid", + talentRanks: { ...member.talentRanks, [WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID]: 2 }, + } + : member), + })); + const druid = usePartyStore.getState().members[0]!; + useCombatStore.setState((state) => ({ + health: Math.round(state.maxHealth / 2), + auras: [...applyAura(state.auras, { + definition: { + id: "wow335:33891:effect:0:aura:36", + name: "Tree of Life", + disposition: "buff", + durationMs: null, + }, + sourceId: druid.id, + targetId: druid.id, + now: 1_000, + }).auras], + })); + + const result = useCombatStore.getState().healActor(PLAYER_AURA_ENTITY_ID, 100, { + sourceActorId: druid.id, + abilityId: "test-druid-heal", + now: 2_000, + }); + + expect(result.rawAmount).toBe(104); + }); +}); diff --git a/src/game/wow335DruidMasterShapeshifterRuntime.test.ts b/src/game/wow335DruidMasterShapeshifterRuntime.test.ts new file mode 100644 index 00000000..c9bc5d2f --- /dev/null +++ b/src/game/wow335DruidMasterShapeshifterRuntime.test.ts @@ -0,0 +1,62 @@ +import { describe, expect, it } from "vitest"; +import { applyTalentModifierValue, talentModifiersForRanks } from "./talentModifiers"; +import { + WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID, + wow335DruidMasterShapeshifterModifiersForForm, + wow335DruidShapeshiftFormForAuraId, + wow335DruidShapeshiftFormForSpellId, +} from "./wow335DruidMasterShapeshifterRuntime"; + +describe("WoW Druid Master Shapeshifter runtime", () => { + it.each([ + [1, 2], + [2, 4], + ] as const)("uses the generated rank %i bonus only for its active form", (rank, expectedPercent) => { + const byForm = { + bear: wow335DruidMasterShapeshifterModifiersForForm(rank, "bear"), + cat: wow335DruidMasterShapeshifterModifiersForForm(rank, "cat"), + moonkin: wow335DruidMasterShapeshifterModifiersForForm(rank, "moonkin"), + tree: wow335DruidMasterShapeshifterModifiersForForm(rank, "tree-of-life"), + }; + + expect(byForm.bear).toHaveLength(1); + expect(byForm.bear[0]).toMatchObject({ kind: "damage-percent", amount: expectedPercent, scope: "physical damage" }); + expect(byForm.cat).toHaveLength(1); + expect(byForm.cat[0]).toMatchObject({ kind: "critical-chance-percent", amount: expectedPercent, scope: "melee critical strike chance" }); + expect(byForm.moonkin).toHaveLength(1); + expect(byForm.moonkin[0]).toMatchObject({ kind: "damage-percent", amount: expectedPercent, scope: "Arcane and Nature damage" }); + expect(byForm.tree).toHaveLength(1); + expect(byForm.tree[0]).toMatchObject({ kind: "healing-percent", amount: expectedPercent, scope: "healing" }); + + expect(wow335DruidMasterShapeshifterModifiersForForm(rank, null)).toEqual([]); + expect(talentModifiersForRanks({ [WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID]: rank }, "druid")) + .toEqual([]); + }); + + it("maps only the supported WoW Druid forms to their talent clauses", () => { + expect(wow335DruidShapeshiftFormForSpellId(5487)).toBe("bear"); + expect(wow335DruidShapeshiftFormForSpellId(9634)).toBe("bear"); + expect(wow335DruidShapeshiftFormForSpellId(768)).toBe("cat"); + expect(wow335DruidShapeshiftFormForSpellId(24858)).toBe("moonkin"); + expect(wow335DruidShapeshiftFormForSpellId(33891)).toBe("tree-of-life"); + expect(wow335DruidShapeshiftFormForSpellId(65139)).toBe("tree-of-life"); + expect(wow335DruidShapeshiftFormForSpellId(783)).toBeNull(); + + expect(wow335DruidShapeshiftFormForAuraId("wow335:9634:bear-form")).toBe("bear"); + expect(wow335DruidShapeshiftFormForAuraId("wow335:24858:moonkin-form")).toBe("moonkin"); + expect(wow335DruidShapeshiftFormForAuraId("custom:783:travel-form")).toBeNull(); + }); + + it("applies each modifier through the shared scalar matcher only after form selection", () => { + const bear = wow335DruidMasterShapeshifterModifiersForForm(2, "bear"); + const cat = wow335DruidMasterShapeshifterModifiersForForm(2, "cat"); + const moonkin = wow335DruidMasterShapeshifterModifiersForForm(2, "moonkin"); + const tree = wow335DruidMasterShapeshifterModifiersForForm(2, "tree-of-life"); + + expect(applyTalentModifierValue(100, bear, "damage-percent", { abilityName: "Swipe (Bear)" })).toBe(104); + expect(applyTalentModifierValue(100, cat, "critical-chance-percent", { abilityName: "Claw" })).toBe(104); + expect(applyTalentModifierValue(100, moonkin, "damage-percent", { tags: ["nature"] })).toBe(104); + expect(applyTalentModifierValue(100, moonkin, "damage-percent", { tags: ["fire"] })).toBe(100); + expect(applyTalentModifierValue(100, tree, "healing-percent", { abilityName: "Rejuvenation" })).toBe(104); + }); +}); diff --git a/src/game/wow335DruidMasterShapeshifterRuntime.ts b/src/game/wow335DruidMasterShapeshifterRuntime.ts new file mode 100644 index 00000000..1b0067a7 --- /dev/null +++ b/src/game/wow335DruidMasterShapeshifterRuntime.ts @@ -0,0 +1,110 @@ +import type { TalentModifier } from "./talentModifiers"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID = "talent-1915"; + +export type Wow335DruidShapeshiftForm = "bear" | "cat" | "moonkin" | "tree-of-life"; + +const masterShapeshifterTalent = WOW335_TALENT_NODES.find( + (talent) => talent.id === WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID, +) ?? (() => { + throw new Error(`Generated Druid talent ${WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID} is missing`); +})(); + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) + ? Math.max(0, Math.min(masterShapeshifterTalent.rankDescriptions.length, Math.trunc(rank))) + : 0; +} + +/** + * The generated rank tooltip has a separate bonus for each shapeshift form. + * Return only the active form's modifier so the clauses cannot leak globally. + */ +export function wow335DruidMasterShapeshifterModifiersForForm( + rank: number, + form: Wow335DruidShapeshiftForm | null, +): readonly TalentModifier[] { + const normalized = normalizedRank(rank); + if (normalized <= 0 || !form) return []; + const description = masterShapeshifterTalent.rankDescriptions[normalized - 1] ?? ""; + const clauses = { + bear: { + pattern: /Bear Form\s*-\s*Increases physical damage by\s+(\d+(?:\.\d+)?)%/i, + kind: "damage-percent" as const, + scope: "physical damage", + }, + cat: { + pattern: /Cat Form\s*-\s*Increases melee critical strike chance by\s+(\d+(?:\.\d+)?)%/i, + kind: "critical-chance-percent" as const, + scope: "melee critical strike chance", + }, + moonkin: { + pattern: /Moonkin Form\s*-\s*Increases Arcane and Nature damage by\s+(\d+(?:\.\d+)?)%/i, + kind: "damage-percent" as const, + scope: "Arcane and Nature damage", + }, + "tree-of-life": { + pattern: /Tree of Life Form\s*-\s*Increases healing by\s+(\d+(?:\.\d+)?)%/i, + kind: "healing-percent" as const, + scope: "healing", + }, + } as const; + const clause = clauses[form]; + const amount = Number(description.match(clause.pattern)?.[1] ?? 0); + if (!Number.isFinite(amount) || amount <= 0) return []; + + return [{ + kind: clause.kind, + amount, + unit: "percent", + scope: clause.scope, + sourceTalentId: WOW335_DRUID_MASTER_SHAPESHIFTER_TALENT_ID, + sourceTalentName: "Master Shapeshifter", + rank: normalized, + description, + }]; +} + +/** Resolve the stock WoW shapeshift spell IDs used by the active aura runtime. */ +export function wow335DruidShapeshiftFormForSpellId(spellId: number): Wow335DruidShapeshiftForm | null { + switch (spellId) { + case 5487: // Bear Form + case 9634: // Dire Bear Form + return "bear"; + case 768: // Cat Form + return "cat"; + case 24858: // Moonkin Form + return "moonkin"; + case 33891: // Tree of Life + case 65139: // Generated Tree of Life form row + return "tree-of-life"; + default: + return null; + } +} + +/** Extract a form from the canonical aura IDs written by generated WoW forms. */ +export function wow335DruidShapeshiftFormForAuraId(auraId: string): Wow335DruidShapeshiftForm | null { + const spellId = auraId.match(/^wow335:(\d+):/)?.[1]; + return spellId === undefined ? null : wow335DruidShapeshiftFormForSpellId(Number(spellId)); +} + +/** Find an active generated shapeshift aura on the requested actor. */ +export function wow335DruidShapeshiftFormForAuras( + auras: readonly { + readonly definition: { readonly id: string }; + readonly targetId: string; + readonly expiresAt: number | null; + }[], + actorId: string, + now: number, +): Wow335DruidShapeshiftForm | null { + const matching = auras + .filter((aura) => aura.targetId === actorId && (aura.expiresAt === null || aura.expiresAt > now)) + .map((aura) => wow335DruidShapeshiftFormForAuraId(aura.definition.id)) + .filter((form): form is Wow335DruidShapeshiftForm => form !== null); + // Normally the aura system removes the previous form. Taking the most recent + // active form also makes stale imported form auras deterministic. + return matching.at(-1) ?? null; +} diff --git a/src/game/wow335DruidPredatoryInstincts.integration.test.ts b/src/game/wow335DruidPredatoryInstincts.integration.test.ts new file mode 100644 index 00000000..9beff55d --- /dev/null +++ b/src/game/wow335DruidPredatoryInstincts.integration.test.ts @@ -0,0 +1,194 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { applyAura } from "./combatAuras"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, updatePartyRuntimePosition } from "./partyRuntimeRegistry"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { usePartyStore } from "./partyStore"; +import type { EnemyAttackDefinition } from "./enemyAttacks"; +import { WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID } from "./wow335DruidPredatoryInstinctsRuntime"; + +const TARGET_ID = "druid-predatory-instincts-target"; +const ENEMY_ID = "druid-predatory-instincts-area-enemy"; +const AREA_ATTACK: EnemyAttackDefinition = { + id: "predatory-area-hit", + name: "Predatory Instincts Area Hit", + delivery: "area", + target: "nearby-party", + school: "fire", + animation: "cast", + castTimeMs: 0, + range: 80, + radius: 80, + cooldownMs: 10_000, + initialCooldownMs: [0, 0], + repeatCooldownMs: [10_000, 10_000], + damageMultiplier: 1, +}; + +function stableUnit(seed: string): number { + let hash = 2_166_136_261; + for (let index = 0; index < seed.length; index += 1) { + hash ^= seed.charCodeAt(index); + hash = Math.imul(hash, 16_777_619); + } + return (hash >>> 0) / 0x1_0000_0000; +} + +function areaHitTime(actorId: string): number { + for (let now = 3_101; now < 20_000; now += 1) { + if (stableUnit(`${ENEMY_ID}:${AREA_ATTACK.id}:${actorId}:0:${now}:outcome`) >= 0.2) return now; + } + throw new Error(`Could not find an area-hit roll for ${actorId}`); +} + +function catFormAura(actorId: string, now = 1_000) { + return { + definition: { + id: "wow335:768:cat-form", + name: "Cat Form", + disposition: "buff" as const, + durationMs: null, + }, + sourceId: actorId, + targetId: actorId, + now, + }; +} + +function setCatForm(actorId: string): void { + useCombatStore.setState((state) => ({ + auras: [...applyAura(state.auras, catFormAura(actorId)).auras], + })); +} + +function registerCriticalTarget(): void { + useCombatStore.getState().registerMob(TARGET_ID, { name: TARGET_ID, maxHealth: 1_000_000, xpReward: 0 }); + useCombatStore.setState((state) => ({ + mobs: { + ...state.mobs, + [TARGET_ID]: { + ...state.mobs[TARGET_ID]!, + characterDefender: { + level: 80, + armor: 0, + dodgePercent: 0, + parryPercent: 0, + blockPercent: 0, + blockValue: 0, + }, + }, + }, + })); + setMobPosition(TARGET_ID, [4, 0, 0]); +} + +function criticalDamageForSource(sourceActorId: string, abilityId: string): number { + const member = usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId); + useCombatStore.getState().damageMob(TARGET_ID, 100, 2_000, { + actorId: sourceActorId, + role: member?.role ?? "damage", + abilityId, + }, "physical", { + attackKind: "melee", + seed: `druid-predatory-critical-${sourceActorId}-${abilityId}`, + abilityId, + criticalChanceBonusPercent: 1_000, + rules: { canMiss: false, canCrit: true, canDodge: false, canParry: false, canBlock: false }, + }); + return useCombatStore.getState().lastCombatResult!.damageBeforeMitigation; +} + +function areaDamageForActor(actorKind: "player" | "companion", rank: number): number { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "druid", level: 80, xp: 0 }); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + usePartyStore.getState().initializeParty(`druid-predatory-area-${actorKind}`, 1, useCombatStore.getState().health); + const firstMember = usePartyStore.getState().members[0]!; + usePartyStore.setState((state) => ({ + members: state.members.map((member, index) => index === 0 + ? { + ...member, + classId: "druid", + talentRanks: { ...member.talentRanks, [WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID]: rank }, + } + : member), + })); + for (const member of usePartyStore.getState().members) updatePartyRuntimePosition(member.id, 0, 0, 0); + useCombatStore.getState().registerMob(ENEMY_ID, { + name: ENEMY_ID, + level: 80, + maxHealth: 1_000, + xpReward: 0, + attacks: [{ + ...AREA_ATTACK, + target: actorKind === "player" ? "primary" : "nearby-party", + }], + }); + setMobPosition(ENEMY_ID, [2, 0, 0]); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID]: rank }, + mobs: { ...state.mobs, [ENEMY_ID]: { ...state.mobs[ENEMY_ID]!, attackDamage: 100 } }, + })); + + const actorId = actorKind === "player" ? PLAYER_AURA_ENTITY_ID : firstMember.id; + if (actorKind === "player") setCatForm(actorId); + else { + useCombatStore.setState((state) => ({ auras: [...applyAura(state.auras, catFormAura(actorId)).auras] })); + } + const healthBefore = actorKind === "player" + ? useCombatStore.getState().health + : usePartyStore.getState().members.find((member) => member.id === actorId)!.health; + useCombatStore.getState().damageMob(ENEMY_ID, 1, 1_449); + useCombatStore.getState().advanceMobCombat(1_450); + useCombatStore.getState().advanceMobCombat(areaHitTime(actorId)); + const healthAfter = actorKind === "player" + ? useCombatStore.getState().health + : usePartyStore.getState().members.find((member) => member.id === actorId)!.health; + return healthBefore - healthAfter; +} + +describe("WoW Druid Predatory Instincts integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "druid", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("druid-predatory-critical-tests", 1, useCombatStore.getState().health); + }); + + it("applies the Cat Form critical-damage rank to the player and generated companion", () => { + registerCriticalTarget(); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID]: 3 }, + })); + const playerWithoutCat = criticalDamageForSource(PLAYER_AGGRO_ID, "predatory-player-test"); + setCatForm(PLAYER_AURA_ENTITY_ID); + const playerWithCat = criticalDamageForSource(PLAYER_AGGRO_ID, "predatory-player-test-cat"); + + const member = usePartyStore.getState().members[0]!; + usePartyStore.setState((state) => ({ + members: state.members.map((candidate) => candidate.id === member.id ? { + ...candidate, + classId: "druid", + talentRanks: { ...candidate.talentRanks, [WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID]: 3 }, + } : candidate), + })); + const companionWithoutCat = criticalDamageForSource(member.id, "predatory-companion-test"); + setCatForm(member.id); + const companionWithCat = criticalDamageForSource(member.id, "predatory-companion-test-cat"); + + expect(playerWithoutCat).toBe(200); + expect(playerWithCat).toBe(215); + expect(companionWithoutCat).toBe(200); + expect(companionWithCat).toBe(215); + }); + + it.each(["player", "companion"] as const)("reduces only area attack damage for a Cat Form %s", (actorKind) => { + const withoutTalent = areaDamageForActor(actorKind, 0); + const withTalent = areaDamageForActor(actorKind, 3); + + expect(withoutTalent).toBeGreaterThan(0); + expect(withTalent).toBe(Math.round(withoutTalent * 0.9)); + }); +}); diff --git a/src/game/wow335DruidPredatoryInstinctsRuntime.test.ts b/src/game/wow335DruidPredatoryInstinctsRuntime.test.ts new file mode 100644 index 00000000..4f9f8af2 --- /dev/null +++ b/src/game/wow335DruidPredatoryInstinctsRuntime.test.ts @@ -0,0 +1,58 @@ +import { describe, expect, it } from "vitest"; +import { talentModifiersForRanks } from "./talentModifiers"; +import { + WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID, + wow335DruidPredatoryInstinctsAreaDamageMultiplier, + wow335DruidPredatoryInstinctsCriticalDamageMultiplier, + wow335DruidPredatoryInstinctsRankProfile, +} from "./wow335DruidPredatoryInstinctsRuntime"; + +describe("WoW Druid Predatory Instincts generated ranks", () => { + it.each([ + [1, 5, 4], + [2, 10, 7], + [3, 15, 10], + ] as const)("reads rank %i's critical and area-damage values from the generated tooltip", ( + rank, + criticalDamageBonusPercent, + areaDamageTakenReductionPercent, + ) => { + expect(wow335DruidPredatoryInstinctsRankProfile(rank)).toEqual({ + criticalDamageBonusPercent, + areaDamageTakenReductionPercent, + }); + }); + + it("adds the generated bonus to critical damage only while in Cat Form", () => { + expect(wow335DruidPredatoryInstinctsCriticalDamageMultiplier(2, 1, "cat")).toBeCloseTo(2.05); + expect(wow335DruidPredatoryInstinctsCriticalDamageMultiplier(2, 2, "cat")).toBeCloseTo(2.1); + expect(wow335DruidPredatoryInstinctsCriticalDamageMultiplier(2, 3, "cat")).toBeCloseTo(2.15); + expect(wow335DruidPredatoryInstinctsCriticalDamageMultiplier(2, 3, "bear")).toBe(2); + expect(wow335DruidPredatoryInstinctsCriticalDamageMultiplier(2, 3, null)).toBe(2); + expect(wow335DruidPredatoryInstinctsCriticalDamageMultiplier(1.5, 1, "cat")).toBeCloseTo(1.525); + }); + + it("reduces only area-attack damage received in Cat Form", () => { + expect(wow335DruidPredatoryInstinctsAreaDamageMultiplier(1, "cat", true)).toBeCloseTo(0.96); + expect(wow335DruidPredatoryInstinctsAreaDamageMultiplier(2, "cat", true)).toBeCloseTo(0.93); + expect(wow335DruidPredatoryInstinctsAreaDamageMultiplier(3, "cat", true)).toBeCloseTo(0.9); + expect(wow335DruidPredatoryInstinctsAreaDamageMultiplier(3, "cat", false)).toBe(1); + expect(wow335DruidPredatoryInstinctsAreaDamageMultiplier(3, "bear", true)).toBe(1); + expect(wow335DruidPredatoryInstinctsAreaDamageMultiplier(3, null, true)).toBe(1); + }); + + it("clamps malformed rank values and leaves the multiplier unchanged", () => { + expect(wow335DruidPredatoryInstinctsRankProfile(0)).toBeNull(); + expect(wow335DruidPredatoryInstinctsRankProfile(Number.NaN)).toBeNull(); + expect(wow335DruidPredatoryInstinctsRankProfile(99)).toEqual({ + criticalDamageBonusPercent: 15, + areaDamageTakenReductionPercent: 10, + }); + expect(wow335DruidPredatoryInstinctsAreaDamageMultiplier(-1, "cat", true)).toBe(1); + }); + + it("keeps Cat Form and area-delivery clauses out of always-on scalar modifiers", () => { + expect(talentModifiersForRanks({ [WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID]: 3 }, "druid")) + .toEqual([]); + }); +}); diff --git a/src/game/wow335DruidPredatoryInstinctsRuntime.ts b/src/game/wow335DruidPredatoryInstinctsRuntime.ts new file mode 100644 index 00000000..7cdce8d0 --- /dev/null +++ b/src/game/wow335DruidPredatoryInstinctsRuntime.ts @@ -0,0 +1,70 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import type { Wow335DruidShapeshiftForm } from "./wow335DruidMasterShapeshifterRuntime"; + +export const WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID = "talent-1795"; + +export interface Wow335DruidPredatoryInstinctsRankProfile { + readonly criticalDamageBonusPercent: number; + readonly areaDamageTakenReductionPercent: number; +} + +const predatoryInstinctsTalent = WOW335_TALENT_NODES.find( + (talent) => talent.id === WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID, +) ?? (() => { + throw new Error(`Generated Druid talent ${WOW335_DRUID_PREDATORY_INSTINCTS_TALENT_ID} is missing`); +})(); + +const parsedRankProfiles = predatoryInstinctsTalent.rankDescriptions.map((description) => { + const criticalDamage = description.match(/damage from all critical strikes by\s+(\d+(?:\.\d+)?)%/i); + const areaDamageReduction = description.match(/damage taken from area of effect attacks by\s+(\d+(?:\.\d+)?)%/i); + if (!criticalDamage || !areaDamageReduction) { + throw new Error(`Generated Predatory Instincts rank is missing its critical or area-damage value: ${description}`); + } + return { + criticalDamageBonusPercent: Number(criticalDamage[1]), + areaDamageTakenReductionPercent: Number(areaDamageReduction[1]), + } satisfies Wow335DruidPredatoryInstinctsRankProfile; +}); + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) + ? Math.max(0, Math.min(parsedRankProfiles.length, Math.trunc(rank))) + : 0; +} + +/** Read the exact critical and area-damage values from the selected generated rank. */ +export function wow335DruidPredatoryInstinctsRankProfile( + rank: number, +): Wow335DruidPredatoryInstinctsRankProfile | null { + const safeRank = normalizedRank(rank); + return safeRank > 0 ? parsedRankProfiles[safeRank - 1] ?? null : null; +} + +/** + * Aura 163 increases the bonus portion of a critical strike. Keep the bonus + * inactive outside Cat Form and preserve the caller's base crit multiplier. + */ +export function wow335DruidPredatoryInstinctsCriticalDamageMultiplier( + baseCriticalDamageMultiplier: number, + rank: number, + form: Wow335DruidShapeshiftForm | null, +): number { + const profile = wow335DruidPredatoryInstinctsRankProfile(rank); + const baseMultiplier = Number.isFinite(baseCriticalDamageMultiplier) + ? Math.max(1, baseCriticalDamageMultiplier) + : 1; + if (!profile || form !== "cat" || baseMultiplier <= 1) return baseMultiplier; + const criticalBonus = baseMultiplier - 1; + return 1 + criticalBonus * (1 + profile.criticalDamageBonusPercent / 100); +} + +/** The area-damage rider needs both the Cat Form aura and an authored area attack. */ +export function wow335DruidPredatoryInstinctsAreaDamageMultiplier( + rank: number, + form: Wow335DruidShapeshiftForm | null, + isAreaAttack: boolean, +): number { + const profile = wow335DruidPredatoryInstinctsRankProfile(rank); + if (!profile || form !== "cat" || !isAreaAttack) return 1; + return Math.max(0, 1 - profile.areaDamageTakenReductionPercent / 100); +} diff --git a/src/game/wow335DruidRuntime.test.ts b/src/game/wow335DruidRuntime.test.ts index ad8bef78..d4d739bd 100644 --- a/src/game/wow335DruidRuntime.test.ts +++ b/src/game/wow335DruidRuntime.test.ts @@ -2,7 +2,8 @@ import { beforeEach, describe, expect, it } from "vitest"; import { PLAYER_AGGRO_ID } from "./aggro"; import { abilityTalentNodeId, type AbilityDefinition } from "./abilityCatalog"; import { WOW335_GLYPH_OF_SWIFTMEND_ID } from "./wow335GlyphCatalog"; -import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; +import { talentModifiersForRanks } from "./talentModifiers"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; import { useCombatStore, type TimedCombatEffect } from "./combatStore"; @@ -66,6 +67,31 @@ describe("WoW Druid active talent runtime", () => { clearPartyRuntimeRegistry(); }); + it("lets Nature's Reach extend a cast-time damaging spell to its generated rank range", () => { + useCombatStore.getState().initializeCharacter({ classId: "druid", level: 80, xp: 0 }); + const wrath = useCombatStore.getState().abilities.find((candidate) => candidate.name === "Wrath"); + if (!wrath) throw new Error("Druid Wrath is missing from the learned ability catalog."); + useCombatStore.getState().registerMob("natures-reach-target", { name: "Nature's Reach target", maxHealth: 100_000 }); + setMobPosition("natures-reach-target", [35, 0, 0]); + useCombatStore.getState().selectMob("natures-reach-target"); + + expect(useCombatStore.getState().castAbility(wrath.id, { + targetActorId: "natures-reach-target", + now: 1_000, + })).toMatchObject({ ok: false, reason: "out-of-range" }); + + const talentRanks = { ...useCombatStore.getState().talentRanks, "talent-764": 3 }; + useCombatStore.setState({ + talentRanks, + talentModifiers: talentModifiersForRanks(talentRanks, "druid"), + }); + const extendedCast = useCombatStore.getState().castAbility(wrath.id, { + targetActorId: "natures-reach-target", + now: 2_000, + }); + expect(extendedCast.ok).toBe(true); + }); + it.each([ ["Rejuvenation", 100, 5, 400], ["Regrowth", 150, 7, 900], diff --git a/src/game/wow335DruidTalentRuntime.test.ts b/src/game/wow335DruidTalentRuntime.test.ts index 058b2583..7e2ce208 100644 --- a/src/game/wow335DruidTalentRuntime.test.ts +++ b/src/game/wow335DruidTalentRuntime.test.ts @@ -2,6 +2,31 @@ import { describe, expect, it } from "vitest"; import { applyTalentModifierValue, talentModifiersForRanks } from "./talentModifiers"; describe("WoW Druid talent modifier runtime", () => { + it.each([ + [1, 2], + [2, 4], + [3, 6], + ] as const)("applies Nature's Reach rank %i to cast-time and channeled damage spells", (rank, expectedYards) => { + const modifiers = talentModifiersForRanks({ "talent-764": rank }, "druid"); + + expect(applyTalentModifierValue(30, modifiers, "range-flat-yards", { + abilityName: "Wrath", + tags: ["damage", "cast-time"], + })).toBe(30 + expectedYards); + expect(applyTalentModifierValue(30, modifiers, "range-flat-yards", { + abilityName: "Hurricane", + tags: ["damage", "channel"], + })).toBe(30 + expectedYards); + expect(applyTalentModifierValue(30, modifiers, "range-flat-yards", { + abilityName: "Moonfire", + tags: ["damage", "instant"], + })).toBe(30); + expect(applyTalentModifierValue(30, modifiers, "range-flat-yards", { + abilityName: "Healing Touch", + tags: ["healing", "cast-time"], + })).toBe(30); + }); + it.each([1, 2, 3])("scopes Savage Fury rank %i to its six generated abilities", (rank) => { const modifiers = talentModifiersForRanks({ "talent-805": rank }, "druid"); const savageFury = modifiers.filter((modifier) => modifier.sourceTalentId === "talent-805"); diff --git a/src/game/wow335DruidTalentRuntime.ts b/src/game/wow335DruidTalentRuntime.ts index 12e49c86..76ee9990 100644 --- a/src/game/wow335DruidTalentRuntime.ts +++ b/src/game/wow335DruidTalentRuntime.ts @@ -1,5 +1,6 @@ import type { TalentModifier } from "./talentModifiers"; import type { AuraDefinition } from "./combatAuras"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; export const WOW335_DRUID_FERAL_INSTINCT_TALENT_ID = "talent-799"; export const WOW335_DRUID_FERAL_INSTINCT_TIGER_AURA_TAG = "wow335-druid-feral-instinct-tiger-active"; @@ -11,6 +12,23 @@ export const WOW335_DRUID_FERAL_INSTINCT_ATTACK_NAMES = new Set([ ]); const FERAL_INSTINCT_DAMAGE_PERCENT_BY_RANK = [0, 10, 20, 30] as const; +export const WOW335_DRUID_NATURES_REACH_TALENT_ID = "talent-764"; + +const natureReachTalent = WOW335_TALENT_NODES.find( + (talent) => talent.id === WOW335_DRUID_NATURES_REACH_TALENT_ID, +) ?? (() => { + throw new Error(`Generated Druid talent ${WOW335_DRUID_NATURES_REACH_TALENT_ID} is missing`); +})(); + +/** Nature's Reach rank payload from the generated DBC-backed rank descriptions. */ +export function wow335DruidNaturesReachRangeBonusYards(rank: number): number { + const normalizedRank = Number.isFinite(rank) + ? Math.max(0, Math.min(natureReachTalent.rankDescriptions.length, Math.trunc(rank))) + : 0; + if (normalizedRank === 0) return 0; + const description = natureReachTalent.rankDescriptions[normalizedRank - 1] ?? ""; + return Number(description.match(/range of your damaging spells with a channeling or cast time by (\d+(?:\.\d+)?) yards/i)?.[1] ?? 0); +} export function wow335DruidFeralInstinctPercent(rank: number): number { return FERAL_INSTINCT_DAMAGE_PERCENT_BY_RANK[Math.max(0, Math.min(3, Math.trunc(rank)))] ?? 0; @@ -57,6 +75,20 @@ export function wow335DruidTalentModifierOverrides( rank: number, description: string, ): readonly TalentModifier[] { + if (talentId === WOW335_DRUID_NATURES_REACH_TALENT_ID) { + const rangeBonus = wow335DruidNaturesReachRangeBonusYards(rank); + if (rangeBonus <= 0) return []; + return [{ + kind: "range-flat-yards", + amount: rangeBonus, + unit: "yards", + scope: "range of your damaging spells with a channeling or cast time", + sourceTalentId: talentId, + sourceTalentName: "Nature's Reach", + rank, + description, + }]; + } if (talentId === WOW335_DRUID_FERAL_INSTINCT_TALENT_ID) { const swipeAndRavageDamage = description.match(/increases\s+swipe\s+and\s+ravage\s+damage\s+by\s+(\d+(?:\.\d+)?)%/i); if (!swipeAndRavageDamage) return []; diff --git a/src/game/wow335HunterBestialDiscipline.integration.test.ts b/src/game/wow335HunterBestialDiscipline.integration.test.ts new file mode 100644 index 00000000..921fe164 --- /dev/null +++ b/src/game/wow335HunterBestialDiscipline.integration.test.ts @@ -0,0 +1,83 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID } from "./wow335HunterBestialDisciplineRuntime"; + +describe("WoW 3.3.5a Hunter Bestial Discipline Focus runtime", () => { + beforeEach(() => { + useCombatStore.getState().initializeCharacter({ classId: "hunter", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("bestial-discipline-runtime", 80, useCombatStore.getState().health, "damage", 2); + }); + + it("applies each owner's rank to that owner's pet Focus gained over elapsed time", () => { + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID]: 1 }, + })); + const callPet = useCombatStore.getState().abilities.find((ability) => ability.name === "Call Pet"); + if (!callPet) throw new Error("Call Pet is missing from the Hunter catalog."); + expect(useCombatStore.getState().castAbility(callPet.id, [0, 0, 0], 1_000).ok).toBe(true); + const playerPet = useCombatStore.getState().summons.find((summon) => summon.hunterPet); + if (!playerPet?.resources.focus) throw new Error("Call Pet did not create a Focus-bearing Hunter pet."); + + const companion = createConfiguredPartyMember({ + name: "Bestial Discipline Companion", + classId: "hunter", + specialization: "Beast Mastery", + specializationId: "hunter:beast-mastery", + talentTreeId: "hunter-beast-mastery", + talentRanks: { [WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID]: 2 }, + role: "damage", + }, 80, 0, "bestial-discipline-companion"); + const nonHunter = createConfiguredPartyMember({ + name: "Bestial Discipline Non-Hunter Control", + classId: "rogue", + specialization: "Assassination", + specializationId: "rogue:assassination", + talentTreeId: "rogue-assassination", + talentRanks: {}, + role: "damage", + }, 80, 0, "bestial-discipline-non-hunter"); + usePartyStore.setState({ members: [companion, nonHunter] }); + + const resetFocus = { + ...playerPet.resources.focus, + current: 0, + regenerationPerSecond: 5, + }; + useCombatStore.setState((state) => ({ + summons: [ + ...state.summons.map((summon) => summon.id === playerPet.id + ? { ...summon, resources: { ...summon.resources, focus: resetFocus }, hunterPetFocusUpdatedAt: 1_000 } + : summon), + { + ...playerPet, + id: "bestial-discipline-companion-pet", + ownerActorId: companion.id, + resources: { ...playerPet.resources, focus: resetFocus }, + hunterPetFocusUpdatedAt: 1_000, + }, + { + ...playerPet, + id: "bestial-discipline-non-hunter-pet-control", + ownerActorId: nonHunter.id, + resources: { ...playerPet.resources, focus: resetFocus }, + hunterPetFocusUpdatedAt: 1_000, + }, + ], + })); + useCombatStore.getState().synchronizeActors(); + + useCombatStore.getState().tick(1, 2_000); + const summons = useCombatStore.getState().summons; + const playerFocus = summons.find((summon) => summon.id === playerPet.id)?.resources.focus; + const companionFocus = summons.find((summon) => summon.id === "bestial-discipline-companion-pet")?.resources.focus; + const nonHunterFocus = summons.find((summon) => summon.id === "bestial-discipline-non-hunter-pet-control")?.resources.focus; + + expect(playerFocus).toMatchObject({ current: 7.5, regenerationPerSecond: 7.5 }); + expect(companionFocus).toMatchObject({ current: 10, regenerationPerSecond: 10 }); + expect(nonHunterFocus).toMatchObject({ current: 5, regenerationPerSecond: 5 }); + expect(summons.find((summon) => summon.id === playerPet.id)?.ownerActorId).toBe(PLAYER_AGGRO_ID); + expect(summons.find((summon) => summon.id === "bestial-discipline-companion-pet")?.ownerActorId).toBe(companion.id); + }); +}); diff --git a/src/game/wow335HunterBestialDisciplineRuntime.test.ts b/src/game/wow335HunterBestialDisciplineRuntime.test.ts new file mode 100644 index 00000000..30baf802 --- /dev/null +++ b/src/game/wow335HunterBestialDisciplineRuntime.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, it } from "vitest"; +import { + WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID, + WOW335_HUNTER_PET_BASE_FOCUS_REGENERATION_PER_SECOND, + wow335HunterBestialDisciplineProfile, + wow335HunterPetFocusRegenerationPerSecond, +} from "./wow335HunterBestialDisciplineRuntime"; + +describe("WoW 3.3.5a Hunter Bestial Discipline", () => { + it("reads the exact Focus regeneration bonus from generated rank rows", () => { + expect(WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID).toBe("talent-1390"); + expect([1, 2].map(wow335HunterBestialDisciplineProfile)).toEqual([ + { rank: 1, rankSpellId: 19_590, focusRegenerationBonusPercent: 50 }, + { rank: 2, rankSpellId: 19_592, focusRegenerationBonusPercent: 100 }, + ]); + expect(wow335HunterBestialDisciplineProfile(0)).toBeNull(); + expect(wow335HunterBestialDisciplineProfile(3)).toBeNull(); + }); + + it("scales the existing pet Focus rate without changing the untrained rate", () => { + expect(WOW335_HUNTER_PET_BASE_FOCUS_REGENERATION_PER_SECOND).toBe(5); + expect(wow335HunterPetFocusRegenerationPerSecond(5, 0)).toBe(5); + expect(wow335HunterPetFocusRegenerationPerSecond(5, 1)).toBe(7.5); + expect(wow335HunterPetFocusRegenerationPerSecond(5, 2)).toBe(10); + expect(wow335HunterPetFocusRegenerationPerSecond(Number.NaN, 2)).toBe(0); + }); +}); diff --git a/src/game/wow335HunterBestialDisciplineRuntime.ts b/src/game/wow335HunterBestialDisciplineRuntime.ts new file mode 100644 index 00000000..0666b8e0 --- /dev/null +++ b/src/game/wow335HunterBestialDisciplineRuntime.ts @@ -0,0 +1,46 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID = "talent-1390"; +export const WOW335_HUNTER_PET_BASE_FOCUS_REGENERATION_PER_SECOND = 5; + +export interface Wow335HunterBestialDisciplineProfile { + readonly rank: number; + readonly rankSpellId: number; + readonly focusRegenerationBonusPercent: number; +} + +const talent = WOW335_TALENT_NODES.find((node) => node.id === WOW335_HUNTER_BESTIAL_DISCIPLINE_TALENT_ID); + +/** Reads the tamed-beast Focus clause from the generated local talent rank. */ +export function wow335HunterBestialDisciplineProfile( + rank: number, +): Wow335HunterBestialDisciplineProfile | null { + const normalizedRank = Math.trunc(Number.isFinite(rank) ? rank : 0); + const description = talent?.rankDescriptions[normalizedRank - 1]; + const rankEffect = talent?.rankEffects[normalizedRank - 1]; + if (!description || !rankEffect) return null; + + const focusMatch = description.match( + /increases the focus regeneration of your tamed beasts by (\d+(?:\.\d+)?)%/i, + ); + const focusAura = rankEffect.effects.find((effect) => effect.effectType === 6 + && effect.auraType === 107 + && effect.miscValue === 8); + if (!focusMatch || !focusAura || focusAura.basePoints !== Number(focusMatch[1])) return null; + + return Object.freeze({ + rank: normalizedRank, + rankSpellId: rankEffect.spellId, + focusRegenerationBonusPercent: Number(focusMatch[1]), + }); +} + +/** Applies the generated talent bonus to the pet's existing Focus rate. */ +export function wow335HunterPetFocusRegenerationPerSecond( + baseRate: number, + talentRank: number, +): number { + const safeBaseRate = Math.max(0, Number.isFinite(baseRate) ? baseRate : 0); + const profile = wow335HunterBestialDisciplineProfile(talentRank); + return safeBaseRate * (1 + (profile?.focusRegenerationBonusPercent ?? 0) / 100); +} diff --git a/src/game/wow335HunterGoForTheThroat.integration.test.ts b/src/game/wow335HunterGoForTheThroat.integration.test.ts new file mode 100644 index 00000000..0e6b9217 --- /dev/null +++ b/src/game/wow335HunterGoForTheThroat.integration.test.ts @@ -0,0 +1,312 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { normalizeActorResourcePool } from "./combatActors"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { useCombatStore } from "./combatStore"; +import { preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID } from "./wow335HunterGoForTheThroatRuntime"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { EMPTY_ITEM_STATS } from "./itemStats"; + +const TARGET_ID = "go-for-the-throat-target"; +const ICD_TAG = "wow335-hunter-go-for-the-throat-icd"; + +function registerTarget(): void { + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Go for the Throat target", maxHealth: 1_000_000, xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); +} + +function addPlayerPet(focusCurrent: number) { + const callPet = useCombatStore.getState().abilities.find((ability) => ability.name === "Call Pet"); + if (!callPet) throw new Error("Missing generated Hunter Call Pet ability."); + expect(useCombatStore.getState().castAbility(callPet.id, undefined, 500).ok).toBe(true); + const pet = useCombatStore.getState().summons.find((summon) => summon.hunterPet); + if (!pet) throw new Error("Call Pet did not create an active Hunter pet."); + const focus = pet.resources.focus ?? normalizeActorResourcePool("focus", 100, 100, 5, 500); + useCombatStore.setState((state) => ({ + summons: state.summons.map((summon) => summon.id === pet.id + ? { ...summon, resources: { ...summon.resources, focus: { ...focus, current: focusCurrent } } } + : summon), + })); + return pet.id; +} + +function addCompanion(classId: "hunter" | "paladin", talentRanks: Record, seed: string, index = 0) { + const isHunter = classId === "hunter"; + const member = createConfiguredPartyMember({ + name: isHunter ? "Go for the Throat Hunter" : "Non-Hunter owner", + classId, + specialization: isHunter ? "Marksmanship" : "Retribution", + specializationId: isHunter ? "hunter:marksmanship" : "paladin:retribution", + talentTreeId: isHunter ? "hunter-marksmanship" : "paladin-retribution", + talentRanks, + role: "damage", + }, 80, index, seed); + usePartyStore.setState({ members: [member] }); + useCombatStore.getState().synchronizeActors(); + return member; +} + +function addOwnedCompanionPet(ownerId: string, sourcePetId: string, focusCurrent: number): string { + const sourcePet = useCombatStore.getState().summons.find((summon) => summon.id === sourcePetId); + if (!sourcePet?.hunterPet) throw new Error("Expected a live Hunter pet template."); + const id = `${ownerId}:go-for-the-throat-pet`; + const oldFocus = sourcePet.resources.focus ?? normalizeActorResourcePool("focus", 100, 100, 5, 500); + const pet = { + ...sourcePet, + id, + ownerActorId: ownerId, + kind: "summon" as const, + expiresAt: 100_000, + resources: { ...sourcePet.resources, focus: { ...oldFocus, current: focusCurrent } }, + }; + useCombatStore.setState((state) => ({ summons: [...state.summons, pet] })); + useCombatStore.getState().synchronizeActors(); + return id; +} + +function hit( + sourceActorId: string, + now: number, + attackKind: "melee" | "ranged" | "spell", + critical = true, + abilityIdOverride?: string, +) { + const abilityId = abilityIdOverride ?? (attackKind === "melee" + ? "wow335-hunter-raptor-strike" + : attackKind === "ranged" ? "hunter-arcane-shot" : "wow335-hunter-explosive-trap"); + const result = useCombatStore.getState().damageMob( + TARGET_ID, + 100, + now, + { actorId: sourceActorId, role: "damage", abilityId }, + "physical", + { + attackKind, + seed: `${sourceActorId}:${attackKind}:${critical}:${now}:go-for-the-throat-test`, + abilityId, + criticalChanceBonusPercent: critical ? 100 : 0, + rules: { + canMiss: false, + canDodge: false, + canParry: false, + canBlock: false, + canCrit: critical, + resistanceMode: "none", + }, + }, + ); + expect(result.combatResult?.critical).toBe(critical); + return result; +} + +function focusOf(summonId: string): number { + return useCombatStore.getState().summons.find((summon) => summon.id === summonId)?.resources.focus?.current ?? -1; +} + +describe("WoW Hunter Go for the Throat combat integration", () => { + beforeEach(async () => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + await preloadAbilityCatalogsForClasses(["hunter", "paladin"]); + useCombatStore.getState().initializeCharacter({ classId: "hunter", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("wow335-go-for-the-throat", 80, useCombatStore.getState().health, "damage", 2); + registerTarget(); + }); + + it("caps player pet Focus and keeps the Hunter-owned ICD through a pet swap at its exact two-second boundary", () => { + const originalPetId = addPlayerPet(90); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID]: 2 }, + })); + + hit(PLAYER_AGGRO_ID, 1_000, "ranged"); + expect(focusOf(originalPetId)).toBe(100); + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + kind: "resource", sourceActorId: PLAYER_AGGRO_ID, targetActorId: originalPetId, + abilityId: WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID, + rawAmount: 30, effectiveAmount: 10, overheal: 20, + })); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: PLAYER_AGGRO_ID, targetId: PLAYER_AGGRO_ID, appliedAt: 1_000, expiresAt: 3_000, + definition: expect.objectContaining({ utilityTags: [ICD_TAG] }), + })); + + const original = useCombatStore.getState().summons.find((summon) => summon.id === originalPetId)!; + const swappedPetId = `${originalPetId}:swapped`; + useCombatStore.setState((state) => ({ + summons: state.summons.flatMap((summon) => summon.id === originalPetId + ? [{ ...original, id: swappedPetId, resources: { + ...original.resources, + focus: { ...original.resources.focus!, current: 0 }, + } }] + : [summon]), + })); + useCombatStore.getState().synchronizeActors(); + + hit(PLAYER_AGGRO_ID, 2_999, "melee"); + expect(focusOf(swappedPetId)).toBe(0); + hit(PLAYER_AGGRO_ID, 3_000, "melee"); + expect(focusOf(swappedPetId)).toBe(30); + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + occurredAt: 3_000, kind: "resource", targetActorId: swappedPetId, + rawAmount: 30, effectiveAmount: 30, + })); + }); + + it("uses a companion Hunter's rank and grants Focus to that companion's living pet", () => { + const templatePetId = addPlayerPet(0); + const rank = { [WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID]: 1 }; + const member = addCompanion("hunter", rank, "wow335-go-for-the-throat-companion"); + const petId = addOwnedCompanionPet(member.id, templatePetId, 40); + + hit(member.id, 1_000, "melee"); + + expect(focusOf(petId)).toBe(55); + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + occurredAt: 1_000, kind: "resource", sourceActorId: member.id, targetActorId: petId, + abilityId: WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID, + rawAmount: 15, effectiveAmount: 15, + })); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: member.id, targetId: member.id, appliedAt: 1_000, expiresAt: 3_000, + definition: expect.objectContaining({ utilityTags: [ICD_TAG] }), + })); + }); + + it("enables companion Hunter autoattack crit rolls only while Go for the Throat is learned", () => { + const templatePetId = addPlayerPet(0); + const member = addCompanion("hunter", { + [WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID]: 2, + }, "wow335-go-for-the-throat-autoattack"); + const petId = addOwnedCompanionPet(member.id, templatePetId, 0); + usePartyStore.setState((state) => ({ + command: "attack", + activeMobId: TARGET_ID, + members: state.members.map((candidate) => candidate.id === member.id + ? { + ...candidate, + gearStats: { ...EMPTY_ITEM_STATS, criticalStrikeRating: 1_000_000 }, + globalCooldownEndsAt: 100_000, + nextActionAt: 100_000, + } + : candidate), + })); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + useCombatStore.getState().damageMob(TARGET_ID, 1, 100); + + let criticalAutoAttack: ReturnType["combatEvents"][number] | undefined; + for (let now = 1_000; now <= 30_000 && !criticalAutoAttack; now += 1_000) { + advanceDungeonPartyCombat(now); + criticalAutoAttack = useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" + && event.sourceActorId === member.id + && event.targetActorId === TARGET_ID + && event.abilityId === "party-auto-attack" + && event.critical + )); + } + expect(criticalAutoAttack).toBeDefined(); + expect(focusOf(petId)).toBe(30); + + const untalented = addCompanion("hunter", {}, "wow335-go-for-the-throat-untalented", 1); + const untalentedPetId = addOwnedCompanionPet(untalented.id, templatePetId, 0); + useCombatStore.setState((state) => ({ + summons: state.summons.map((summon) => summon.id === untalentedPetId + ? { ...summon, hunterPetFocusUpdatedAt: 40_000 } + : summon), + })); + usePartyStore.setState((state) => ({ + command: "attack", + activeMobId: TARGET_ID, + members: state.members.map((candidate) => candidate.id === untalented.id + ? { + ...candidate, + gearStats: { ...EMPTY_ITEM_STATS, criticalStrikeRating: 1_000_000 }, + globalCooldownEndsAt: 100_000, + nextActionAt: 100_000, + } + : candidate), + })); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(untalented.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(untalented.id, TARGET_ID, true); + const priorUntalentedDamageEvents = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.sourceActorId === untalented.id && event.abilityId === "party-auto-attack" + )).length; + advanceDungeonPartyCombat(40_000); + const untalentedAutoAttacks = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.sourceActorId === untalented.id && event.abilityId === "party-auto-attack" + )).slice(priorUntalentedDamageEvents); + expect(untalentedAutoAttacks.length).toBeGreaterThan(0); + expect(untalentedAutoAttacks.every((event) => !event.critical)).toBe(true); + expect(focusOf(untalentedPetId)).toBe(0); + expect(useCombatStore.getState().auras.some((aura) => aura.targetId === untalented.id + && aura.definition.utilityTags?.includes(ICD_TAG))).toBe(false); + }); + + it("rolls a critical result for the generated companion Hunter Arcane Shot", () => { + const member = addCompanion("hunter", { + [WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID]: 1, + }, "wow335-go-for-the-throat-arcane-shot"); + usePartyStore.setState((state) => ({ + command: "attack", + activeMobId: TARGET_ID, + members: state.members.map((candidate) => candidate.id === member.id + ? { + ...candidate, + gearStats: { ...EMPTY_ITEM_STATS, criticalStrikeRating: 1_000_000 }, + globalCooldownEndsAt: 0, + nextActionAt: 0, + } + : candidate), + })); + useCombatStore.getState().synchronizeActors(); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + useCombatStore.getState().damageMob(TARGET_ID, 1, 100); + + let criticalArcaneShot: ReturnType["combatEvents"][number] | undefined; + for (let now = 1_000; now <= 30_000 && !criticalArcaneShot; now += 1_000) { + advanceDungeonPartyCombat(now); + criticalArcaneShot = useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" + && event.sourceActorId === member.id + && event.targetActorId === TARGET_ID + && event.abilityId === "hunter-arcane-shot" + && event.critical + )); + } + expect(criticalArcaneShot).toBeDefined(); + }); + + it("ignores Hunter spell crits and non-crits, and does not grant Focus for a non-Hunter owner's crit", () => { + const templatePetId = addPlayerPet(40); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID]: 2 }, + })); + hit(PLAYER_AGGRO_ID, 1_000, "spell"); + hit(PLAYER_AGGRO_ID, 1_050, "ranged", true, "wow335-hunter-explosive-trap"); + hit(PLAYER_AGGRO_ID, 1_100, "ranged", false); + expect(focusOf(templatePetId)).toBe(40); + expect(useCombatStore.getState().auras.some((aura) => aura.definition.utilityTags?.includes(ICD_TAG))).toBe(false); + + const member = addCompanion("paladin", {}, "wow335-go-for-the-throat-non-hunter"); + const petId = addOwnedCompanionPet(member.id, templatePetId, 40); + hit(member.id, 2_000, "ranged"); + expect(focusOf(petId)).toBe(40); + expect(useCombatStore.getState().auras.some((aura) => aura.targetId === member.id + && aura.definition.utilityTags?.includes(ICD_TAG))).toBe(false); + }); +}); diff --git a/src/game/wow335HunterGoForTheThroatRuntime.test.ts b/src/game/wow335HunterGoForTheThroatRuntime.test.ts new file mode 100644 index 00000000..b9f9cb8b --- /dev/null +++ b/src/game/wow335HunterGoForTheThroatRuntime.test.ts @@ -0,0 +1,95 @@ +import { describe, expect, it } from "vitest"; +import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; +import { + WOW335_HUNTER_GO_FOR_THE_THROAT_INTERNAL_COOLDOWN_MS, + WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID, + wow335HunterGoForTheThroatAttackKindForAbility, + wow335HunterGoForTheThroatProcPlan, + wow335HunterGoForTheThroatRankMechanics, +} from "./wow335HunterGoForTheThroatRuntime"; + +const event = (overrides: Partial[1]> = {}) => ({ + attackType: "ranged" as const, + critical: true, + hasLivingActivePet: true, + focusCurrent: 40, + focusMaximum: 100, + lastProcAt: null, + now: 10_000, + ...overrides, +}); + +describe("WoW 3.3.5a Hunter Go for the Throat", () => { + it("reads both exact Focus amounts and the two-second lockout from generated talent ranks", () => { + expect(WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID).toBe("talent-1818"); + expect([1, 2].map(wow335HunterGoForTheThroatRankMechanics)).toEqual([ + expect.objectContaining({ focusPerProc: 15, internalCooldownMs: 2_000 }), + expect.objectContaining({ focusPerProc: 30, internalCooldownMs: 2_000 }), + ]); + expect(WOW335_HUNTER_GO_FOR_THE_THROAT_INTERNAL_COOLDOWN_MS).toBe(2_000); + expect(wow335HunterGoForTheThroatRankMechanics(0)).toBeNull(); + expect(wow335HunterGoForTheThroatRankMechanics(3)).toBeNull(); + }); + + it("classifies only the generated direct Hunter attack rows for companion crit rolls", () => { + const attackKinds = { + "wow335-hunter-aimed-shot": "ranged", + "wow335-hunter-arcane-shot": "ranged", + "wow335-hunter-auto-shot": "ranged", + "wow335-hunter-chimera-shot": "ranged", + "wow335-hunter-counterattack": "melee", + "wow335-hunter-kill-shot": "ranged", + "wow335-hunter-mongoose-bite": "melee", + "wow335-hunter-multi-shot": "ranged", + "wow335-hunter-raptor-strike": "melee", + "wow335-hunter-scatter-shot": "ranged", + "wow335-hunter-silencing-shot": "ranged", + "wow335-hunter-steady-shot": "ranged", + } as const; + const localHunterAbilityIds = new Set(WOW335_ABILITIES_BY_CLASS.hunter.map((ability) => ability.id)); + + for (const [abilityId, attackKind] of Object.entries(attackKinds)) { + expect(localHunterAbilityIds.has(abilityId), `${abilityId} should resolve to a local Hunter row`).toBe(true); + expect(wow335HunterGoForTheThroatAttackKindForAbility(abilityId)).toBe(attackKind); + } + expect(wow335HunterGoForTheThroatAttackKindForAbility("hunter-arcane-shot")).toBe("ranged"); + expect(wow335HunterGoForTheThroatAttackKindForAbility("hunter-steady-shot")).toBe("ranged"); + expect(wow335HunterGoForTheThroatAttackKindForAbility("wow335-hunter-explosive-trap")).toBeNull(); + expect(wow335HunterGoForTheThroatAttackKindForAbility("wow335-hunter-serpent-sting")).toBeNull(); + expect(wow335HunterGoForTheThroatAttackKindForAbility("wow335-hunter-volley")).toBeNull(); + }); + + it("restores Focus on a melee or ranged critical strike and caps at the pet's maximum", () => { + expect(wow335HunterGoForTheThroatProcPlan(1, event({ attackType: "melee" }))).toEqual({ + focusGain: 15, + focusAfter: 55, + lastProcAt: 10_000, + }); + expect(wow335HunterGoForTheThroatProcPlan(2, event({ focusCurrent: 90 }))).toEqual({ + focusGain: 10, + focusAfter: 100, + lastProcAt: 10_000, + }); + }); + + it("respects the shared rank lockout and permits a proc exactly when it expires", () => { + expect(wow335HunterGoForTheThroatProcPlan(1, event({ lastProcAt: 8_001 }))).toBeNull(); + expect(wow335HunterGoForTheThroatProcPlan(2, event({ lastProcAt: 8_000 }))).toEqual({ + focusGain: 30, + focusAfter: 70, + lastProcAt: 10_000, + }); + }); + + it("rejects non-crits, non-melee/ranged events, and missing or dead pets", () => { + expect(wow335HunterGoForTheThroatProcPlan(2, event({ critical: false }))).toBeNull(); + expect(wow335HunterGoForTheThroatProcPlan(2, event({ attackType: "other" }))).toBeNull(); + expect(wow335HunterGoForTheThroatProcPlan(2, event({ hasLivingActivePet: false }))).toBeNull(); + expect(wow335HunterGoForTheThroatProcPlan(0, event())).toBeNull(); + }); + + it("rejects malformed timestamps without changing pet resources", () => { + expect(wow335HunterGoForTheThroatProcPlan(2, event({ now: Number.NaN }))).toBeNull(); + expect(wow335HunterGoForTheThroatProcPlan(2, event({ lastProcAt: Number.POSITIVE_INFINITY }))).toBeNull(); + }); +}); diff --git a/src/game/wow335HunterGoForTheThroatRuntime.ts b/src/game/wow335HunterGoForTheThroatRuntime.ts new file mode 100644 index 00000000..39c96e5a --- /dev/null +++ b/src/game/wow335HunterGoForTheThroatRuntime.ts @@ -0,0 +1,118 @@ +import { runtimeTalentNodeById } from "./talentRuntimeCatalog"; + +export const WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID = "talent-1818"; +export const WOW335_HUNTER_GO_FOR_THE_THROAT_INTERNAL_COOLDOWN_MS = 2_000; + +const HUNTER_GO_FOR_THE_THROAT_DIRECT_ATTACK_KINDS: Readonly> = Object.freeze({ + "wow335-hunter-aimed-shot": "ranged", + "wow335-hunter-arcane-shot": "ranged", + "wow335-hunter-auto-shot": "ranged", + "wow335-hunter-chimera-shot": "ranged", + "wow335-hunter-counterattack": "melee", + "wow335-hunter-kill-shot": "ranged", + "wow335-hunter-mongoose-bite": "melee", + "wow335-hunter-multi-shot": "ranged", + "wow335-hunter-raptor-strike": "melee", + "wow335-hunter-scatter-shot": "ranged", + "wow335-hunter-silencing-shot": "ranged", + "wow335-hunter-steady-shot": "ranged", + // Simulated Hunter weapon swings use these runtime event IDs rather than + // the Auto Shot spell row; the player path currently reports its generic + // basic swing as melee, while party Hunters report their basic swing ranged. + "party-auto-attack": "ranged", + "player-auto-attack": "melee", + "player-auto-attack-offhand": "melee", + // The core executable catalog keeps these two seeded actions' stable IDs + // when their local Spell.dbc rank rows are merged. + "hunter-arcane-shot": "ranged", + "hunter-steady-shot": "ranged", +}); + +/** + * Classifies only local generated Hunter rows whose descriptions/effects name + * a direct melee strike or ranged shot. Trap, sting, and channel rows are not + * inferred to be weapon attacks from their damage school or range alone. + */ +export function wow335HunterGoForTheThroatAttackKindForAbility( + abilityId: string, +): "melee" | "ranged" | null { + return HUNTER_GO_FOR_THE_THROAT_DIRECT_ATTACK_KINDS[abilityId] ?? null; +} + +export interface Wow335HunterGoForTheThroatRankMechanics { + readonly description: string; + readonly focusPerProc: number; + readonly internalCooldownMs: number; +} + +export interface Wow335HunterGoForTheThroatProcEvent { + readonly attackType: "melee" | "ranged" | "other"; + readonly critical: boolean; + readonly hasLivingActivePet: boolean; + readonly focusCurrent: number; + readonly focusMaximum: number; + readonly lastProcAt: number | null; + readonly now: number; +} + +export interface Wow335HunterGoForTheThroatProcPlan { + readonly focusGain: number; + readonly focusAfter: number; + readonly lastProcAt: number; +} + +const talent = runtimeTalentNodeById(WOW335_HUNTER_GO_FOR_THE_THROAT_TALENT_ID); + +/** + * Reads the Focus payload from the generated 3.3.5a talent rank text. + * The generated ranks say 15/30 Focus and share a two-second proc lockout. + */ +export function wow335HunterGoForTheThroatRankMechanics( + rank: number, +): Wow335HunterGoForTheThroatRankMechanics | null { + const normalizedRank = Math.trunc(Number.isFinite(rank) ? rank : 0); + const description = talent?.rankDescriptions[normalizedRank - 1]; + if (!description) return null; + + const focusMatch = description.match(/tamed beast to generate (\d+(?:\.\d+)?) Focus/i); + const cooldownMatch = description.match(/cannot occur more than once every (\d+(?:\.\d+)?) seconds/i); + const focusPerProc = focusMatch ? Number(focusMatch[1]) : Number.NaN; + const cooldownSeconds = cooldownMatch ? Number(cooldownMatch[1]) : Number.NaN; + if (!Number.isFinite(focusPerProc) || focusPerProc <= 0 + || !Number.isFinite(cooldownSeconds) || cooldownSeconds <= 0) return null; + + return Object.freeze({ + description, + focusPerProc, + internalCooldownMs: Math.round(cooldownSeconds * 1_000), + }); +} + +/** + * Plans one deterministic pet Focus proc after an eligible Hunter crit. + * The caller owns pet selection, regeneration, and resource mutation; Focus + * is capped to the pet's actual current maximum. + */ +export function wow335HunterGoForTheThroatProcPlan( + rank: number, + event: Wow335HunterGoForTheThroatProcEvent, +): Wow335HunterGoForTheThroatProcPlan | null { + const mechanics = wow335HunterGoForTheThroatRankMechanics(rank); + if (!mechanics + || (event.attackType !== "melee" && event.attackType !== "ranged") + || !event.critical + || !event.hasLivingActivePet + || !Number.isFinite(event.now) + || (event.lastProcAt !== null + && (!Number.isFinite(event.lastProcAt) + || event.now - event.lastProcAt < mechanics.internalCooldownMs))) return null; + + const maximum = Math.max(0, Number.isFinite(event.focusMaximum) ? event.focusMaximum : 0); + const current = Math.max(0, Math.min(maximum, Number.isFinite(event.focusCurrent) ? event.focusCurrent : 0)); + const focusAfter = Math.min(maximum, current + mechanics.focusPerProc); + return Object.freeze({ + focusGain: focusAfter - current, + focusAfter, + lastProcAt: event.now, + }); +} diff --git a/src/game/wow335HunterMechanics.test.ts b/src/game/wow335HunterMechanics.test.ts index eb551a3c..cb2f1c83 100644 --- a/src/game/wow335HunterMechanics.test.ts +++ b/src/game/wow335HunterMechanics.test.ts @@ -16,6 +16,10 @@ import { WOW335_HUNTER_LOCK_AND_LOAD_READY_TAG, } from "./wow335HunterRuntime"; import { usePartyStore } from "./partyStore"; +import { + wow335HunterPetBaseStatsForLevel, + wow335HunterPetBiteDamage, +} from "./wow335HunterPetRuntime"; describe("WoW 3.3.5 Hunter Readiness", () => { it("preserves Readiness's Bestial Wrath cooldown exception", () => { @@ -187,7 +191,20 @@ describe("WoW 3.3.5 Hunter pet mechanics", () => { const callResult = useCombatStore.getState().castAbility(callPetId, undefined, 1_000); expect(callResult, JSON.stringify(callResult)).toMatchObject({ ok: true }); const pet = useCombatStore.getState().summons.find((summon) => summon.kind === "pet"); - expect(pet).toBeDefined(); + const basePetStats = wow335HunterPetBaseStatsForLevel(80); + expect(pet).toMatchObject({ + hunterPet: { + baseStats: { strength: 192, attackPower: 364 }, + effectiveStats: { + inheritedStamina: expect.any(Number), + inheritedRangedAttackPower: expect.any(Number), + }, + }, + }); + expect(pet!.maxHealth).toBe(pet!.hunterPet!.effectiveStats.maxHealth); + expect(pet!.attackDamage).toBe(pet!.hunterPet!.effectiveStats.averageAutoAttackDamage); + expect(pet!.maxHealth).toBeGreaterThan(basePetStats.maxHealth); + expect(pet!.attackDamage).toBeGreaterThan(basePetStats.averageAutoAttackDamage); const result = useCombatStore.getState().castAbility(bestialWrathId, undefined, 3_000); expect(result, JSON.stringify(result)).toMatchObject({ ok: true }); @@ -209,6 +226,44 @@ describe("WoW 3.3.5 Hunter pet mechanics", () => { ])); }); + it("updates Hunter pet health and AP inheritance when the owner gains stamina and ranged AP", () => { + const callPetId = hunterAbilityId("Call Pet"); + expect(useCombatStore.getState().castAbility(callPetId, undefined, 1_000).ok).toBe(true); + const initialPet = useCombatStore.getState().summons.find((summon) => summon.kind === "pet")!; + const initialEffectiveStats = initialPet.hunterPet!.effectiveStats; + useCombatStore.setState((state) => ({ + auras: applyAura(state.auras, { + definition: { + id: "test:hunter-owner-pet-inheritance", + name: "Test owner attributes", + disposition: "buff", + durationMs: 10_000, + modifiers: [ + { kind: "stat", stat: "stamina", operation: "flat", value: 100 }, + { kind: "stat", stat: "ranged-attack-power", operation: "flat", value: 1_000 }, + ], + }, + sourceId: PLAYER_AURA_ENTITY_ID, + targetId: PLAYER_AURA_ENTITY_ID, + now: 2_000, + }).auras, + })); + + useCombatStore.getState().tick(0.1, 2_000); + + const updatedPet = useCombatStore.getState().summons.find((summon) => summon.kind === "pet")!; + expect(updatedPet.hunterPet!.effectiveStats.inheritedStamina + - initialEffectiveStats.inheritedStamina).toBeCloseTo(45); + expect(updatedPet.hunterPet!.effectiveStats.inheritedRangedAttackPower + - initialEffectiveStats.inheritedRangedAttackPower).toBeCloseTo(220); + expect(updatedPet.hunterPet!.effectiveStats.inheritedSpellDamage + - initialEffectiveStats.inheritedSpellDamage).toBeCloseTo(128.7); + expect(updatedPet.maxHealth - initialPet.maxHealth).toBe(450); + expect(updatedPet.attackDamage).toBeGreaterThan(initialPet.attackDamage); + expect(wow335HunterPetBiteDamage(updatedPet.hunterPet!) + - wow335HunterPetBiteDamage(initialPet.hunterPet!)).toBeCloseTo(220 * 0.07 + 128.7 * 0.119658); + }); + it("uses The Beast Within's 50% rank-one proc chance", () => { const callPetId = hunterAbilityId("Call Pet"); const bestialWrathId = unlockHunterTalent("Bestial Wrath"); @@ -324,13 +379,21 @@ describe("WoW 3.3.5 Hunter pet mechanics", () => { )); expect(aura?.targetId).toBe(pet!.id); expect(aura?.expiresAt).toBe(33_000); - expect(aura?.definition.maxStacks).toBeUndefined(); - expect(aura?.definition.initialStacks).toBeUndefined(); + expect(aura?.definition.maxStacks).toBe(3); + expect(aura?.definition.initialStacks).toBe(3); expect(aura?.definition.modifiers?.some((modifier) => modifier.kind === "damage") ?? false).toBe(false); + useCombatStore.setState((state) => ({ + summons: state.summons.map((summon) => summon.id === pet!.id + ? { ...summon, hunterPetSpecialReadyAt: 100_000 } + : summon), + })); useCombatStore.getState().tick(1, 4_000); - expect(useCombatStore.getState().auras.find((entry) => entry.instanceId === aura?.instanceId)?.expiresAt).toBe(33_000); + expect(useCombatStore.getState().auras.find((entry) => entry.instanceId === aura?.instanceId)).toMatchObject({ + expiresAt: 33_000, + stacks: 3, + }); }); it("arms Freezing Arrow at its ground point and freezes only an approaching target", () => { diff --git a/src/game/wow335HunterPetDefenseData.ts b/src/game/wow335HunterPetDefenseData.ts new file mode 100644 index 00000000..a139a5c7 --- /dev/null +++ b/src/game/wow335HunterPetDefenseData.ts @@ -0,0 +1,43 @@ +// TrinityCore TDB 335.26091, pinned release commit +// fbd20a3cd829617a64c27cdf65ed6cfb5f304a8a. +// TDB_full_world_335.26091_2026_09_09.7z SHA-256: +// ed0c50177da912b50c9f386ba8a26254cecfb997ca7fd2e992c25b344e11274f +// pet_levelstats entry 1 is selected for every HUNTER_PET by the pinned +// TrinityCore Pet.cpp initializer. Arrays are indexed by level minus one. + +export const WOW335_HUNTER_PET_ARMOR_BY_LEVEL: readonly number[] = [ + 20, 21, 46, 82, 126, 180, 245, 322, 412, 518, 545, 580, 615, 650, 685, 721, + 756, 791, 826, 861, 897, 932, 967, 1002, 1037, 1072, 1108, 1142, 1177, 1212, + 1247, 1283, 1317, 1353, 1387, 1494, 1607, 1724, 1849, 1980, 2117, 2262, 2414, + 2574, 2742, 2798, 2853, 2907, 2963, 3018, 3072, 3128, 3183, 3237, 3292, 3348, + 3402, 3457, 3512, 3814, 4113, 4410, 4708, 5006, 5303, 5601, 5900, 6197, 6495, + 6794, 7093, 7392, 7691, 7990, 8289, 8588, 8887, 9186, 9485, 9784, +]; + +export const WOW335_HUNTER_PET_AGILITY_BY_LEVEL: readonly number[] = [ + 20, 21, 21, 22, 23, 24, 24, 25, 26, 26, 27, 28, 30, 31, 32, 33, + 34, 36, 37, 39, 39, 40, 42, 43, 45, 46, 47, 49, 50, 52, 53, 54, + 56, 57, 59, 60, 61, 63, 64, 66, 68, 69, 71, 72, 74, 75, 77, 79, + 80, 82, 84, 85, 87, 89, 91, 92, 94, 96, 98, 100, 102, 105, 107, 110, + 113, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, +]; + +export interface Wow335HunterPetBaseDefense { + readonly level: number; + readonly armor: number; + readonly agility: number; +} + +/** Return the pinned generic Hunter-pet entry-1 armor and Agility baseline. */ +export function wow335HunterPetBaseDefenseForLevel(level: number): Wow335HunterPetBaseDefense { + const normalizedLevel = Number.isFinite(level) + ? Math.max(1, Math.min(80, Math.trunc(level))) + : 1; + const index = normalizedLevel - 1; + + return { + level: normalizedLevel, + armor: WOW335_HUNTER_PET_ARMOR_BY_LEVEL[index]!, + agility: WOW335_HUNTER_PET_AGILITY_BY_LEVEL[index]!, + }; +} diff --git a/src/game/wow335HunterPetHappinessRuntime.test.ts b/src/game/wow335HunterPetHappinessRuntime.test.ts new file mode 100644 index 00000000..a01e7e11 --- /dev/null +++ b/src/game/wow335HunterPetHappinessRuntime.test.ts @@ -0,0 +1,30 @@ +import { describe, expect, it } from "vitest"; +import { + WOW335_HUNTER_PET_HAPPINESS_LEVEL_SIZE, + wow335HunterPetAutoAttackDamageMultiplier, + wow335HunterPetHappinessState, +} from "./wow335HunterPetHappinessRuntime"; + +describe("WoW 3.3.5 Hunter pet happiness damage profile", () => { + it("uses exact unhappy/content/happy threshold boundaries", () => { + expect(WOW335_HUNTER_PET_HAPPINESS_LEVEL_SIZE).toBe(333_000); + expect(wow335HunterPetHappinessState(0)).toBe("unhappy"); + expect(wow335HunterPetHappinessState(332_999)).toBe("unhappy"); + expect(wow335HunterPetHappinessState(333_000)).toBe("content"); + expect(wow335HunterPetHappinessState(665_999)).toBe("content"); + expect(wow335HunterPetHappinessState(666_000)).toBe("happy"); + }); + + it("applies the stock 75% / 100% / 125% base auto-attack multipliers", () => { + expect(wow335HunterPetAutoAttackDamageMultiplier(100_000)).toBe(0.75); + expect(wow335HunterPetAutoAttackDamageMultiplier(500_000)).toBe(1); + expect(wow335HunterPetAutoAttackDamageMultiplier(900_000)).toBe(1.25); + }); + + it("handles invalid power values as zero happiness without producing non-finite multipliers", () => { + for (const value of [Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, -1]) { + expect(wow335HunterPetHappinessState(value)).toBe("unhappy"); + expect(wow335HunterPetAutoAttackDamageMultiplier(value)).toBe(0.75); + } + }); +}); diff --git a/src/game/wow335HunterPetHappinessRuntime.ts b/src/game/wow335HunterPetHappinessRuntime.ts new file mode 100644 index 00000000..0f39b4a1 --- /dev/null +++ b/src/game/wow335HunterPetHappinessRuntime.ts @@ -0,0 +1,33 @@ +export type Wow335HunterPetHappinessState = "unhappy" | "content" | "happy"; + +/** TrinityCore 3.3.5 stores each happiness band as 333,000 POWER_HAPPINESS. */ +export const WOW335_HUNTER_PET_HAPPINESS_LEVEL_SIZE = 333_000; + +/** + * Resolve the stock 3.3.5 happiness band from the pet's POWER_HAPPINESS value. + * Invalid values safely fall back to zero, which is the Unhappy band. + */ +export function wow335HunterPetHappinessState( + happinessPower: number, +): Wow335HunterPetHappinessState { + const value = Number.isFinite(happinessPower) + ? Math.max(0, Math.trunc(happinessPower)) + : 0; + if (value < WOW335_HUNTER_PET_HAPPINESS_LEVEL_SIZE) return "unhappy"; + if (value >= WOW335_HUNTER_PET_HAPPINESS_LEVEL_SIZE * 2) return "happy"; + return "content"; +} + +/** + * Stock 3.3.5 Hunter-pet main-hand base-damage multiplier by happiness band. + * This is deliberately scoped to base auto-attack damage; it does not assert + * that every special-attack formula consumes the modified weapon damage. + */ +export function wow335HunterPetAutoAttackDamageMultiplier( + happinessPower: number, +): number { + const state = wow335HunterPetHappinessState(happinessPower); + if (state === "happy") return 1.25; + if (state === "unhappy") return 0.75; + return 1; +} diff --git a/src/game/wow335HunterPetInheritedDefenseRuntime.test.ts b/src/game/wow335HunterPetInheritedDefenseRuntime.test.ts new file mode 100644 index 00000000..dadd7a90 --- /dev/null +++ b/src/game/wow335HunterPetInheritedDefenseRuntime.test.ts @@ -0,0 +1,95 @@ +import { describe, expect, it } from "vitest"; +import { + wow335HunterPetArmorForLevel, + wow335HunterPetArmorForProfile, + wow335HunterPetBaseDefenseForLevel, + wow335HunterPetInheritedDefenses, +} from "./wow335HunterPetInheritedDefenseRuntime"; +import { + WOW335_HUNTER_PET_AGILITY_BY_LEVEL, + WOW335_HUNTER_PET_ARMOR_BY_LEVEL, +} from "./wow335HunterPetDefenseData"; + +describe("WoW 3.3.5 Hunter pet defensive inheritance source profile", () => { + it("inherits integer-truncated 35% of owner armor and 40% of each magical-school resistance", () => { + expect(wow335HunterPetInheritedDefenses(2_001, { + holy: 10, + fire: 20, + nature: 30, + frost: 40, + shadow: 50, + arcane: 60, + })).toEqual({ + armor: 700, + resistances: { + holy: 4, + fire: 8, + nature: 12, + frost: 16, + shadow: 20, + arcane: 24, + }, + }); + }); + + it("truncates signed synthetic inputs toward zero and treats non-finite inputs as zero", () => { + expect(wow335HunterPetInheritedDefenses(Number.NaN, { + holy: Number.POSITIVE_INFINITY, + fire: -25, + nature: 0, + frost: 0, + shadow: 0, + arcane: 0, + })).toEqual({ + armor: 0, + resistances: { + holy: 0, + fire: -10, + nature: 0, + frost: 0, + shadow: 0, + arcane: 0, + }, + }); + }); + + it("loads the pinned entry-1 armor and Agility data for levels 1 through 80", () => { + expect(WOW335_HUNTER_PET_ARMOR_BY_LEVEL).toHaveLength(80); + expect(WOW335_HUNTER_PET_AGILITY_BY_LEVEL).toHaveLength(80); + expect(wow335HunterPetBaseDefenseForLevel(1)).toEqual({ level: 1, armor: 20, agility: 20 }); + expect(wow335HunterPetBaseDefenseForLevel(60)).toEqual({ level: 60, armor: 3_814, agility: 100 }); + expect(wow335HunterPetBaseDefenseForLevel(80)).toEqual({ level: 80, armor: 9_784, agility: 158 }); + }); + + it("clamps pet level lookup to the supported entry-1 range", () => { + expect(wow335HunterPetBaseDefenseForLevel(0)).toEqual({ level: 1, armor: 20, agility: 20 }); + expect(wow335HunterPetBaseDefenseForLevel(81)).toEqual({ level: 80, armor: 9_784, agility: 158 }); + expect(wow335HunterPetBaseDefenseForLevel(Number.NaN)).toEqual({ level: 1, armor: 20, agility: 20 }); + }); + + it("composes armor with CalculatePct integer conversion and final int32 truncation", () => { + // Owner armor 1 gives CalculatePct(1, 35) == 0. Pet armor is + // 20 * 1.25 + (20 Agility * 2) + 0.75 flat = 65.75; * 1.01 is + // truncated by SetArmor(int32(value)) to 66. + expect(wow335HunterPetArmorForLevel(1, 1, { + baseArmorMultiplier: 1.25, + petFlatArmor: 0.75, + totalArmorMultiplier: 1.01, + })).toBe(66); + + // The two conversion points remain independently observable when the + // caller supplies a custom profile instead of entry-1 baseline stats. + expect(wow335HunterPetArmorForProfile({ + petBaseArmor: 0, + petAgility: 0, + ownerArmor: 1, + petFlatArmor: 0.8, + })).toBe(0); + expect(wow335HunterPetArmorForProfile({ + petBaseArmor: 1.25, + petAgility: 0, + ownerArmor: 0, + baseArmorMultiplier: 1, + })).toBe(1); + }); +}); diff --git a/src/game/wow335HunterPetInheritedDefenseRuntime.ts b/src/game/wow335HunterPetInheritedDefenseRuntime.ts new file mode 100644 index 00000000..e7412cae --- /dev/null +++ b/src/game/wow335HunterPetInheritedDefenseRuntime.ts @@ -0,0 +1,111 @@ +import type { DamageSchool } from "./itemStats"; +import { wow335HunterPetBaseDefenseForLevel } from "./wow335HunterPetDefenseData"; + +export { wow335HunterPetBaseDefenseForLevel } from "./wow335HunterPetDefenseData"; +export type { Wow335HunterPetBaseDefense } from "./wow335HunterPetDefenseData"; + +export type Wow335HunterPetMagicSchool = Exclude; + +export type Wow335HunterPetOwnerResistances = Readonly>; + +export interface Wow335HunterPetInheritedDefenses { + /** Owner-derived contribution only; pet base armor and pet modifiers are separate. */ + readonly armor: number; + /** Owner-derived contribution for the six non-physical schools. */ + readonly resistances: Wow335HunterPetOwnerResistances; +} + +export const WOW335_HUNTER_PET_OWNER_ARMOR_INHERITANCE_PERCENT = 35; +export const WOW335_HUNTER_PET_OWNER_MAGIC_RESISTANCE_INHERITANCE_PERCENT = 40; + +function finite(value: number): number { + return Number.isFinite(value) ? value : 0; +} + +function float32(value: number): number { + const rounded = Math.fround(finite(value)); + return Number.isFinite(rounded) ? rounded : 0; +} + +/** Match TrinityCore CalculatePct: float arithmetic, then conversion to T. */ +function calculatePctAsInteger(base: number, percent: number): number { + const product = float32(float32(base) * float32(percent)); + const result = float32(product / float32(100)); + return Math.trunc(result); +} + +/** + * Compute only the owner-derived defense contribution for a Hunter pet. + * Callers still need to combine the pet's own armor/aura values and use these + * values as the pet's owner-dependent defenses change. + */ +export function wow335HunterPetInheritedDefenses( + ownerArmor: number, + ownerResistances: Wow335HunterPetOwnerResistances, +): Wow335HunterPetInheritedDefenses { + const inherit = (value: number, percent: number): number => calculatePctAsInteger(value, percent); + + return { + armor: inherit(ownerArmor, WOW335_HUNTER_PET_OWNER_ARMOR_INHERITANCE_PERCENT), + resistances: { + holy: inherit(ownerResistances.holy, WOW335_HUNTER_PET_OWNER_MAGIC_RESISTANCE_INHERITANCE_PERCENT), + fire: inherit(ownerResistances.fire, WOW335_HUNTER_PET_OWNER_MAGIC_RESISTANCE_INHERITANCE_PERCENT), + nature: inherit(ownerResistances.nature, WOW335_HUNTER_PET_OWNER_MAGIC_RESISTANCE_INHERITANCE_PERCENT), + frost: inherit(ownerResistances.frost, WOW335_HUNTER_PET_OWNER_MAGIC_RESISTANCE_INHERITANCE_PERCENT), + shadow: inherit(ownerResistances.shadow, WOW335_HUNTER_PET_OWNER_MAGIC_RESISTANCE_INHERITANCE_PERCENT), + arcane: inherit(ownerResistances.arcane, WOW335_HUNTER_PET_OWNER_MAGIC_RESISTANCE_INHERITANCE_PERCENT), + }, + }; +} + +export interface Wow335HunterPetArmorInputs { + /** `pet_levelstats.armor`, or the pet's current BASE_VALUE if modified. */ + readonly petBaseArmor: number; + /** Effective pet Agility after pet-owned stat modifiers. */ + readonly petAgility: number; + /** Current effective owner armor. */ + readonly ownerArmor: number; + /** TrinityCore BASE_PCT multiplier; defaults to 1. */ + readonly baseArmorMultiplier?: number; + /** Flat pet armor from TOTAL_VALUE; defaults to 0. */ + readonly petFlatArmor?: number; + /** TrinityCore TOTAL_PCT multiplier; defaults to 1. */ + readonly totalArmorMultiplier?: number; +} + +/** + * Compose pet armor using the pinned TrinityCore 3.3.5 Guardian::UpdateArmor + * order, including integer CalculatePct owner inheritance and final + * int32(value) truncation. This does not calculate incoming-damage mitigation. + */ +export function wow335HunterPetArmorForProfile(inputs: Wow335HunterPetArmorInputs): number { + const baseArmorMultiplier = float32(inputs.baseArmorMultiplier ?? 1); + const petFlatArmor = float32(inputs.petFlatArmor ?? 0); + const totalArmorMultiplier = float32(inputs.totalArmorMultiplier ?? 1); + const inheritedArmor = calculatePctAsInteger( + inputs.ownerArmor, + WOW335_HUNTER_PET_OWNER_ARMOR_INHERITANCE_PERCENT, + ); + + let value = float32(float32(inputs.petBaseArmor) * baseArmorMultiplier); + value = float32(value + float32(float32(inputs.petAgility) * float32(2))); + value = float32(value + float32(petFlatArmor + float32(inheritedArmor))); + value = float32(value * totalArmorMultiplier); + + return Math.trunc(value); +} + +/** Compose the pinned entry-1 baseline with current owner armor. */ +export function wow335HunterPetArmorForLevel( + level: number, + ownerArmor: number, + modifiers: Omit = {}, +): number { + const baseline = wow335HunterPetBaseDefenseForLevel(level); + return wow335HunterPetArmorForProfile({ + ...modifiers, + petBaseArmor: baseline.armor, + petAgility: baseline.agility, + ownerArmor, + }); +} diff --git a/src/game/wow335HunterPetRuntime.test.ts b/src/game/wow335HunterPetRuntime.test.ts new file mode 100644 index 00000000..dd210d86 --- /dev/null +++ b/src/game/wow335HunterPetRuntime.test.ts @@ -0,0 +1,400 @@ +import { describe, expect, it } from "vitest"; +import { + WOW335_HUNTER_PET_DEFAULT_COMMAND, + WOW335_HUNTER_PET_DEFAULT_REACT_MODE, + wow335HunterPetBaseStatsForLevel, + wow335HunterPetBiteDamage, + wow335HunterPetEffectiveStatsForOwner, + wow335HunterPetFuriousHowlAutoAttackDamageBonus, + wow335HunterPetFuriousHowlProfileForLevel, + wow335HunterPetGrowlProfileForLevel, + wow335HunterPetProfileForLevel, + wow335HunterPetTargetPolicy, + type Wow335HunterPetTargetPolicyInput, +} from "./wow335HunterPetRuntime"; + +function resolveHunterPetTargetPolicy( + overrides: Partial = {}, +) { + return wow335HunterPetTargetPolicy({ + command: WOW335_HUNTER_PET_DEFAULT_COMMAND, + reactMode: WOW335_HUNTER_PET_DEFAULT_REACT_MODE, + eligibleTargetIds: new Set(), + ...overrides, + }); +} + +describe("WoW 3.3.5 Hunter pet baseline", () => { + it("uses the stock pet_levelstats entry-1 values at the level bounds", () => { + expect(wow335HunterPetBaseStatsForLevel(1)).toMatchObject({ + level: 1, + maxHealth: 42, + strength: 22, + attackPower: 24, + minWeaponDamage: 1, + maxWeaponDamage: 1, + averageAutoAttackDamage: 4, + }); + expect(wow335HunterPetBaseStatsForLevel(80)).toMatchObject({ + level: 80, + maxHealth: 5_161, + strength: 192, + attackPower: 364, + minWeaponDamage: 60, + maxWeaponDamage: 100, + averageAutoAttackDamage: 132, + }); + }); + + it("clamps level inputs and selects the highest learned Wolf ability ranks", () => { + expect(wow335HunterPetBaseStatsForLevel(0).level).toBe(1); + expect(wow335HunterPetBaseStatsForLevel(81).level).toBe(80); + expect(wow335HunterPetProfileForLevel(71).spellId).toBe(27_050); + expect(wow335HunterPetProfileForLevel(80)).toMatchObject({ + family: "wolf", + spellId: 52_474, + baseStats: { maxHealth: 5_161, strength: 192, attackPower: 364 }, + }); + expect(wow335HunterPetFuriousHowlProfileForLevel(65)).toMatchObject({ + spellId: 64_494, + attackPower: 204, + durationMs: 20_000, + cooldownMs: 40_000, + }); + expect(wow335HunterPetFuriousHowlAutoAttackDamageBonus( + wow335HunterPetFuriousHowlProfileForLevel(1), + )).toBeCloseTo(18 * 2 / 14); + }); + + it("inherits 45% of owner stamina as health and 22% of ranged attack power as pet AP", () => { + const base = wow335HunterPetBaseStatsForLevel(80); + const inherited = wow335HunterPetEffectiveStatsForOwner(base, { + stamina: 200, + rangedAttackPower: 1_000, + }); + + expect(inherited).toMatchObject({ + maxHealth: 6_061, + inheritedStamina: 90, + attackPower: 584, + inheritedRangedAttackPower: 220, + averageAutoAttackDamage: 163, + }); + expect(inherited.inheritedSpellDamage).toBeCloseTo(128.7); + }); + + it("adds the local spell-power and attack-power coefficients to Bite's rank base damage", () => { + const noOwnerBonus = wow335HunterPetProfileForLevel(80); + const inherited = wow335HunterPetProfileForLevel(80, "wolf", { + stamina: 0, + rangedAttackPower: 1_000, + }); + + expect(wow335HunterPetBiteDamage(noOwnerBonus)).toBeCloseTo(118 + 364 * 0.07); + expect(inherited.effectiveStats.inheritedSpellDamage).toBeCloseTo(128.7); + expect(wow335HunterPetBiteDamage(inherited)).toBeCloseTo(118 + 584 * 0.07 + 128.7 * 0.119658); + // A pet-only AP buff such as Furious Howl increases Bite's AP component; + // its spell-damage inheritance stays tied to the owner's ranged AP. + expect(wow335HunterPetBiteDamage(inherited, 320)).toBeCloseTo(118 + 904 * 0.07 + 128.7 * 0.119658); + }); + + it("selects and clamps the highest learned Growl rank, with a safe fallback for invalid levels", () => { + expect(wow335HunterPetGrowlProfileForLevel(0).spellId).toBe(2_649); + expect(wow335HunterPetGrowlProfileForLevel(71).spellId).toBe(27_047); + expect(wow335HunterPetGrowlProfileForLevel(80).spellId).toBe(61_676); + expect(wow335HunterPetGrowlProfileForLevel(100).spellId).toBe(61_676); + expect(wow335HunterPetGrowlProfileForLevel(Number.NaN)).toMatchObject({ + spellId: 2_649, + rank: 1, + requiredLevel: 1, + }); + expect(wow335HunterPetGrowlProfileForLevel(Number.POSITIVE_INFINITY).spellId).toBe(2_649); + }); + + it("matches every Wolf Growl rank's local Spell.dbc threat and timing values", () => { + const expectedRanks = [ + { level: 1, spellId: 2_649, rank: 1, threatAmount: 50 }, + { level: 10, spellId: 14_916, rank: 2, threatAmount: 65 }, + { level: 20, spellId: 14_917, rank: 3, threatAmount: 110 }, + { level: 30, spellId: 14_918, rank: 4, threatAmount: 170 }, + { level: 40, spellId: 14_919, rank: 5, threatAmount: 240 }, + { level: 50, spellId: 14_920, rank: 6, threatAmount: 320 }, + { level: 60, spellId: 14_921, rank: 7, threatAmount: 415 }, + { level: 70, spellId: 27_047, rank: 8, threatAmount: 664 }, + { level: 80, spellId: 61_676, rank: 9, threatAmount: 1_234 }, + ]; + + expect(expectedRanks.map(({ level }) => wow335HunterPetGrowlProfileForLevel(level))).toEqual( + expectedRanks.map(({ level, spellId, rank, threatAmount }) => ({ + abilityId: `wow335-hunter-pet-growl-rank-${rank}`, + spellId, + rank, + requiredLevel: level, + focusCost: 15, + cooldownMs: 5_000, + globalCooldownMs: 0, + threatAmount, + })), + ); + }); + + it("applies stock pet command and react target priority", () => { + const eligibleTargetIds = new Set([ + "current", + "pet-attacker", + "owner-attacker", + "owner-target", + "ambient", + "command-target", + ]); + const cases: Array<{ + readonly name: string; + readonly input: Partial; + readonly expectedTargetId: string | null; + readonly expectedSource: string; + }> = [ + { + name: "Attack overrides an existing victim with its explicit target", + input: { command: "attack", commandTargetId: "command-target", currentTargetId: "current" }, + expectedTargetId: "command-target", + expectedSource: "command", + }, + { + name: "an invalid Attack target does not drop a still-valid victim", + input: { command: "attack", commandTargetId: "removed-target", currentTargetId: "current" }, + expectedTargetId: "current", + expectedSource: "current", + }, + { + name: "a living victim remains selected when the owner attacks elsewhere", + input: { currentTargetId: "current", ownerTargetId: "owner-target" }, + expectedTargetId: "current", + expectedSource: "current", + }, + { + name: "pet attackers take priority over owner attackers and the owner target", + input: { + petAttackerTargetIds: ["pet-attacker"], + ownerAttackerTargetIds: ["owner-attacker"], + ownerTargetId: "owner-target", + }, + expectedTargetId: "pet-attacker", + expectedSource: "pet-attacker", + }, + { + name: "owner attackers take priority over the owner target", + input: { ownerAttackerTargetIds: ["owner-attacker"], ownerTargetId: "owner-target" }, + expectedTargetId: "owner-attacker", + expectedSource: "owner-attacker", + }, + { + name: "Defensive assists the owner's target when it has no current victim", + input: { ownerTargetId: "owner-target" }, + expectedTargetId: "owner-target", + expectedSource: "owner-target", + }, + { + name: "Defensive does not acquire ambient targets", + input: { ambientTargetIds: ["ambient"] }, + expectedTargetId: null, + expectedSource: "none", + }, + { + name: "Aggressive uses ambient targets only after reactive candidates", + input: { + reactMode: "aggressive", + ownerTargetId: "owner-target", + ambientTargetIds: ["ambient"], + }, + expectedTargetId: "owner-target", + expectedSource: "owner-target", + }, + { + name: "Aggressive falls back to an ambient target", + input: { reactMode: "aggressive", ambientTargetIds: ["ambient"] }, + expectedTargetId: "ambient", + expectedSource: "ambient", + }, + { + name: "Aggressive does not auto-select while returning unless following or at Stay", + input: { reactMode: "aggressive", isReturning: true, ambientTargetIds: ["ambient"] }, + expectedTargetId: null, + expectedSource: "none", + }, + { + name: "Aggressive can auto-select once Follow movement has arrived", + input: { reactMode: "aggressive", isReturning: true, isFollowing: true, ambientTargetIds: ["ambient"] }, + expectedTargetId: "ambient", + expectedSource: "ambient", + }, + { + name: "Passive does not auto-engage even when attackers and targets are present", + input: { + reactMode: "passive", + petAttackerTargetIds: ["pet-attacker"], + ownerAttackerTargetIds: ["owner-attacker"], + ownerTargetId: "owner-target", + ambientTargetIds: ["ambient"], + }, + expectedTargetId: null, + expectedSource: "none", + }, + { + name: "switching to Passive clears a previously active victim", + input: { reactMode: "passive", currentTargetId: "current" }, + expectedTargetId: null, + expectedSource: "none", + }, + { + name: "an explicit Attack remains active while Passive", + input: { reactMode: "passive", isCommandAttack: true, currentTargetId: "current" }, + expectedTargetId: "current", + expectedSource: "current", + }, + { + name: "Passive still obeys an explicit Attack command", + input: { command: "attack", reactMode: "passive", commandTargetId: "command-target" }, + expectedTargetId: "command-target", + expectedSource: "command", + }, + { + name: "an invalid stale victim is discarded before target selection", + input: { + currentTargetId: "removed-target", + eligibleTargetIds: new Set(["owner-target"]), + ownerTargetId: "owner-target", + }, + expectedTargetId: "owner-target", + expectedSource: "owner-target", + }, + ]; + + for (const testCase of cases) { + const decision = resolveHunterPetTargetPolicy({ eligibleTargetIds, ...testCase.input }); + expect(decision.targetId, testCase.name).toBe(testCase.expectedTargetId); + expect(decision.source, testCase.name).toBe(testCase.expectedSource); + } + }); + + it("distinguishes issuing Follow from an engaged pet whose command state is Follow", () => { + expect(WOW335_HUNTER_PET_DEFAULT_COMMAND).toBe("follow"); + expect(WOW335_HUNTER_PET_DEFAULT_REACT_MODE).toBe("defensive"); + + const eligibleTargetIds = new Set(["current", "owner-target"]); + expect(resolveHunterPetTargetPolicy({ + command: "follow", + isReturning: true, + isCommandFollow: true, + currentTargetId: "current", + ownerTargetId: "owner-target", + eligibleTargetIds, + })).toMatchObject({ + targetId: null, + source: "none", + movement: "follow-owner", + canAttackNow: false, + }); + + // Once the pet has acquired a victim while following, it retains that + // victim until it becomes invalid or the owner explicitly attacks another. + expect(resolveHunterPetTargetPolicy({ + command: "follow", + currentTargetId: "current", + ownerTargetId: "owner-target", + eligibleTargetIds, + })).toMatchObject({ + targetId: "current", + source: "current", + }); + + // Returning after combat is distinct from an explicit Follow click: + // PetAI can still react to an owner attack when IsCommandFollow is clear. + expect(resolveHunterPetTargetPolicy({ + command: "follow", + isReturning: true, + isCommandFollow: false, + ownerTargetId: "owner-target", + eligibleTargetIds, + })).toMatchObject({ + targetId: "owner-target", + source: "owner-target", + }); + }); + + it("returns to Follow/Stay positions and respects Stay melee limits", () => { + expect(resolveHunterPetTargetPolicy({ command: "follow" })).toMatchObject({ + targetId: null, + movement: "follow-owner", + canAttackNow: false, + }); + expect(resolveHunterPetTargetPolicy({ command: "stay", petAtStayPosition: false })).toMatchObject({ + targetId: null, + movement: "return-to-stay", + canAttackNow: false, + }); + expect(resolveHunterPetTargetPolicy({ command: "stay", petAtStayPosition: true })).toMatchObject({ + targetId: null, + movement: "hold", + canAttackNow: false, + }); + + const atRange = resolveHunterPetTargetPolicy({ + command: "stay", + reactMode: "defensive", + eligibleTargetIds: new Set(["owner-target"]), + ownerTargetId: "owner-target", + petAtStayPosition: true, + inMeleeRangeTargetIds: new Set(["owner-target"]), + }); + expect(atRange).toMatchObject({ + targetId: "owner-target", + movement: "hold-stay", + canAttackNow: true, + }); + + const outOfRange = resolveHunterPetTargetPolicy({ + command: "stay", + reactMode: "defensive", + eligibleTargetIds: new Set(["owner-target"]), + ownerTargetId: "owner-target", + petAtStayPosition: true, + inMeleeRangeTargetIds: new Set(), + }); + expect(outOfRange).toMatchObject({ + targetId: null, + movement: "hold", + canAttackNow: false, + }); + }); + + it("keeps an out-of-range Stay victim assigned without chasing or attacking", () => { + expect(resolveHunterPetTargetPolicy({ + command: "stay", + currentTargetId: "current", + eligibleTargetIds: new Set(["current"]), + petAtStayPosition: true, + inMeleeRangeTargetIds: new Set(), + })).toMatchObject({ + targetId: "current", + source: "current", + movement: "hold-stay", + canAttackNow: false, + }); + }); + + it("lets an explicit Attack chase from Stay and ignores the Stay range filter", () => { + expect(resolveHunterPetTargetPolicy({ + command: "stay", + isCommandAttack: true, + commandTargetId: "command-target", + eligibleTargetIds: new Set(["command-target"]), + petAtStayPosition: false, + inMeleeRangeTargetIds: new Set(), + })).toMatchObject({ + targetId: "command-target", + source: "command", + movement: "chase-target", + canAttackNow: false, + }); + }); +}); diff --git a/src/game/wow335HunterPetRuntime.ts b/src/game/wow335HunterPetRuntime.ts new file mode 100644 index 00000000..bd989ad4 --- /dev/null +++ b/src/game/wow335HunterPetRuntime.ts @@ -0,0 +1,418 @@ +/** + * Small source-backed core for the current WoW Hunter pet baseline. + * + * The player and generated companion paths do not yet expose a stable/pet-family + * picker, so they use the documented Wolf baseline. Bite rank values below are + * the local 3.3.5a Spell.dbc rows (17253, 17255-17261, 27050, 52473-52474). + */ +export type Wow335HunterPetFamily = "wolf"; + +export interface Wow335HunterPetBaseStats { + readonly level: number; + readonly maxHealth: number; + readonly strength: number; + readonly attackPower: number; + readonly minWeaponDamage: number; + readonly maxWeaponDamage: number; + readonly averageAutoAttackDamage: number; +} + +export interface Wow335HunterPetOwnerCombatStats { + readonly stamina: number; + readonly rangedAttackPower: number; +} + +export interface Wow335HunterPetEffectiveStats extends Wow335HunterPetBaseStats { + readonly inheritedStamina: number; + readonly inheritedRangedAttackPower: number; + readonly inheritedSpellDamage: number; +} + +export interface Wow335HunterPetProfile { + readonly family: Wow335HunterPetFamily; + readonly baseStats: Wow335HunterPetBaseStats; + readonly effectiveStats: Wow335HunterPetEffectiveStats; + readonly abilityId: string; + readonly abilityName: "Bite"; + readonly spellId: number; + readonly rank: number; + readonly requiredLevel: number; + readonly baseDamage: number; + readonly focusCost: number; + readonly globalCooldownMs: number; + readonly furiousHowl: Wow335HunterPetFuriousHowlProfile; +} + +export interface Wow335HunterPetFuriousHowlProfile { + readonly abilityId: string; + readonly spellId: number; + readonly rank: number; + readonly requiredLevel: number; + readonly attackPower: number; + readonly focusCost: number; + readonly durationMs: number; + readonly cooldownMs: number; + readonly globalCooldownMs: number; +} + +export interface Wow335HunterPetGrowlProfile { + readonly abilityId: string; + readonly spellId: number; + readonly rank: number; + readonly requiredLevel: number; + readonly focusCost: number; + readonly cooldownMs: number; + readonly globalCooldownMs: number; + /** Flat threat from the rank's Spell.dbc SPELL_EFFECT_THREAT effect. */ + readonly threatAmount: number; +} + +export type Wow335HunterPetCommand = "attack" | "follow" | "stay"; +export type Wow335HunterPetReactMode = "defensive" | "aggressive" | "passive"; + +export const WOW335_HUNTER_PET_DEFAULT_COMMAND = "follow" as const; +export const WOW335_HUNTER_PET_DEFAULT_REACT_MODE = "defensive" as const; + +export interface Wow335HunterPetTargetPolicyInput { + readonly command: Wow335HunterPetCommand; + readonly reactMode: Wow335HunterPetReactMode; + /** Candidate ids here are already filtered for life, hostility, and attackability. */ + readonly eligibleTargetIds: ReadonlySet; + readonly commandTargetId?: string | null; + /** PetAI's transient command-attack flag can coexist with Follow/Stay command state. */ + readonly isCommandAttack?: boolean; + /** Null means the pet has no living, still-valid victim. */ + readonly currentTargetId?: string | null; + readonly petAttackerTargetIds?: readonly string[]; + readonly ownerAttackerTargetIds?: readonly string[]; + /** Supply the owner's victim only when the caller is processing an owner attack or target-selection event. */ + readonly ownerTargetId?: string | null; + readonly ambientTargetIds?: readonly string[]; + readonly petAtStayPosition?: boolean; + readonly isReturning?: boolean; + /** PetAI flag set by an explicit Follow action; ordinary post-combat return clears it. */ + readonly isCommandFollow?: boolean; + readonly isFollowing?: boolean; + readonly inMeleeRangeTargetIds?: ReadonlySet; +} + +export interface Wow335HunterPetTargetPolicyDecision { + readonly targetId: string | null; + readonly source: "command" | "current" | "pet-attacker" | "owner-attacker" | "owner-target" | "ambient" | "none"; + readonly movement: "chase-target" | "follow-owner" | "return-to-stay" | "hold" | "hold-stay"; + readonly canAttackNow: boolean; +} + +const WOLF_BITE_RANKS: readonly Omit[] = [ + { spellId: 17_253, rank: 1, requiredLevel: 1, baseDamage: 4 }, + { spellId: 17_255, rank: 2, requiredLevel: 8, baseDamage: 8 }, + { spellId: 17_256, rank: 3, requiredLevel: 16, baseDamage: 12 }, + { spellId: 17_257, rank: 4, requiredLevel: 24, baseDamage: 16 }, + { spellId: 17_258, rank: 5, requiredLevel: 32, baseDamage: 21 }, + { spellId: 17_259, rank: 6, requiredLevel: 40, baseDamage: 26 }, + { spellId: 17_260, rank: 7, requiredLevel: 48, baseDamage: 35 }, + { spellId: 17_261, rank: 8, requiredLevel: 56, baseDamage: 43 }, + { spellId: 27_050, rank: 9, requiredLevel: 64, baseDamage: 54 }, + { spellId: 52_473, rank: 10, requiredLevel: 72, baseDamage: 91 }, + { spellId: 52_474, rank: 11, requiredLevel: 80, baseDamage: 118 }, +]; + +// Local AzerothCore 3.3.5a db_world.pet_levelstats entry 1, levels 1-80. +// TrinityCore 3.3.5 Pet::InitStatsForLevel uses entry 1 for HUNTER_PET, while +// Guardian::UpdateAttackPowerAndDamage defines ordinary pet AP as 2 * STR - 20. +// Hunter pet base weapon bounds are set in that same initializer to level +/- +// floor(level / 4), with a 2-second base attack time. +const HUNTER_PET_HEALTH_BY_LEVEL: readonly number[] = [ + 42, 55, 71, 86, 102, 120, 137, 156, 176, 198, 222, 247, 273, 300, 328, 356, + 386, 417, 449, 484, 521, 562, 605, 651, 699, 750, 800, 853, 905, 955, 1006, 1057, + 1110, 1163, 1220, 1277, 1336, 1395, 1459, 1524, 1585, 1651, 1716, 1782, 1848, 1919, 1990, 2062, + 2138, 2215, 2292, 2371, 2453, 2533, 2614, 2699, 2784, 2871, 2961, 3052, 3144, 3237, 3331, 3425, + 3524, 3624, 3728, 3834, 3941, 4051, 4162, 4273, 4384, 4495, 4606, 4717, 4828, 4939, 5050, 5161, +]; + +const HUNTER_PET_STRENGTH_BY_LEVEL: readonly number[] = [ + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, + 40, 42, 44, 45, 47, 49, 50, 52, 53, 55, 56, 58, 60, 61, 63, 64, + 66, 67, 69, 70, 72, 74, 76, 78, 81, 86, 91, 97, 102, 104, 106, 108, + 110, 113, 115, 117, 119, 122, 124, 127, 129, 131, 134, 136, 139, 141, 144, 146, + 149, 151, 154, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, +]; + +/** Stock 3.3.5a base stats for the generic Hunter pet entry. */ +export function wow335HunterPetBaseStatsForLevel( + level: number, +): Wow335HunterPetBaseStats { + const safeLevel = Math.max(1, Math.min(80, Math.trunc(level))); + const index = safeLevel - 1; + const strength = HUNTER_PET_STRENGTH_BY_LEVEL[index]!; + const attackPower = 2 * strength - 20; + const minWeaponDamage = safeLevel - Math.floor(safeLevel / 4); + const maxWeaponDamage = safeLevel + Math.floor(safeLevel / 4); + + return { + level: safeLevel, + maxHealth: HUNTER_PET_HEALTH_BY_LEVEL[index]!, + strength, + attackPower, + minWeaponDamage, + maxWeaponDamage, + averageAutoAttackDamage: Math.round((minWeaponDamage + maxWeaponDamage) / 2 + attackPower / 7), + }; +} + +/** Apply the stock Hunter-pet stamina and ranged-AP inheritance rules. */ +export function wow335HunterPetEffectiveStatsForOwner( + baseStats: Wow335HunterPetBaseStats, + ownerStats: Wow335HunterPetOwnerCombatStats, +): Wow335HunterPetEffectiveStats { + const ownerStamina = Math.max(0, Number.isFinite(ownerStats.stamina) ? ownerStats.stamina : 0); + const ownerRangedAttackPower = Math.max( + 0, + Number.isFinite(ownerStats.rangedAttackPower) ? ownerStats.rangedAttackPower : 0, + ); + const inheritedStamina = ownerStamina * 0.45; + const inheritedRangedAttackPower = ownerRangedAttackPower * 0.22; + const inheritedSpellDamage = ownerRangedAttackPower * WOW335_HUNTER_PET_RANGED_AP_TO_SPELL_DAMAGE; + const attackPower = baseStats.attackPower + inheritedRangedAttackPower; + + return { + ...baseStats, + maxHealth: baseStats.maxHealth + Math.round(inheritedStamina * 10), + attackPower, + averageAutoAttackDamage: Math.round( + (baseStats.minWeaponDamage + baseStats.maxWeaponDamage) / 2 + attackPower / 7, + ), + inheritedStamina, + inheritedRangedAttackPower, + inheritedSpellDamage, + }; +} + +// Spell.dbc rows 24604 and 64491-64495. DBC stores AP as basePoints + 1; +// spellLevel is the pet level requirement. All ranks cost 20 Focus, last 20s, +// have a 40s recovery, and have no StartRecoveryTime (pet GCD). +const WOLF_FURIOUS_HOWL_RANKS: readonly Wow335HunterPetFuriousHowlProfile[] = [ + { abilityId: "wow335-hunter-pet-furious-howl-rank-1", spellId: 24_604, rank: 1, requiredLevel: 1, attackPower: 18, focusCost: 20, durationMs: 20_000, cooldownMs: 40_000, globalCooldownMs: 0 }, + { abilityId: "wow335-hunter-pet-furious-howl-rank-2", spellId: 64_491, rank: 2, requiredLevel: 16, attackPower: 43, focusCost: 20, durationMs: 20_000, cooldownMs: 40_000, globalCooldownMs: 0 }, + { abilityId: "wow335-hunter-pet-furious-howl-rank-3", spellId: 64_492, rank: 3, requiredLevel: 32, attackPower: 70, focusCost: 20, durationMs: 20_000, cooldownMs: 40_000, globalCooldownMs: 0 }, + { abilityId: "wow335-hunter-pet-furious-howl-rank-4", spellId: 64_493, rank: 4, requiredLevel: 48, attackPower: 120, focusCost: 20, durationMs: 20_000, cooldownMs: 40_000, globalCooldownMs: 0 }, + { abilityId: "wow335-hunter-pet-furious-howl-rank-5", spellId: 64_494, rank: 5, requiredLevel: 64, attackPower: 204, focusCost: 20, durationMs: 20_000, cooldownMs: 40_000, globalCooldownMs: 0 }, + { abilityId: "wow335-hunter-pet-furious-howl-rank-6", spellId: 64_495, rank: 6, requiredLevel: 80, attackPower: 320, focusCost: 20, durationMs: 20_000, cooldownMs: 40_000, globalCooldownMs: 0 }, +]; + +// Local 3.3.5a Spell.dbc Growl ranks (2649, 14916-14921, 27047, 61676). +// Each rank uses SPELL_EFFECT_THREAT (63), costs 15 Focus, has a 5s category +// cooldown, and starts no pet GCD. The DBC payload is flat threat; it does not +// define a timed forced-target/taunt effect. +const WOLF_GROWL_RANKS: readonly Wow335HunterPetGrowlProfile[] = [ + { abilityId: "wow335-hunter-pet-growl-rank-1", spellId: 2_649, rank: 1, requiredLevel: 1, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 50 }, + { abilityId: "wow335-hunter-pet-growl-rank-2", spellId: 14_916, rank: 2, requiredLevel: 10, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 65 }, + { abilityId: "wow335-hunter-pet-growl-rank-3", spellId: 14_917, rank: 3, requiredLevel: 20, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 110 }, + { abilityId: "wow335-hunter-pet-growl-rank-4", spellId: 14_918, rank: 4, requiredLevel: 30, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 170 }, + { abilityId: "wow335-hunter-pet-growl-rank-5", spellId: 14_919, rank: 5, requiredLevel: 40, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 240 }, + { abilityId: "wow335-hunter-pet-growl-rank-6", spellId: 14_920, rank: 6, requiredLevel: 50, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 320 }, + { abilityId: "wow335-hunter-pet-growl-rank-7", spellId: 14_921, rank: 7, requiredLevel: 60, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 415 }, + { abilityId: "wow335-hunter-pet-growl-rank-8", spellId: 27_047, rank: 8, requiredLevel: 70, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 664 }, + { abilityId: "wow335-hunter-pet-growl-rank-9", spellId: 61_676, rank: 9, requiredLevel: 80, focusCost: 15, cooldownMs: 5_000, globalCooldownMs: 0, threatAmount: 1_234 }, +]; + +export const WOW335_HUNTER_PET_KILL_COMMAND_TAG = "wow335-hunter-kill-command"; +export const WOW335_HUNTER_PET_FURIOUS_HOWL_TAG = "wow335-hunter-pet-furious-howl"; +export const WOW335_HUNTER_PET_AUTO_ATTACK_TIME_MS = 2_000; +export const WOW335_HUNTER_PET_KILL_COMMAND_DURATION_MS = 30_000; +export const WOW335_HUNTER_PET_KILL_COMMAND_COOLDOWN_MS = 60_000; +export const WOW335_HUNTER_PET_KILL_COMMAND_INITIAL_BONUS_PERCENT = 60; +export const WOW335_HUNTER_PET_KILL_COMMAND_DECAY_PERCENT = 20; +export const WOW335_HUNTER_PET_KILL_COMMAND_SPECIAL_CHARGES = 3; +// Local AzerothCore spell_bonus_data rows for Bite ranks 17253-17261, 27050, +// 52473, and 52474 list direct spell damage 0.119658 and AP 0.07 coefficients. +// The 3.3.5a PaperDollFrame.lua UI source lists pet spell damage as 12.87% RAP. +export const WOW335_HUNTER_PET_RANGED_AP_TO_SPELL_DAMAGE = 0.1287; +export const WOW335_HUNTER_PET_BITE_SPELL_DAMAGE_COEFFICIENT = 0.119658; +export const WOW335_HUNTER_PET_BITE_ATTACK_POWER_COEFFICIENT = 0.07; + +/** Bite base damage plus the source-listed pet-AP and pet-spell-damage bonuses. */ +export function wow335HunterPetBiteDamage( + profile: Wow335HunterPetProfile, + additionalAttackPower = 0, +): number { + const extraAttackPower = Number.isFinite(additionalAttackPower) ? additionalAttackPower : 0; + const attackPower = Math.max(0, profile.effectiveStats.attackPower + extraAttackPower); + return profile.baseDamage + + attackPower * WOW335_HUNTER_PET_BITE_ATTACK_POWER_COEFFICIENT + + profile.effectiveStats.inheritedSpellDamage * WOW335_HUNTER_PET_BITE_SPELL_DAMAGE_COEFFICIENT; +} + +/** Furious Howl rank learned by this Wolf, selected from Spell.dbc spellLevel. */ +export function wow335HunterPetFuriousHowlProfileForLevel( + level: number, +): Wow335HunterPetFuriousHowlProfile { + const safeLevel = Math.max(1, Math.min(80, Math.trunc(level))); + return [...WOLF_FURIOUS_HOWL_RANKS].reverse().find((candidate) => candidate.requiredLevel <= safeLevel) + ?? WOLF_FURIOUS_HOWL_RANKS[0]!; +} + +/** Growl rank learned by this Wolf, selected from local Spell.dbc spellLevel. */ +export function wow335HunterPetGrowlProfileForLevel(level: number): Wow335HunterPetGrowlProfile { + const safeLevel = Number.isFinite(level) + ? Math.max(1, Math.min(80, Math.trunc(level))) + : 1; + return [...WOLF_GROWL_RANKS].reverse().find((candidate) => candidate.requiredLevel <= safeLevel) + ?? WOLF_GROWL_RANKS[0]!; +} + +/** + * Resolve stock 3.3.5 pet command/react target priority from already-eligible ids. + * Owner-target candidates are supplied by the caller only for an OwnerAttacked + * event or a source path that actually runs next-target selection. + */ +export function wow335HunterPetTargetPolicy( + input: Wow335HunterPetTargetPolicyInput, +): Wow335HunterPetTargetPolicyDecision { + const isEligible = (targetId: string | null | undefined): targetId is string => Boolean( + targetId && input.eligibleTargetIds.has(targetId), + ); + let targetId: string | null = null; + let source: Wow335HunterPetTargetPolicyDecision["source"] = "none"; + const hasExplicitAttackOrder = input.command === "attack" || Boolean(input.isCommandAttack); + // The Follow action calls AttackStop and marks the pet as returning. A pet + // that has reached its follow position can engage again; an active victim + // acquired after that point is still retained while the command state says + // Follow. Stay does not clear the victim when its command is issued. + const returningToOwner = input.command === "follow" + && Boolean(input.isReturning) + && Boolean(input.isCommandFollow); + const isSelectable = (candidateId: string): boolean => input.eligibleTargetIds.has(candidateId) + && (input.command !== "stay" + || hasExplicitAttackOrder + || Boolean(input.inMeleeRangeTargetIds?.has(candidateId))); + + if (hasExplicitAttackOrder) { + if (isEligible(input.commandTargetId)) { + targetId = input.commandTargetId; + source = "command"; + } + } + if (!targetId && !returningToOwner && isEligible(input.currentTargetId) + && (input.reactMode !== "passive" || hasExplicitAttackOrder)) { + // PetAI keeps a living victim until it dies/becomes invalid. An explicit + // Follow action already clears the victim; issuing Stay does not. Switching + // to Passive also calls AttackStop, unless the later Attack order is active. + targetId = input.currentTargetId; + source = hasExplicitAttackOrder && isEligible(input.commandTargetId) + ? "command" + : "current"; + } else if (!targetId && !returningToOwner && input.reactMode !== "passive") { + // Passive pets do not auto-select. A fresh explicit Attack is handled above. + const firstEligible = (ids: readonly string[] | undefined): string | null => ( + ids?.find(isSelectable) ?? null + ); + targetId = firstEligible(input.petAttackerTargetIds); + if (targetId) source = "pet-attacker"; + if (!targetId) { + targetId = firstEligible(input.ownerAttackerTargetIds); + if (targetId) source = "owner-attacker"; + } + if (!targetId && input.ownerTargetId && isSelectable(input.ownerTargetId)) { + targetId = input.ownerTargetId; + source = "owner-target"; + } + const canAggressivelyAutoSelect = !input.isReturning + || input.isFollowing + || input.petAtStayPosition; + if (!targetId && input.reactMode === "aggressive" && canAggressivelyAutoSelect) { + targetId = firstEligible(input.ambientTargetIds); + if (targetId) source = "ambient"; + } + } + + const inMeleeRange = Boolean( + targetId && input.inMeleeRangeTargetIds?.has(targetId), + ); + const canAttackNow = Boolean( + targetId + && inMeleeRange + && (input.command !== "stay" || input.petAtStayPosition || hasExplicitAttackOrder), + ); + + let movement: Wow335HunterPetTargetPolicyDecision["movement"]; + if (targetId) { + movement = input.command === "stay" && !hasExplicitAttackOrder ? "hold-stay" : "chase-target"; + } else if (input.command === "follow") { + movement = "follow-owner"; + } else if (input.command === "stay") { + movement = input.petAtStayPosition ? "hold" : "return-to-stay"; + } else { + movement = "hold"; + } + + return { targetId, source, movement, canAttackNow }; +} + +export function wow335HunterPetFuriousHowlAura(profile: Wow335HunterPetFuriousHowlProfile) { + return { + id: WOW335_HUNTER_PET_FURIOUS_HOWL_TAG, + name: "Furious Howl", + description: `Increases melee and ranged attack power by ${profile.attackPower} for the Wolf and its master for 20 seconds.`, + disposition: "buff" as const, + durationMs: profile.durationMs, + maxStacks: 1, + stackBehavior: "refresh" as const, + modifiers: [ + { kind: "stat" as const, stat: "attack-power", operation: "flat" as const, value: profile.attackPower }, + { kind: "stat" as const, stat: "ranged-attack-power", operation: "flat" as const, value: profile.attackPower }, + ], + utilityTags: [WOW335_HUNTER_PET_FURIOUS_HOWL_TAG], + }; +} + +/** + * A flat pet AP increase adds AP / 14 * weapon speed seconds to each melee + * swing. Hunter pets use the 2-second BASE_ATTACK_TIME in the local 3.3.5 + * Pet::InitStatsForLevel source. + */ +export function wow335HunterPetFuriousHowlAutoAttackDamageBonus( + profile: Wow335HunterPetFuriousHowlProfile, +): number { + return profile.attackPower * (WOW335_HUNTER_PET_AUTO_ATTACK_TIME_MS / 1_000) / 14; +} + +/** Select the highest Bite rank present in the local 3.3.5a DBC at this pet level. */ +export function wow335HunterPetProfileForLevel( + level: number, + family: Wow335HunterPetFamily = "wolf", + ownerStats: Wow335HunterPetOwnerCombatStats = { stamina: 0, rangedAttackPower: 0 }, +): Wow335HunterPetProfile { + const safeLevel = Math.max(1, Math.min(80, Math.trunc(level))); + const rank = [...WOLF_BITE_RANKS].reverse().find((candidate) => candidate.requiredLevel <= safeLevel) + ?? WOLF_BITE_RANKS[0]!; + const baseStats = wow335HunterPetBaseStatsForLevel(safeLevel); + return { + ...rank, + family, + baseStats, + effectiveStats: wow335HunterPetEffectiveStatsForOwner(baseStats, ownerStats), + abilityName: "Bite", + abilityId: `wow335-hunter-pet-bite-rank-${rank.rank}`, + focusCost: 25, + globalCooldownMs: 1_500, + furiousHowl: wow335HunterPetFuriousHowlProfileForLevel(safeLevel), + }; +} + +/** Kill Command starts at 60%; each landed pet special attack removes 20 points. */ +export function wow335HunterPetKillCommandBonusPercent(remainingSpecialCharges: number): number { + return Math.max(0, Math.min( + WOW335_HUNTER_PET_KILL_COMMAND_INITIAL_BONUS_PERCENT, + Math.trunc(remainingSpecialCharges) * WOW335_HUNTER_PET_KILL_COMMAND_DECAY_PERCENT, + )); +} diff --git a/src/game/wow335MageConditionalMechanics.test.ts b/src/game/wow335MageConditionalMechanics.test.ts index b15f081d..d682e2c0 100644 --- a/src/game/wow335MageConditionalMechanics.test.ts +++ b/src/game/wow335MageConditionalMechanics.test.ts @@ -11,6 +11,7 @@ import { talentModifiersForRanks } from "./talentModifiers"; import { usePartyStore, createConfiguredPartyMember } from "./partyStore"; import { EMPTY_ITEM_STATS } from "./itemStats"; import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { commitPartyAbilityUse } from "./partyAbilityAi"; import { WOW335_MAGE_ARCANE_CONCENTRATION_TAG, } from "./wow335MageTalentRuntime"; @@ -192,9 +193,85 @@ async function castPartyMissilesWithSlow(slowKind?: "slow" | "attack-speed"): Pr )).map((event) => event.rawAmount); } +async function castPlayerFireBlastWithImprovedFireBlast(rank: number): Promise<{ + readonly damage: number; + readonly readyAt: number; +}> { + await resetMage(); + const talentRanks = { ...useCombatStore.getState().talentRanks, "talent-27": rank }; + useCombatStore.setState({ + talentRanks, + talentModifiers: talentModifiersForRanks(talentRanks, "mage"), + }); + const fireBlast = useCombatStore.getState().abilities.find((ability) => ability.name === "Fire Blast")!; + expect(useCombatStore.getState().castAbility(fireBlast.id, undefined, 1_000).ok).toBe(true); + return { + damage: useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" && event.abilityId === fireBlast.id && event.targetActorId === TARGET_ID + ))?.rawAmount ?? 0, + readyAt: useCombatStore.getState().cooldowns[fireBlast.id] ?? 0, + }; +} + +async function castPartyFireBlastWithImprovedFireBlast(rank: number): Promise<{ + readonly damage: number; + readonly readyAt: number; +}> { + await resetMage(); + const { memberId } = makePartyMage({ "talent-27": rank }); + const abilities = abilitiesForClass("mage"); + const fireBlast = abilities.find((ability) => ability.name === "Fire Blast")!; + const member = usePartyStore.getState().members[0]; + const availableMember = { ...member, cooldowns: {} }; + const committed = commitPartyAbilityUse(availableMember, fireBlast, 1_000)!; + usePartyStore.setState({ members: [{ + ...availableMember, + activeCast: { + abilityId: fireBlast.id, + school: "fire", + mode: "cast", + startedAt: 0, + completesAt: 1_000, + originalDurationMs: 0, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: TARGET_ID, + }, + activeCastTargetId: TARGET_ID, + status: "attacking", + }] }); + useCombatStore.getState().synchronizeActors(); + advanceDungeonPartyCombat(1_000); + return { + damage: useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" && event.sourceActorId === memberId + && event.abilityId === fireBlast.id && event.targetActorId === TARGET_ID + ))?.rawAmount ?? 0, + readyAt: committed.cooldowns[fireBlast.id] ?? 0, + }; +} + describe("WoW Mage conditional mechanics integration", () => { beforeEach(resetMage); + it("applies generated Improved Fire Blast cooldown and monster damage ranks to the player", async () => { + const baseline = await castPlayerFireBlastWithImprovedFireBlast(0); + const capstone = await castPlayerFireBlastWithImprovedFireBlast(2); + + expect(baseline.readyAt).toBe(9_000); + expect(capstone.readyAt).toBe(7_000); + expect(capstone.damage).toBe(Math.round(baseline.damage * 1.1)); + }); + + it("applies generated Improved Fire Blast cooldown and monster damage ranks to party Mages", async () => { + const baseline = await castPartyFireBlastWithImprovedFireBlast(0); + const capstone = await castPartyFireBlastWithImprovedFireBlast(2); + + expect(baseline.readyAt).toBe(9_000); + expect(capstone.readyAt).toBe(7_000); + expect(capstone.damage).toBe(Math.round(baseline.damage * 1.1)); + }); + it("grants Arcane Potency from Presence of Mind, applies rank crit to the next spell, and consumes it on any spell", () => { const abilities = useCombatStore.getState().abilities; const presenceOfMind = abilities.find((ability) => ability.name === "Presence of Mind")!; diff --git a/src/game/wow335MageFrostWarding.integration.test.ts b/src/game/wow335MageFrostWarding.integration.test.ts new file mode 100644 index 00000000..55c6749c --- /dev/null +++ b/src/game/wow335MageFrostWarding.integration.test.ts @@ -0,0 +1,155 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilityAtLevel, abilityById } from "./abilityCatalog"; +import { useCombatStore, stableCombatUnit, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { DEFAULT_ENEMY_ATTACK, type EnemyDamageSchool } from "./enemyAttacks"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { + WOW335_MAGE_FROST_WARDING_TALENT_ID, + WOW335_MAGE_FROST_WARDING_WARD_ABILITIES, +} from "./wow335MageFrostWardingRuntime"; + +const ATTACK = { + ...DEFAULT_ENEMY_ATTACK, + id: "frost-warding-incoming-test", + name: "Frost Warding incoming test", + delivery: "projectile" as const, + animation: "cast" as const, + castTimeMs: 0, + range: 20, + cooldownMs: 10_000, + initialCooldownMs: [0, 0] as const, + repeatCooldownMs: [10_000, 10_000] as const, + damageMultiplier: 1, +}; + +function incomingEvent(mobId: string, targetId: string) { + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "damage" && candidate.sourceActorId === mobId && candidate.targetActorId === targetId + )); + if (!event) throw new Error(`Expected an incoming damage event on ${targetId}.`); + return event; +} + +function hitTime(mobId: string, targetId: string): number { + for (let now = 1_000; now < 200_000; now += 1) { + const resultRoll = stableCombatUnit(`${mobId}:${ATTACK.id}:${targetId}:0:${now}:outcome`); + const wardRoll = stableCombatUnit(`${targetId}:${mobId}:${ATTACK.id}:0:wow335-frost-warding`); + if (resultRoll >= 0.2 && resultRoll < 0.9 && wardRoll < 0.5) return now; + } + throw new Error("Could not find a landed hit that passes rank 2 Frost Warding's 50% roll."); +} + +function mobIdForWardProc(prefix: string, targetId: string): string { + for (let index = 0; index < 1_000; index += 1) { + const mobId = `${prefix}-${index}`; + if (stableCombatUnit(`${targetId}:${mobId}:${ATTACK.id}:0:wow335-frost-warding`) < 0.5) return mobId; + } + throw new Error("Could not find a stable Frost Warding success seed."); +} + +function setupAttacker(mobId: string, targetId: string, now: number, school: EnemyDamageSchool): void { + useCombatStore.getState().registerMob(mobId, { + name: "Frost Warding test attacker", level: 80, maxHealth: 100_000, xpReward: 0, + attacks: [{ ...ATTACK, school }], + }); + setMobPosition(mobId, [2, 0, 0]); + useCombatStore.setState((state) => ({ + mobs: { ...state.mobs, [mobId]: { ...state.mobs[mobId]!, attackDamage: 4_000 } }, + })); + useCombatStore.getState().damageMob(mobId, 1, now - 1, { actorId: targetId, role: "tank" }, "physical"); +} + +function runPlayerHit(rank: number, ward: "fire" | "frost") { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty(`frost-warding-player-${ward}`, 80, useCombatStore.getState().health, "damage", 1); + const spell = abilityById(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES[ward].abilityId); + if (!spell) throw new Error(`Missing local Mage ${ward} ward.`); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_MAGE_FROST_WARDING_TALENT_ID]: rank }, + resource: 10_000, + resourcePools: { ...state.resourcePools, mana: 10_000 }, + })); + expect(useCombatStore.getState().castAbility(spell.id, undefined, 1_000)).toMatchObject({ ok: true }); + useCombatStore.setState((state) => ({ + resource: 1_000, + resourcePools: { ...state.resourcePools, mana: 1_000 }, + })); + const mobId = mobIdForWardProc(`frost-warding-player-${ward}`, PLAYER_AGGRO_ID); + const now = hitTime(mobId, PLAYER_AGGRO_ID); + setupAttacker(mobId, PLAYER_AGGRO_ID, now, ward); + useCombatStore.getState().advanceMobCombat(now); + return { event: incomingEvent(mobId, PLAYER_AGGRO_ID), mana: useCombatStore.getState().resourcePools.mana ?? 0 }; +} + +function runCompanionHit(rank: number, ward: "fire" | "frost") { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty(`frost-warding-companion-${ward}`, 80, useCombatStore.getState().health, "damage", 1); + const talentRanks = { [WOW335_MAGE_FROST_WARDING_TALENT_ID]: rank }; + const member = createConfiguredPartyMember({ + name: "Frost Warding Mage", classId: "mage", specialization: "Frost", + specializationId: "mage:frost", talentTreeId: "mage-frost", talentRanks, role: "tank", + }, 80, 0, `frost-warding-companion-${ward}-${rank}`); + const wardAbility = abilityById(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES[ward].abilityId); + if (!wardAbility) throw new Error("Missing local Mage Ward ability."); + const resolvedWard = abilityAtLevel(wardAbility, 80); + const auraEffect = resolvedWard.effects.find((effect) => effect.kind === "apply-aura"); + if (!auraEffect || auraEffect.kind !== "apply-aura") throw new Error("Mage Ward has no generated aura effect."); + usePartyStore.setState({ members: [{ + ...member, + health: 100_000, + maxHealth: 100_000, + gearStats: EMPTY_ITEM_STATS, + talentRanks, + resource: 1_000, + maxResource: 20_000, + resourcePools: { ...member.resourcePools, mana: 1_000 }, + }] }); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + expect(useCombatStore.getState().applyActorAura(member.id, member.id, resolvedWard, auraEffect, 1_000)).toBe(true); + const mobId = mobIdForWardProc(`frost-warding-companion-${ward}`, member.id); + const now = hitTime(mobId, member.id); + setupAttacker(mobId, member.id, now, ward); + advanceDungeonPartyCombat(now); + useCombatStore.getState().advanceMobCombat(now); + const actor = useCombatStore.getState().actors[member.id]; + return { event: incomingEvent(mobId, member.id), mana: actor?.resources.mana?.current ?? 0 }; +} + +describe("WoW Mage Frost Warding combat integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + }); + + it.each(["fire", "frost"] as const)( + "reduces matching %s spell damage before its Ward absorb and refunds the same Mana to player and companion", + (ward) => { + const baselinePlayer = runPlayerHit(0, ward); + const wardedPlayer = runPlayerHit(2, ward); + const baselineCompanion = runCompanionHit(0, ward); + const wardedCompanion = runCompanionHit(2, ward); + const baselineAfterAbsorb = baselinePlayer.event.effectiveAmount + baselinePlayer.event.absorbed; + const wardedAfterAbsorb = wardedPlayer.event.effectiveAmount + wardedPlayer.event.absorbed; + const companionBaselineAfterAbsorb = baselineCompanion.event.effectiveAmount + baselineCompanion.event.absorbed; + const companionWardedAfterAbsorb = wardedCompanion.event.effectiveAmount + wardedCompanion.event.absorbed; + + expect(baselineAfterAbsorb).toBeGreaterThan(0); + expect(wardedAfterAbsorb).toBe(Math.round(baselineAfterAbsorb * 0.5)); + expect(companionBaselineAfterAbsorb).toBeGreaterThan(0); + expect(companionWardedAfterAbsorb).toBe(Math.round(companionBaselineAfterAbsorb * 0.5)); + expect(wardedPlayer.mana).toBeGreaterThan(1_000); + expect(wardedCompanion.mana).toBeGreaterThan(1_000); + }, + ); +}); diff --git a/src/game/wow335MageFrostWardingArmor.integration.test.ts b/src/game/wow335MageFrostWardingArmor.integration.test.ts new file mode 100644 index 00000000..2c344a80 --- /dev/null +++ b/src/game/wow335MageFrostWardingArmor.integration.test.ts @@ -0,0 +1,161 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { abilityAtLevel, abilityById } from "./abilityCatalog"; +import { resolveStatValue, type ActiveAura } from "./combatAuras"; +import { PLAYER_AURA_ENTITY_ID, useCombatStore } from "./combatStore"; +import { deriveCharacterStats } from "./wotlkStats"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { + WOW335_MAGE_FROST_WARDING_ARMOR_ABILITIES, + WOW335_MAGE_FROST_WARDING_ARMOR_TAG, + WOW335_MAGE_FROST_WARDING_TALENT_ID, +} from "./wow335MageFrostWardingRuntime"; + +const TEST_NOW = 1_000; + +function isArmorOrResistanceAura(aura: ActiveAura): boolean { + return Boolean(aura.definition.modifiers?.some((modifier) => modifier.kind === "stat" + && (modifier.stat === "armor" || modifier.stat.startsWith("resistance:")))); +} + +function armorAuras(targetId: string) { + return useCombatStore.getState().auras.filter((aura) => ( + aura.targetId === targetId + && aura.definition.utilityTags?.includes(WOW335_MAGE_FROST_WARDING_ARMOR_TAG) + )); +} + +function baseArmor(classId: "mage", level: number, gearStats = EMPTY_ITEM_STATS): number { + return deriveCharacterStats(classId, level, gearStats).armor; +} + +function runPlayerArmorCast(armor: "frost" | "ice", rank: number) { + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + const baseAbility = abilityById(WOW335_MAGE_FROST_WARDING_ARMOR_ABILITIES[armor].abilityId); + if (!baseAbility) throw new Error(`Missing local Mage ${armor} Armor.`); + const ability = abilityAtLevel(baseAbility, 80); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_MAGE_FROST_WARDING_TALENT_ID]: rank }, + })); + expect(useCombatStore.getState().castAbility(ability.id, undefined, TEST_NOW)).toMatchObject({ ok: true }); + const auras = armorAuras(PLAYER_AURA_ENTITY_ID); + const activeAuras = useCombatStore.getState().auras.filter((aura) => aura.targetId === PLAYER_AURA_ENTITY_ID); + const sourceAuraPrefix = `wow335:${ability.dbcSpellId}:effect:`; + const sourceAuras = activeAuras.filter((aura) => aura.definition.id.startsWith(sourceAuraPrefix) + && isArmorOrResistanceAura(aura)); + const ambientAuras = activeAuras.filter((aura) => !sourceAuras.includes(aura)); + const base = baseArmor("mage", 80, useCombatStore.getState().gearStats); + return { + auras, + armorValue: resolveStatValue(base, activeAuras, "armor") - resolveStatValue(base, ambientAuras, "armor"), + frostResistance: resolveStatValue(0, activeAuras, "resistance:frost") + - resolveStatValue(0, ambientAuras, "resistance:frost"), + sourceAuraCount: sourceAuras.length, + }; +} + +function runCompanionArmorCast(armor: "frost" | "ice", rank: number) { + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty(`frost-warding-companion-${armor}-${rank}`, 80, + useCombatStore.getState().health, "damage", 1); + const talentRanks: Readonly> = rank > 0 + ? { [WOW335_MAGE_FROST_WARDING_TALENT_ID]: rank } : {}; + const member = createConfiguredPartyMember({ + name: "Frost Warding Mage", + classId: "mage", + specialization: "Frost", + specializationId: "mage:frost", + talentTreeId: "mage-frost", + talentRanks, + role: "damage", + }, 80, 0, `frost-warding-companion-${armor}-${rank}`); + const baseAbility = abilityById(WOW335_MAGE_FROST_WARDING_ARMOR_ABILITIES[armor].abilityId); + if (!baseAbility) throw new Error(`Missing local Mage ${armor} Armor.`); + const ability = abilityAtLevel(baseAbility, member.level); + usePartyStore.setState({ members: [{ + ...member, + gearStats: EMPTY_ITEM_STATS, + talentRanks, + activeCast: { + abilityId: ability.id, + school: "frost", + mode: "cast", + startedAt: TEST_NOW, + completesAt: TEST_NOW, + originalDurationMs: ability.castTimeMs, + pushbackHits: 0, + origin: [0, 0, 0], + targetId: member.id, + }, + activeCastTargetId: member.id, + status: "healing", + }] }); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + advanceDungeonPartyCombat(TEST_NOW); + + const auras = armorAuras(member.id); + const activeAuras = useCombatStore.getState().auras.filter((aura) => aura.targetId === member.id); + const sourceAuraPrefix = `wow335:${ability.dbcSpellId}:effect:`; + const sourceAuras = activeAuras.filter((aura) => aura.definition.id.startsWith(sourceAuraPrefix) + && isArmorOrResistanceAura(aura)); + const ambientAuras = activeAuras.filter((aura) => !sourceAuras.includes(aura)); + const base = baseArmor("mage", member.level, member.gearStats); + return { + auras, + armorValue: resolveStatValue(base, activeAuras, "armor") - resolveStatValue(base, ambientAuras, "armor"), + frostResistance: resolveStatValue(0, activeAuras, "resistance:frost") + - resolveStatValue(0, ambientAuras, "resistance:frost"), + sourceAuraCount: sourceAuras.length, + }; +} + +describe("WoW Mage Frost Warding Frost/Ice Armor integration", () => { + beforeEach(() => { + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("frost-warding-armor-reset", 80, + useCombatStore.getState().health, "damage", 1); + }); + + it.each([ + { armor: "frost" as const, rank: 0, expectedArmor: 200, expectedResistance: 0 }, + { armor: "frost" as const, rank: 1, expectedArmor: 250, expectedResistance: 0 }, + { armor: "frost" as const, rank: 2, expectedArmor: 300, expectedResistance: 0 }, + { armor: "ice" as const, rank: 0, expectedArmor: 930, expectedResistance: 40 }, + { armor: "ice" as const, rank: 1, expectedArmor: 1_162.5, expectedResistance: 50 }, + { armor: "ice" as const, rank: 2, expectedArmor: 1_395, expectedResistance: 60 }, + ])("casts player $armor Armor with rank $rank", ({ armor, rank, expectedArmor, expectedResistance }) => { + const result = runPlayerArmorCast(armor, rank); + expect(result.armorValue).toBe(expectedArmor); + expect(result.frostResistance).toBe(expectedResistance); + expect(result.auras.length).toBe(rank > 0 ? (armor === "ice" ? 2 : 1) : 0); + expect(result.sourceAuraCount).toBe(armor === "ice" ? 2 : 1); + }); + + it.each([ + { armor: "frost" as const, rank: 0, expectedArmor: 200, expectedResistance: 0 }, + { armor: "frost" as const, rank: 1, expectedArmor: 250, expectedResistance: 0 }, + { armor: "frost" as const, rank: 2, expectedArmor: 300, expectedResistance: 0 }, + { armor: "ice" as const, rank: 0, expectedArmor: 930, expectedResistance: 40 }, + { armor: "ice" as const, rank: 1, expectedArmor: 1_162.5, expectedResistance: 50 }, + { armor: "ice" as const, rank: 2, expectedArmor: 1_395, expectedResistance: 60 }, + ])("casts companion $armor Armor with rank $rank", ({ armor, rank, expectedArmor, expectedResistance }) => { + const result = runCompanionArmorCast(armor, rank); + expect(result.armorValue).toBe(expectedArmor); + expect(result.frostResistance).toBe(expectedResistance); + expect(result.auras.length).toBe(rank > 0 ? (armor === "ice" ? 2 : 1) : 0); + expect(result.sourceAuraCount).toBe(armor === "ice" ? 2 : 1); + }); + + it("does not apply the conditional armor bonus before a Mage Frost/Ice Armor aura exists", () => { + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_MAGE_FROST_WARDING_TALENT_ID]: 2 }, + })); + expect(armorAuras(PLAYER_AURA_ENTITY_ID)).toEqual([]); + }); +}); diff --git a/src/game/wow335MageFrostWardingRuntime.test.ts b/src/game/wow335MageFrostWardingRuntime.test.ts new file mode 100644 index 00000000..43f8694e --- /dev/null +++ b/src/game/wow335MageFrostWardingRuntime.test.ts @@ -0,0 +1,225 @@ +import { describe, expect, it } from "vitest"; +import { abilityAtLevel, abilityById } from "./abilityCatalog"; +import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; +import { + WOW335_MAGE_FROST_WARDING_ARMOR_ABILITIES, + WOW335_MAGE_FROST_WARDING_ARMOR_TAG, + WOW335_MAGE_FROST_WARDING_TALENT_ID, + WOW335_MAGE_FROST_WARDING_WARD_ABILITIES, + wow335MageFrostWardingArmorAuraEffect, + wow335MageFrostWardingProcPlan, + wow335MageFrostWardingProfile, +} from "./wow335MageFrostWardingRuntime"; + +const procEvent = (overrides: Partial[1]> = {}) => ({ + wardOwnerClassId: "mage", + eventKind: "spell-damage", + wardAbilityId: WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.fire.abilityId, + wardRankSpellId: 43010, + wardAuraActive: true, + damageSchool: "fire", + spellDamage: 200, + roll: 0, + ...overrides, +}); + +describe("WoW 3.3.5a Mage Frost Warding", () => { + it("reads the generated rank chance, reduction, Mana refund, and armor/resistance values", () => { + expect(WOW335_MAGE_FROST_WARDING_TALENT_ID).toBe("talent-70"); + expect([1, 2].map(wow335MageFrostWardingProfile)).toEqual([ + { + rank: 1, + rankSpellId: 11189, + armorAndResistanceBonusPercent: 25, + wardProcChancePercent: 25, + wardDamageReductionPercent: 50, + manaRefundPerDamageReduced: 1, + }, + { + rank: 2, + rankSpellId: 28332, + armorAndResistanceBonusPercent: 50, + wardProcChancePercent: 50, + wardDamageReductionPercent: 50, + manaRefundPerDamageReduced: 1, + }, + ]); + expect(wow335MageFrostWardingProfile(0)).toBeNull(); + expect(wow335MageFrostWardingProfile(3)).toBeNull(); + }); + + it.each([ + { + armor: "frost" as const, + rank: 1, + spellId: 7301, + expected: { armor: 250 }, + }, + { + armor: "frost" as const, + rank: 2, + spellId: 7301, + expected: { armor: 300 }, + }, + { + armor: "ice" as const, + rank: 1, + spellId: 43008, + expected: { armor: 1162.5, "resistance:frost": 50 }, + }, + { + armor: "ice" as const, + rank: 2, + spellId: 43008, + expected: { armor: 1395, "resistance:frost": 60 }, + }, + ])("scales only the exact local $armor armor aura at Frost Warding rank $rank", ({ armor, rank, spellId, expected }) => { + const row = WOW335_MAGE_FROST_WARDING_ARMOR_ABILITIES[armor]; + const baseAbility = abilityById(row.abilityId); + if (!baseAbility) throw new Error(`Missing local ${row.name} ability.`); + const ability = abilityAtLevel(baseAbility, 80); + expect(ability.dbcSpellId).toBe(spellId); + const armorEffects = ability.effects.filter((effect) => effect.kind === "apply-aura" + && effect.sourceAuraType === 22); + expect(armorEffects.length).toBeGreaterThan(0); + + const actual: Record = {}; + for (const effect of armorEffects) { + if (effect.kind !== "apply-aura") continue; + const applied = wow335MageFrostWardingArmorAuraEffect(ability, rank, effect); + expect(applied.aura.utilityTags).toContain(WOW335_MAGE_FROST_WARDING_ARMOR_TAG); + for (const modifier of applied.aura.modifiers ?? []) { + if (modifier.kind === "stat" && (modifier.stat === "armor" || modifier.stat.startsWith("resistance:"))) { + actual[modifier.stat] = (actual[modifier.stat] ?? 0) + modifier.value; + } + } + } + expect(actual).toEqual(expected); + }); + + it("requires a learned rank and the exact local Mage Frost/Ice Armor source aura", () => { + const baseAbility = abilityById(WOW335_MAGE_FROST_WARDING_ARMOR_ABILITIES.ice.abilityId)!; + const ability = abilityAtLevel(baseAbility, 80); + const effect = ability.effects.find((candidate) => candidate.kind === "apply-aura" + && candidate.sourceAuraType === 22)!; + if (effect.kind !== "apply-aura") throw new Error("Ice Armor has no stat aura."); + expect(wow335MageFrostWardingArmorAuraEffect(ability, 0, effect)).toBe(effect); + expect(wow335MageFrostWardingArmorAuraEffect({ ...ability, classId: "warlock" }, 2, effect)).toBe(effect); + expect(wow335MageFrostWardingArmorAuraEffect({ ...ability, dbcSpellId: 12345 }, 2, effect)).toBe(effect); + const wrongAuraType = { ...effect, sourceAuraType: 42 }; + expect(wow335MageFrostWardingArmorAuraEffect(ability, 2, wrongAuraType)).toBe(wrongAuraType); + expect(wow335MageFrostWardingArmorAuraEffect(ability, 2, { + ...effect, + sourceAuraType: 42, + })).toMatchObject({ sourceAuraType: 42 }); + expect(wow335MageFrostWardingArmorAuraEffect(ability, 2, { + ...effect, + aura: { + ...effect.aura, + modifiers: [ + { kind: "stat", stat: "armor", operation: "flat", value: 0 }, + { kind: "stat", stat: "resistance:frost", operation: "flat", value: -5 }, + { kind: "stat", stat: "spell-power", operation: "flat", value: 25 }, + ], + }, + })).toMatchObject({ aura: { modifiers: [ + { kind: "stat", stat: "armor", value: 0 }, + { kind: "stat", stat: "resistance:frost", value: -5 }, + { kind: "stat", stat: "spell-power", value: 25 }, + ] } }); + }); + + it("keeps the ward school selector separate from rank-specific chance", () => { + expect(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.fire.school).toBe("fire"); + expect(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.frost.school).toBe("frost"); + expect(wow335MageFrostWardingProfile(1)?.wardProcChancePercent).toBe(25); + expect(wow335MageFrostWardingProfile(2)?.wardProcChancePercent).toBe(50); + + const frostEvent = procEvent({ + wardAbilityId: WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.frost.abilityId, + wardRankSpellId: 43012, + damageSchool: "frost", + roll: 0.249, + }); + expect(wow335MageFrostWardingProcPlan(1, frostEvent)?.wardAbilityId) + .toBe(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.frost.abilityId); + expect(wow335MageFrostWardingProcPlan(1, { ...frostEvent, damageSchool: "fire" })).toBeNull(); + }); + + it("binds its supported Fire and Frost Wards to local Mage Spell.dbc ability rows", () => { + const mageRows = new Map(WOW335_ABILITIES_BY_CLASS.mage.map((ability) => [ability.id, ability])); + expect(mageRows.get(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.fire.abilityId)?.name).toBe("Fire Ward"); + expect(mageRows.get(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.frost.abilityId)?.name).toBe("Frost Ward"); + + for (const ward of Object.values(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES)) { + const row = mageRows.get(ward.abilityId); + expect(row?.source).toBe("wow335-progression"); + expect(row?.ranks?.map((rank) => rank.spellId)).toEqual(ward.rankSpellIds); + } + + const otherClassRows = new Map(WOW335_ABILITIES_BY_CLASS.warlock.map((ability) => [ability.name, ability])); + expect(otherClassRows.get("Shadow Ward")?.id).toBe("wow335-warlock-shadow-ward"); + expect(mageRows.get("wow335-mage-arcane-ward")).toBeUndefined(); + }); + + it.each([ + { + rank: 1, + event: procEvent({ roll: 0.249 }), + expectedRankSpellId: 11189, + }, + { + rank: 2, + event: procEvent({ roll: 0.499 }), + expectedRankSpellId: 28332, + }, + { + rank: 2, + event: procEvent({ + wardAbilityId: WOW335_MAGE_FROST_WARDING_WARD_ABILITIES.frost.abilityId, + wardRankSpellId: 43012, + damageSchool: "Frost", + roll: 0.2, + }), + expectedRankSpellId: 28332, + }, + ])("plans a matching ward proc at the generated rank chance", ({ rank, event, expectedRankSpellId }) => { + expect(wow335MageFrostWardingProcPlan(rank, event)).toEqual({ + rankSpellId: expectedRankSpellId, + wardAbilityId: event.wardAbilityId, + wardDamageReductionPercent: 50, + manaRefundPerDamageReduced: 1, + }); + }); + + it("uses an exclusive upper roll boundary for 25% and 50% proc chances", () => { + expect(wow335MageFrostWardingProcPlan(1, procEvent({ roll: 0.25 }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ roll: 0.5 }))).toBeNull(); + }); + + it("requires the Mage owner, a learned rank, an active matching ward, and positive spell damage", () => { + expect(wow335MageFrostWardingProcPlan(2, procEvent({ wardOwnerClassId: "warlock" }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(0, procEvent())).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ wardAuraActive: false }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ wardRankSpellId: 43012 }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ damageSchool: "frost" }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ eventKind: "weapon-damage" }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ spellDamage: 0 }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ spellDamage: -1 }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ roll: Number.NaN }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ roll: 1 }))).toBeNull(); + }); + + it("does not synthesize support for the tooltip's absent Mage Arcane/Shadow Ward rows", () => { + expect(wow335MageFrostWardingProcPlan(2, procEvent({ + wardAbilityId: "wow335-warlock-shadow-ward", + wardRankSpellId: 47891, + damageSchool: "shadow", + }))).toBeNull(); + expect(wow335MageFrostWardingProcPlan(2, procEvent({ + wardAbilityId: "wow335-mage-arcane-ward", + wardRankSpellId: 43020, + damageSchool: "arcane", + }))).toBeNull(); + }); +}); diff --git a/src/game/wow335MageFrostWardingRuntime.ts b/src/game/wow335MageFrostWardingRuntime.ts new file mode 100644 index 00000000..ab9fd727 --- /dev/null +++ b/src/game/wow335MageFrostWardingRuntime.ts @@ -0,0 +1,179 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog"; + +export const WOW335_MAGE_FROST_WARDING_TALENT_ID = "talent-70"; +export const WOW335_MAGE_FROST_WARDING_ARMOR_TAG = "wow335-mage-frost-warding-armor"; + +export const WOW335_MAGE_FROST_WARDING_ARMOR_ABILITIES = Object.freeze({ + frost: Object.freeze({ + abilityId: "wow335-mage-frost-armor", + name: "Frost Armor", + rankSpellIds: Object.freeze([168, 7300, 7301]), + }), + ice: Object.freeze({ + abilityId: "wow335-mage-ice-armor", + name: "Ice Armor", + rankSpellIds: Object.freeze([7302, 7320, 10219, 10220, 27124, 43008]), + }), +} as const); + +/** + * Frost Warding names four Wards in its generated tooltip, but the local Mage + * spell catalog contains only these two Mage Ward families. Keep the helper + * bound to those exact local Spell.dbc rows. + */ +export const WOW335_MAGE_FROST_WARDING_WARD_ABILITIES = Object.freeze({ + fire: Object.freeze({ + abilityId: "wow335-mage-fire-ward", + school: "fire", + rankSpellIds: Object.freeze([543, 8457, 8458, 10223, 10225, 27128, 43010]), + }), + frost: Object.freeze({ + abilityId: "wow335-mage-frost-ward", + school: "frost", + rankSpellIds: Object.freeze([6143, 8461, 8462, 10177, 28609, 32796, 43012]), + }), +} as const); + +export interface Wow335MageFrostWardingProfile { + readonly rank: number; + readonly rankSpellId: number; + readonly armorAndResistanceBonusPercent: number; + readonly wardProcChancePercent: number; + readonly wardDamageReductionPercent: number; + readonly manaRefundPerDamageReduced: 1; +} + +export interface Wow335MageFrostWardingProcPlan { + readonly rankSpellId: number; + readonly wardAbilityId: string; + readonly wardDamageReductionPercent: number; + readonly manaRefundPerDamageReduced: 1; +} + +type ApplyAuraEffect = Extract; + +/** + * Applies the generated Frost Warding armor/resistance rank only to positive + * armor or resistance modifiers carried by the exact local Frost/Ice Armor + * Spell.dbc effect. Keeping the modifier on the source aura makes its lifetime, + * refresh, and exclusive armor replacement match that aura. + */ +export function wow335MageFrostWardingArmorAuraEffect( + ability: AbilityDefinition, + rank: number, + effect: ApplyAuraEffect, +): ApplyAuraEffect { + if (ability.classId !== "mage" + || ability.source !== "wow335-progression" + || effect.sourceEffectType !== 6 + || effect.sourceAuraType !== 22 + || effect.aura.utilityTags?.includes(WOW335_MAGE_FROST_WARDING_ARMOR_TAG)) return effect; + + const armor = Object.values(WOW335_MAGE_FROST_WARDING_ARMOR_ABILITIES) + .find((candidate) => candidate.abilityId === ability.id + && candidate.name === ability.name + && candidate.rankSpellIds.includes(ability.dbcSpellId)); + const profile = wow335MageFrostWardingProfile(rank); + if (!armor || !profile || !effect.aura.id.startsWith(`wow335:${ability.dbcSpellId}:effect:`)) return effect; + + let changed = false; + const scale = 1 + profile.armorAndResistanceBonusPercent / 100; + const modifiers = (effect.aura.modifiers ?? []).map((modifier) => { + if (modifier.kind !== "stat" + || (modifier.stat !== "armor" && !modifier.stat.startsWith("resistance:")) + || !Number.isFinite(modifier.value) + || modifier.value <= 0) return modifier; + changed = true; + return { ...modifier, value: modifier.value * scale }; + }); + if (!changed) return effect; + + return { + ...effect, + aura: { + ...effect.aura, + utilityTags: [...(effect.aura.utilityTags ?? []), WOW335_MAGE_FROST_WARDING_ARMOR_TAG], + modifiers, + }, + }; +} + +const talent = WOW335_TALENT_NODES.find((node) => node.id === WOW335_MAGE_FROST_WARDING_TALENT_ID); + +/** Reads values from the generated local Frost Warding rank descriptions. */ +export function wow335MageFrostWardingProfile(rank: number): Wow335MageFrostWardingProfile | null { + const normalizedRank = Math.trunc(Number.isFinite(rank) ? rank : 0); + const description = talent?.rankDescriptions[normalizedRank - 1]; + const rankEffect = talent?.rankEffects[normalizedRank - 1]; + if (!description || !rankEffect) return null; + + const armorMatch = description.match( + /increases the armor and resistances given by your frost armor and ice armor spells by (\d+(?:\.\d+)?)%/i, + ); + const wardMatch = description.match( + /frost ward, fire ward, shadow ward and arcane ward have a (\d+(?:\.\d+)?)% chance to reduce the damage taken from the spell by (\d+(?:\.\d+)?)% and restore mana equal to the damage reduced/i, + ); + if (!armorMatch || !wardMatch) return null; + + const armorAndResistanceBonusPercent = Number(armorMatch[1]); + const wardProcChancePercent = Number(wardMatch[1]); + const wardDamageReductionPercent = Number(wardMatch[2]); + if (![armorAndResistanceBonusPercent, wardProcChancePercent, wardDamageReductionPercent] + .every((value) => Number.isFinite(value) && value > 0) + || wardProcChancePercent > 100 + || wardDamageReductionPercent > 100) return null; + + return Object.freeze({ + rank: normalizedRank, + rankSpellId: rankEffect.spellId, + armorAndResistanceBonusPercent, + wardProcChancePercent, + wardDamageReductionPercent, + manaRefundPerDamageReduced: 1, + }); +} + +/** + * Returns Frost Warding's effect only for a Mage with a learned rank and the + * matching active local Fire/Frost Ward. `spellDamage` is the positive + * warded-school spell-damage event amount; this planner deliberately leaves + * absorb ordering and final integer damage/Mana rounding to the combat caller. + */ +export function wow335MageFrostWardingProcPlan( + rank: number, + event: { + readonly wardOwnerClassId: string; + readonly eventKind: string; + readonly wardAbilityId: string; + readonly wardRankSpellId: number; + readonly wardAuraActive: boolean; + readonly damageSchool: string; + readonly spellDamage: number; + readonly roll: number; + }, +): Wow335MageFrostWardingProcPlan | null { + const profile = wow335MageFrostWardingProfile(rank); + const ward = Object.values(WOW335_MAGE_FROST_WARDING_WARD_ABILITIES) + .find((candidate) => candidate.abilityId === event.wardAbilityId); + + if (event.wardOwnerClassId !== "mage" + || !profile + || !ward + || !ward.rankSpellIds.includes(event.wardRankSpellId) + || !event.wardAuraActive + || event.eventKind !== "spell-damage" + || event.damageSchool.toLowerCase() !== ward.school + || !Number.isFinite(event.spellDamage) + || event.spellDamage <= 0 + || !Number.isFinite(event.roll) + || event.roll < 0 + || event.roll >= profile.wardProcChancePercent / 100) return null; + + return Object.freeze({ + rankSpellId: profile.rankSpellId, + wardAbilityId: ward.abilityId, + wardDamageReductionPercent: profile.wardDamageReductionPercent, + manaRefundPerDamageReduced: profile.manaRefundPerDamageReduced, + }); +} diff --git a/src/game/wow335MageImprovedFireBlastRuntime.test.ts b/src/game/wow335MageImprovedFireBlastRuntime.test.ts new file mode 100644 index 00000000..6b152752 --- /dev/null +++ b/src/game/wow335MageImprovedFireBlastRuntime.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, it } from "vitest"; +import { + wow335MageImprovedFireBlastCooldownReductionMs, + wow335MageImprovedFireBlastDamage, + wow335MageImprovedFireBlastDamageBonusPercent, +} from "./wow335MageImprovedFireBlastRuntime"; + +describe("WoW Mage Improved Fire Blast", () => { + it("uses its generated one- and two-point cooldown and monster-damage values", () => { + expect([0, 1, 2, 3, -1, Number.NaN].map((rank) => ( + wow335MageImprovedFireBlastCooldownReductionMs(rank, "Fire Blast") + ))).toEqual([0, 1_000, 2_000, 2_000, 0, 0]); + expect([0, 1, 2, 3, -1, Number.NaN].map(wow335MageImprovedFireBlastDamageBonusPercent)) + .toEqual([0, 5, 10, 10, 0, 0]); + }); + + it("scales only Fire Blast damage", () => { + expect(wow335MageImprovedFireBlastDamage(100, 1, "Fire Blast")).toBe(105); + expect(wow335MageImprovedFireBlastDamage(100, 2, "Fire Blast")).toBe(110); + expect(wow335MageImprovedFireBlastDamage(100, 2, "Fireball")).toBe(100); + }); +}); diff --git a/src/game/wow335MageImprovedFireBlastRuntime.ts b/src/game/wow335MageImprovedFireBlastRuntime.ts new file mode 100644 index 00000000..10967550 --- /dev/null +++ b/src/game/wow335MageImprovedFireBlastRuntime.ts @@ -0,0 +1,32 @@ +export const WOW335_MAGE_IMPROVED_FIRE_BLAST_TALENT_ID = "talent-27"; + +const FIRE_BLAST_COOLDOWN_REDUCTION_MS_BY_RANK = [0, 1_000, 2_000] as const; +const FIRE_BLAST_DAMAGE_BONUS_PERCENT_BY_RANK = [0, 5, 10] as const; + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) ? Math.max(0, Math.min(2, Math.trunc(rank))) : 0; +} + +/** Generated talent-27 ranks reduce Fire Blast's cooldown by one or two seconds. */ +export function wow335MageImprovedFireBlastCooldownReductionMs( + rank: number, + abilityName: string, +): number { + if (abilityName !== "Fire Blast") return 0; + return FIRE_BLAST_COOLDOWN_REDUCTION_MS_BY_RANK[normalizedRank(rank)] ?? 0; +} + +export function wow335MageImprovedFireBlastDamageBonusPercent(rank: number): number { + return FIRE_BLAST_DAMAGE_BONUS_PERCENT_BY_RANK[normalizedRank(rank)] ?? 0; +} + +/** Generated talent-27 ranks increase Fire Blast damage against modeled monsters by 5%/10%. */ +export function wow335MageImprovedFireBlastDamage( + damage: number, + rank: number, + abilityName: string, +): number { + if (abilityName !== "Fire Blast" || !Number.isFinite(damage)) return damage; + const bonusPercent = wow335MageImprovedFireBlastDamageBonusPercent(rank); + return Math.max(0, Math.round(damage * (1 + bonusPercent / 100))); +} diff --git a/src/game/wow335MageNetherwindPresence.integration.test.ts b/src/game/wow335MageNetherwindPresence.integration.test.ts new file mode 100644 index 00000000..0f93df20 --- /dev/null +++ b/src/game/wow335MageNetherwindPresence.integration.test.ts @@ -0,0 +1,113 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { abilityAtLevel, abilitiesForClass, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { WOW335_MAGE_NETHERWIND_PRESENCE_TAG } from "./wow335MageNetherwindPresenceRuntime"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; + +async function resetMage(): Promise { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + await preloadAbilityCatalogsForClasses(["mage"]); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + useCombatStore.getState().resetSettings(); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + useCombatStore.setState((state) => ({ + resource: state.maxResource, + resourcePools: { ...state.resourcePools, mana: state.maxResourcePools.mana }, + talentRanks: { ...state.talentRanks, "talent-1846": 1 }, + })); + useCombatStore.getState().registerMob("netherwind-target", { name: "Target", maxHealth: 100_000 }); + setMobPosition("netherwind-target", [4, 0, 0]); + useCombatStore.getState().selectMob("netherwind-target"); +} + +describe("WoW Mage Netherwind Presence cast integration", () => { + beforeEach(resetMage); + + it("grants one stack for an accepted Arcane Missiles cast, not for each channel pulse", () => { + const arcaneMissiles = useCombatStore.getState().abilities.find((ability) => ability.name === "Arcane Missiles")!; + const started = useCombatStore.getState().castAbility(arcaneMissiles.id, undefined, 1_000); + expect(started).toMatchObject({ ok: true }); + const cast = useCombatStore.getState().activeCast!; + expect(cast.mode).toBe("channel"); + + const hasteAura = () => useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === PLAYER_AURA_ENTITY_ID + && aura.targetId === PLAYER_AURA_ENTITY_ID + && aura.definition.utilityTags?.includes(WOW335_MAGE_NETHERWIND_PRESENCE_TAG) + )); + expect(hasteAura()).toMatchObject({ stacks: 1 }); + + useCombatStore.getState().tick(0.1, cast.completesAt); + const impacts = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.abilityId === arcaneMissiles.id + )); + expect(impacts).toHaveLength(5); + expect(hasteAura()).toMatchObject({ stacks: 1 }); + + const nextStartAt = cast.completesAt + 1_000; + const nextStarted = useCombatStore.getState().castAbility(arcaneMissiles.id, undefined, nextStartAt); + expect(nextStarted).toMatchObject({ ok: true }); + expect(useCombatStore.getState().activeCast!.originalDurationMs).toBeLessThan(cast.originalDurationMs); + expect(hasteAura()).toMatchObject({ stacks: 2 }); + }); + + it("grants the same cast-commit stack to a generated party Mage", async () => { + await preloadAbilityCatalogsForClasses(["mage"]); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty("netherwind-party-mage", 80, + useCombatStore.getState().health, "damage", 1); + const mage = createConfiguredPartyMember({ + name: "Netherwind Companion", + classId: "mage", + specialization: "Arcane", + specializationId: "mage:arcane", + talentTreeId: "mage-arcane", + talentRanks: { "talent-1846": 1 }, + role: "damage", + }, 80, 0, "netherwind-party-mage"); + const arcaneMissiles = abilityAtLevel( + abilitiesForClass("mage").find((ability) => ability.name === "Arcane Missiles")!, + 80, + ); + const cooldowns = Object.fromEntries(abilitiesForClass("mage").map((ability) => [ability.id, 100_000])); + delete cooldowns[arcaneMissiles.id]; + usePartyStore.setState({ members: [{ + ...mage, + talentRanks: { "talent-1846": 1 }, + gearStats: EMPTY_ITEM_STATS, + cooldowns, + globalCooldownEndsAt: 0, + resource: 10_000, + maxResource: 10_000, + resourcePools: { ...mage.resourcePools, mana: 10_000 }, + }] }); + registerPartyRuntimePosition(mage.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + useCombatStore.getState().registerMob("netherwind-party-target", { + name: "Party Target", maxHealth: 100_000, level: 80, xpReward: 0, + }); + setMobPosition("netherwind-party-target", [4, 0, 0]); + useCombatStore.getState().damageMob("netherwind-party-target", 1, 100); + updatePartyRuntimeTargetVisibility(mage.id, "netherwind-party-target", true); + usePartyStore.setState({ command: "attack", activeMobId: "netherwind-party-target" }); + + advanceDungeonPartyCombat(1_000); + + expect(usePartyStore.getState().members[0]?.activeCast?.abilityId).toBe(arcaneMissiles.id); + expect(useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === mage.id + && aura.targetId === mage.id + && aura.definition.utilityTags?.includes(WOW335_MAGE_NETHERWIND_PRESENCE_TAG) + ))).toMatchObject({ stacks: 1 }); + }); +}); diff --git a/src/game/wow335MageNetherwindPresenceRuntime.test.ts b/src/game/wow335MageNetherwindPresenceRuntime.test.ts new file mode 100644 index 00000000..12b7112a --- /dev/null +++ b/src/game/wow335MageNetherwindPresenceRuntime.test.ts @@ -0,0 +1,136 @@ +import { describe, expect, it } from "vitest"; +import { applyAura, type ActiveAura } from "./combatAuras"; +import { talentModifiersForRanks } from "./talentModifiers"; +import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; +import { + WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_AURA, + WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_TAG, + WOW335_MAGE_NETHERWIND_PRESENCE_REACHABLE_TRIGGER_SPELL_NAMES, + WOW335_MAGE_NETHERWIND_PRESENCE_TAG, + WOW335_MAGE_NETHERWIND_PRESENCE_TOOLTIP_TRIGGER_SPELL_NAMES, + WOW335_MAGE_NETHERWIND_PRESENCE_UNAVAILABLE_TRIGGER_SPELL_NAMES, + wow335MageNetherwindPresenceAuraForRank, + wow335MageNetherwindPresenceAurasAfterCast, + wow335MageNetherwindPresenceCanStack, + wow335MageNetherwindPresenceCapstoneReady, + wow335MageNetherwindPresenceGeneratedSource, + wow335MageNetherwindPresenceHastePercent, + wow335MageNetherwindPresenceMovementSpeedMultiplier, + wow335MageNetherwindPresenceProfileForRank, +} from "./wow335MageNetherwindPresenceRuntime"; + +describe("WoW 3.3.5 Mage Netherwind Presence", () => { + it("uses the generated local talent ranks, trigger list, and temporary stack values", () => { + const talent = wow335MageNetherwindPresenceGeneratedSource(); + expect(talent).toMatchObject({ + id: "talent-1846", + name: "Netherwind Presence", + rankSpellIds: [44400, 44402, 44403], + }); + expect(talent!.rankDescriptions).toEqual([ + expect.stringContaining("increase your haste by 1% for 10 seconds, stacks up to 3 times"), + expect.stringContaining("increase your haste by 2% for 10 seconds, stacks up to 3 times"), + expect.stringContaining("increase your haste by 3% for 10 seconds, stacks up to 3 times"), + ]); + expect(talent!.rankEffects.map((rank) => rank.procChance)).toEqual([100, 100, 100]); + expect(talent!.rankEffects.map((rank) => rank.effects[0]?.triggerSpellId)).toEqual([ + 966120, 966121, 966122, + ]); + expect(talent!.rankEffects.every((rank) => rank.effects[0]?.classMask?.[0] === 536872960)).toBe(true); + expect(talent!.rankEffects.every((rank) => !("procFlags" in rank))).toBe(true); + expect(wow335MageNetherwindPresenceProfileForRank(1)).toMatchObject({ + rank: 1, durationMs: 10_000, hastePercentPerStack: 1, maxStacks: 3, + capstoneDurationMs: 3_000, capstoneMovementSpeedPercent: 30, + }); + expect(wow335MageNetherwindPresenceProfileForRank(2).hastePercentPerStack).toBe(2); + expect(wow335MageNetherwindPresenceProfileForRank(3).hastePercentPerStack).toBe(3); + expect(wow335MageNetherwindPresenceProfileForRank(99).rank).toBe(3); + expect(wow335MageNetherwindPresenceProfileForRank(Number.NaN).rank).toBe(0); + expect([...WOW335_MAGE_NETHERWIND_PRESENCE_TOOLTIP_TRIGGER_SPELL_NAMES].sort()).toEqual([ + "Arcane Barrage", "Arcane Blast", "Arcane Missiles", "Arcane Orb", "Moonfire", "Starfire", "Starsurge", + ]); + }); + + it("limits the trigger list to Mage abilities currently present in the generated catalog", () => { + const mageAbilityNames = new Set(WOW335_ABILITIES_BY_CLASS.mage.map((ability) => ability.name)); + expect([...WOW335_MAGE_NETHERWIND_PRESENCE_REACHABLE_TRIGGER_SPELL_NAMES].sort()).toEqual([ + "Arcane Barrage", "Arcane Blast", "Arcane Missiles", + ]); + expect([...WOW335_MAGE_NETHERWIND_PRESENCE_UNAVAILABLE_TRIGGER_SPELL_NAMES].sort()).toEqual([ + "Arcane Orb", "Moonfire", "Starfire", "Starsurge", + ]); + for (const name of WOW335_MAGE_NETHERWIND_PRESENCE_REACHABLE_TRIGGER_SPELL_NAMES) { + expect(mageAbilityNames.has(name), name).toBe(true); + expect(wow335MageNetherwindPresenceCanStack(1, name)).toBe(true); + } + for (const name of WOW335_MAGE_NETHERWIND_PRESENCE_UNAVAILABLE_TRIGGER_SPELL_NAMES) { + expect(mageAbilityNames.has(name), name).toBe(false); + expect(wow335MageNetherwindPresenceCanStack(3, name)).toBe(false); + } + expect(wow335MageNetherwindPresenceCanStack(3, "Slow")).toBe(false); + expect(wow335MageNetherwindPresenceCanStack(0, "Arcane Blast")).toBe(false); + }); + + it("adds one stack per eligible cast, refreshes 10 seconds, and caps rank-scaled haste at three stacks", () => { + const definition = wow335MageNetherwindPresenceAuraForRank(2)!; + expect(definition).toMatchObject({ + durationMs: 10_000, + maxStacks: 3, + stackBehavior: "add", + utilityTags: [WOW335_MAGE_NETHERWIND_PRESENCE_TAG], + modifiers: [{ kind: "stat", stat: "spell-haste", operation: "flat", value: 2 }], + }); + let auras: readonly ActiveAura[] = []; + for (const now of [0, 4_000, 8_000, 9_000]) { + const applied = applyAura(auras, { definition, sourceId: "mage", targetId: "mage", now }); + auras = [...applied.auras]; + } + expect(auras).toHaveLength(1); + expect(auras[0]).toMatchObject({ stacks: 3, appliedAt: 9_000, expiresAt: 19_000 }); + expect(wow335MageNetherwindPresenceHastePercent(auras, "mage", 10_000)).toBe(6); + expect(wow335MageNetherwindPresenceHastePercent(auras, "mage", 19_000)).toBe(0); + }); + + it("grants the Slow movement-speed rider only at three stacks and does not consume the stacks", () => { + expect(wow335MageNetherwindPresenceCapstoneReady(3, "Slow", 2)).toBe(false); + expect(wow335MageNetherwindPresenceCapstoneReady(1, "Slow", 3)).toBe(false); + expect(wow335MageNetherwindPresenceCapstoneReady(2, "Slow", 3)).toBe(false); + expect(wow335MageNetherwindPresenceCapstoneReady(0, "Slow", 3)).toBe(false); + expect(wow335MageNetherwindPresenceCapstoneReady(3, "Arcane Blast", 3)).toBe(false); + expect(wow335MageNetherwindPresenceCapstoneReady(3, "Slow", 3)).toBe(true); + expect(WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_AURA).toMatchObject({ + durationMs: 3_000, + utilityTags: [WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_TAG], + modifiers: [{ kind: "stat", stat: "movement-speed", operation: "percent", value: 0.3 }], + }); + expect(wow335MageNetherwindPresenceMovementSpeedMultiplier([], "mage", 0)).toBe(1); + + let auras: readonly ActiveAura[] = []; + for (const now of [0, 1_000, 2_000]) { + auras = [...wow335MageNetherwindPresenceAurasAfterCast( + auras, "mage", "mage", 3, "Arcane Blast", now, + )]; + } + auras = [...wow335MageNetherwindPresenceAurasAfterCast(auras, "mage", "mage", 3, "Slow", 2_500)]; + expect(auras.find((aura) => aura.definition.utilityTags?.includes(WOW335_MAGE_NETHERWIND_PRESENCE_TAG))) + .toMatchObject({ stacks: 3, expiresAt: 12_000 }); + expect(auras.find((aura) => aura.definition.utilityTags?.includes(WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_TAG))) + .toMatchObject({ appliedAt: 2_500, expiresAt: 5_500 }); + expect(wow335MageNetherwindPresenceMovementSpeedMultiplier(auras, "mage", 2_500)).toBeCloseTo(1.3); + expect(wow335MageNetherwindPresenceMovementSpeedMultiplier(auras, "other", 2_500)).toBe(1); + expect(wow335MageNetherwindPresenceMovementSpeedMultiplier(auras, "mage", 5_500)).toBe(1); + + const rankOneAuras = [0, 1_000, 2_000].reduce((current, now) => ( + wow335MageNetherwindPresenceAurasAfterCast(current, "mage-r1", "mage-r1", 1, "Arcane Blast", now) + ), [] as typeof auras); + const rankOneAfterSlow = wow335MageNetherwindPresenceAurasAfterCast( + rankOneAuras, "mage-r1", "mage-r1", 1, "Slow", 2_500, + ); + expect(rankOneAfterSlow.some((aura) => aura.definition.utilityTags?.includes(WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_TAG))) + .toBe(false); + }); + + it("does not expose the temporary haste stacks as a passive rank modifier", () => { + expect(talentModifiersForRanks({ "talent-1846": 3 }, "mage")).toEqual([]); + }); +}); diff --git a/src/game/wow335MageNetherwindPresenceRuntime.ts b/src/game/wow335MageNetherwindPresenceRuntime.ts new file mode 100644 index 00000000..050b2b9e --- /dev/null +++ b/src/game/wow335MageNetherwindPresenceRuntime.ts @@ -0,0 +1,204 @@ +import { + applyAura, + type ActiveAura, + type AuraDefinition, +} from "./combatAuras"; +import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_MAGE_NETHERWIND_PRESENCE_TALENT_ID = "talent-1846"; +export const WOW335_MAGE_NETHERWIND_PRESENCE_TAG = "wow335-mage-netherwind-presence"; +export const WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_TAG = "wow335-mage-netherwind-presence-capstone"; + +const NETHERWIND_PRESENCE_DURATION_MS = 10_000; +const NETHERWIND_PRESENCE_MAX_STACKS = 3; +const NETHERWIND_PRESENCE_CAPSTONE_DURATION_MS = 3_000; +const NETHERWIND_PRESENCE_CAPSTONE_MOVEMENT_SPEED_PERCENT = 30; + +const NETHERWIND_PRESENCE_TOOLTIP_TRIGGERS = [ + "Arcane Missiles", + "Arcane Barrage", + "Arcane Blast", + "Arcane Orb", + "Moonfire", + "Starfire", + "Starsurge", +] as const; + +const mageAbilityNames = new Set(WOW335_ABILITIES_BY_CLASS.mage.map((ability) => ability.name)); +const netherwindPresenceTalent = WOW335_TALENT_NODES.find((talent) => ( + talent.id === WOW335_MAGE_NETHERWIND_PRESENCE_TALENT_ID +)); + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) ? Math.max(0, Math.min(3, Math.trunc(rank))) : 0; +} + +/** Spell names printed by the generated local tooltip. */ +export const WOW335_MAGE_NETHERWIND_PRESENCE_TOOLTIP_TRIGGER_SPELL_NAMES: ReadonlySet = new Set( + NETHERWIND_PRESENCE_TOOLTIP_TRIGGERS, +); + +/** Tooltip triggers with a current generated Mage ability row. */ +export const WOW335_MAGE_NETHERWIND_PRESENCE_REACHABLE_TRIGGER_SPELL_NAMES: ReadonlySet = new Set( + NETHERWIND_PRESENCE_TOOLTIP_TRIGGERS.filter((name) => mageAbilityNames.has(name)), +); + +/** Tooltip triggers unavailable to the current generated Mage catalog. */ +export const WOW335_MAGE_NETHERWIND_PRESENCE_UNAVAILABLE_TRIGGER_SPELL_NAMES: ReadonlySet = new Set( + NETHERWIND_PRESENCE_TOOLTIP_TRIGGERS.filter((name) => !mageAbilityNames.has(name)), +); + +export interface Wow335MageNetherwindPresenceProfile { + readonly rank: number; + readonly durationMs: number; + /** The generated tooltip grants 1/2/3% for each stack at ranks 1/2/3. */ + readonly hastePercentPerStack: number; + readonly maxStacks: number; + readonly capstoneDurationMs: number; + readonly capstoneMovementSpeedPercent: number; +} + +export function wow335MageNetherwindPresenceProfileForRank(rank: number): Wow335MageNetherwindPresenceProfile { + const normalized = normalizedRank(rank); + return { + rank: normalized, + durationMs: NETHERWIND_PRESENCE_DURATION_MS, + hastePercentPerStack: normalized, + maxStacks: NETHERWIND_PRESENCE_MAX_STACKS, + capstoneDurationMs: NETHERWIND_PRESENCE_CAPSTONE_DURATION_MS, + capstoneMovementSpeedPercent: NETHERWIND_PRESENCE_CAPSTONE_MOVEMENT_SPEED_PERCENT, + }; +} + +/** + * Generated talent-1846 rows use a 100% Proc Trigger Spell effect with a + * class mask, but do not expose the proc phase flags. Runtime uses a successful + * cast-commit event for these exact catalog spell names (one stack per cast). + */ +export function wow335MageNetherwindPresenceCanStack(rank: number, abilityName: string): boolean { + return normalizedRank(rank) > 0 + && WOW335_MAGE_NETHERWIND_PRESENCE_REACHABLE_TRIGGER_SPELL_NAMES.has(abilityName); +} + +export function wow335MageNetherwindPresenceCapstoneReady( + rank: number, + abilityName: string, + currentStacks: number, +): boolean { + return normalizedRank(rank) === 3 + && abilityName === "Slow" + && Number.isFinite(currentStacks) + && currentStacks >= NETHERWIND_PRESENCE_MAX_STACKS; +} + +/** Returns spell-haste percentage points currently supplied by active stacks. */ +export function wow335MageNetherwindPresenceHastePercent( + auras: readonly ActiveAura[], + targetId: string, + now: number, +): number { + return auras + .filter((aura) => aura.targetId === targetId + && aura.definition.utilityTags?.includes(WOW335_MAGE_NETHERWIND_PRESENCE_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)) + .reduce((total, aura) => total + (aura.definition.modifiers ?? []) + .filter((modifier) => modifier.kind === "stat" + && modifier.stat === "spell-haste" + && modifier.operation === "flat") + .reduce((amount, modifier) => amount + modifier.value * (modifier.perStack === false ? 1 : aura.stacks), 0), 0); +} + +/** Returns the active Slow capstone's movement-speed multiplier for one actor. */ +export function wow335MageNetherwindPresenceMovementSpeedMultiplier( + auras: readonly ActiveAura[], + targetId: string, + now: number, +): number { + const bonus = auras + .filter((aura) => aura.targetId === targetId + && aura.definition.utilityTags?.includes(WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)) + .reduce((total, aura) => total + (aura.definition.modifiers ?? []) + .filter((modifier) => modifier.kind === "stat" + && modifier.stat === "movement-speed" + && modifier.operation === "percent") + .reduce((amount, modifier) => amount + modifier.value * (modifier.perStack === false ? 1 : aura.stacks), 0), 0); + return 1 + bonus; +} + +/** Applies one stack/capstone aura at a validated cast commitment, never per damage pulse. */ +export function wow335MageNetherwindPresenceAurasAfterCast( + current: readonly ActiveAura[], + sourceId: string, + targetId: string, + rank: number, + abilityName: string, + now: number, +): readonly ActiveAura[] { + const normalized = normalizedRank(rank); + let next = current; + if (wow335MageNetherwindPresenceCanStack(normalized, abilityName)) { + const definition = wow335MageNetherwindPresenceAuraForRank(normalized); + if (definition) { + next = applyAura(next, { definition, sourceId, targetId, now }).auras; + } + } + + const activeStacks = next.find((aura) => aura.sourceId === sourceId + && aura.targetId === targetId + && aura.definition.utilityTags?.includes(WOW335_MAGE_NETHERWIND_PRESENCE_TAG) + && (aura.expiresAt === null || aura.expiresAt > now))?.stacks ?? 0; + if (wow335MageNetherwindPresenceCapstoneReady(normalized, abilityName, activeStacks)) { + next = applyAura(next, { + definition: WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_AURA, + sourceId, + targetId, + now, + }).auras; + } + return next; +} + +export function wow335MageNetherwindPresenceAuraForRank(rank: number): AuraDefinition | null { + const profile = wow335MageNetherwindPresenceProfileForRank(rank); + if (profile.rank <= 0) return null; + return { + id: "wow335:mage:netherwind-presence", + name: "Netherwind Presence", + description: `Your eligible spell casts grant ${profile.hastePercentPerStack}% spell haste per stack for 10 seconds, up to 3 stacks.`, + disposition: "buff", + durationMs: profile.durationMs, + maxStacks: profile.maxStacks, + stackBehavior: "add", + modifiers: [{ + kind: "stat", + stat: "spell-haste", + operation: "flat", + value: profile.hastePercentPerStack, + }], + utilityTags: [WOW335_MAGE_NETHERWIND_PRESENCE_TAG], + }; +} + +export const WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_AURA: AuraDefinition = { + id: "wow335:mage:netherwind-presence-capstone", + name: "Netherwind Presence: Slow Capstone", + description: "Casting Slow at 3 Netherwind Presence stacks increases movement speed by 30% for 3 seconds.", + disposition: "buff", + durationMs: NETHERWIND_PRESENCE_CAPSTONE_DURATION_MS, + maxStacks: 1, + stackBehavior: "refresh", + modifiers: [{ + kind: "stat", + stat: "movement-speed", + operation: "percent", + value: NETHERWIND_PRESENCE_CAPSTONE_MOVEMENT_SPEED_PERCENT / 100, + }], + utilityTags: [WOW335_MAGE_NETHERWIND_PRESENCE_CAPSTONE_TAG], +}; + +/** Exposes generated-rank provenance to focused tests and source notes. */ +export function wow335MageNetherwindPresenceGeneratedSource() { + return netherwindPresenceTalent ?? null; +} diff --git a/src/game/wow335MageRuntime.test.ts b/src/game/wow335MageRuntime.test.ts index 3ae749cb..404e78dc 100644 --- a/src/game/wow335MageRuntime.test.ts +++ b/src/game/wow335MageRuntime.test.ts @@ -256,7 +256,7 @@ describe("WoW 3.3.5 Mage runtime mappings", () => { expect(buffedManaCost).toBe(Math.round(baseManaCost * 1.2)); }); - it("applies Focus Magic to an ally and grants the Mage 3% spell crit for 10 seconds when the ally spell-crits", () => { + it("applies Focus Magic's generated 1% spell crit to an ally and grants the Mage 3% for 10 seconds when the ally spell-crits", () => { const focusMagic = WOW335_ABILITIES_BY_CLASS.mage.find((ability) => ability.name === "Focus Magic"); const targetBuff = focusMagic?.effects.find((effect) => effect.kind === "apply-aura"); expect(targetBuff).toMatchObject({ @@ -266,7 +266,7 @@ describe("WoW 3.3.5 Mage runtime mappings", () => { kind: "stat", stat: "spell-critical-strike", operation: "flat", - value: 3, + value: 1, })], }, }); diff --git a/src/game/wow335MageShatter.integration.test.ts b/src/game/wow335MageShatter.integration.test.ts new file mode 100644 index 00000000..259b8f52 --- /dev/null +++ b/src/game/wow335MageShatter.integration.test.ts @@ -0,0 +1,97 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { usePartyStore } from "./partyStore"; +import { abilityById } from "./abilityCatalog"; + +function registerFrozenTestTarget(id: string, now: number, frozen: boolean): void { + useCombatStore.getState().registerMob(id, { name: id, maxHealth: 100_000, xpReward: 0 }); + setMobPosition(id, [8, 0, 0]); + if (!frozen) return; + useCombatStore.setState((state) => { + const target = state.mobs[id]!; + return { + mobs: { + ...state.mobs, + [id]: { + ...target, + statuses: [{ kind: "freeze", sourceAbilityId: "shatter-test-freeze", endsAt: now + 5_000 }], + }, + }, + }; + }); +} + +function spellCritPercent(targetId: string, abilityId: string, now: number, periodic = false, sourceActorId?: string): number { + const member = sourceActorId + ? usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId) + : null; + useCombatStore.getState().damageMob(targetId, 100, now, sourceActorId && member ? { + actorId: sourceActorId, + role: member.role, + abilityId, + } : { actorId: PLAYER_AGGRO_ID, role: "damage", abilityId }, "frost", { + attackKind: "spell", + seed: `mage-shatter-${sourceActorId ?? "player"}-${targetId}-${now}`, + abilityId, + periodic, + rules: { canMiss: false, canCrit: true, canDodge: false, canParry: false, canBlock: false }, + }); + return useCombatStore.getState().lastCombatResult!.attackTable.criticalPercent; +} + +describe("WoW Mage Shatter combat integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("mage-shatter-tests", 1, useCombatStore.getState().health); + }); + + it("adds the generated rank bonus only for nonperiodic Mage spells against a frozen target", () => { + const fireball = useCombatStore.getState().abilities.find((ability) => ability.name === "Fireball")!; + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, "talent-67": 3 }, + })); + + registerFrozenTestTarget("shatter-unfrozen", 1_000, false); + const unfrozenCrit = spellCritPercent("shatter-unfrozen", fireball.id, 1_000); + + registerFrozenTestTarget("shatter-frozen", 2_000, true); + const frozenCrit = spellCritPercent("shatter-frozen", fireball.id, 2_000); + const periodicCrit = spellCritPercent("shatter-frozen", fireball.id, 3_000, true); + + expect(frozenCrit - unfrozenCrit).toBe(50); + expect(periodicCrit).toBe(unfrozenCrit); + }); + + it("uses the party Mage's own Shatter rank against frozen targets", () => { + const fireball = abilityById("wow335-mage-fireball")!; + const member = usePartyStore.getState().members[0]!; + usePartyStore.setState((state) => ({ + members: state.members.map((candidate) => candidate.id === member.id ? { + ...candidate, + classId: "mage", + talentRanks: {}, + resourceType: "mana", + resourceName: "Mana", + maxResource: 10_000, + resource: 9_000, + resourcePools: { ...candidate.resourcePools, mana: 9_000 }, + } : candidate), + })); + registerFrozenTestTarget("party-shatter-frozen", 1_000, true); + const baselineCrit = spellCritPercent("party-shatter-frozen", fireball.id, 1_000, false, member.id); + usePartyStore.setState((state) => ({ + members: state.members.map((candidate) => candidate.id === member.id ? { + ...candidate, + talentRanks: { "talent-67": 2 }, + } : candidate), + })); + const partyCrit = spellCritPercent("party-shatter-frozen", fireball.id, 2_000, false, member.id); + + expect(partyCrit - baselineCrit).toBe(34); + }); +}); diff --git a/src/game/wow335MageShatterRuntime.test.ts b/src/game/wow335MageShatterRuntime.test.ts new file mode 100644 index 00000000..45d2901b --- /dev/null +++ b/src/game/wow335MageShatterRuntime.test.ts @@ -0,0 +1,13 @@ +import { describe, expect, it } from "vitest"; +import { wow335MageShatterCriticalChanceBonusPercent } from "./wow335MageShatterRuntime"; + +describe("WoW Mage Shatter", () => { + it("uses the generated 17/34/50% critical chance ranks only against frozen targets", () => { + expect([0, 1, 2, 3, 4, -1, Number.NaN].map((rank) => ( + wow335MageShatterCriticalChanceBonusPercent(rank, true) + ))).toEqual([0, 17, 34, 50, 50, 0, 0]); + expect([1, 2, 3].map((rank) => ( + wow335MageShatterCriticalChanceBonusPercent(rank, false) + ))).toEqual([0, 0, 0]); + }); +}); diff --git a/src/game/wow335MageShatterRuntime.ts b/src/game/wow335MageShatterRuntime.ts new file mode 100644 index 00000000..85836a0a --- /dev/null +++ b/src/game/wow335MageShatterRuntime.ts @@ -0,0 +1,19 @@ +const SHATTER_CRITICAL_CHANCE_BONUS_PERCENT_BY_RANK = [0, 17, 34, 50] as const; + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) ? Math.max(0, Math.min(3, Math.trunc(rank))) : 0; +} + +/** + * Generated Mage talent node 67 (Shatter), ranks 11170/12982/12983, grants + * 17%/34%/50% spell critical chance against frozen targets. The target-state + * predicate is kept explicit so callers cannot apply this as a global bonus. + */ +export function wow335MageShatterCriticalChanceBonusPercent( + rank: number, + targetTreatedAsFrozen: boolean, +): number { + return targetTreatedAsFrozen + ? SHATTER_CRITICAL_CHANCE_BONUS_PERCENT_BY_RANK[normalizedRank(rank)] ?? 0 + : 0; +} diff --git a/src/game/wow335MageWintersChill.integration.test.ts b/src/game/wow335MageWintersChill.integration.test.ts new file mode 100644 index 00000000..0b361767 --- /dev/null +++ b/src/game/wow335MageWintersChill.integration.test.ts @@ -0,0 +1,130 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilitiesForClass } from "./abilityCatalog"; +import { resolveHealingValue } from "./combatAuras"; +import { useCombatStore } from "./combatStore"; +import { usePartyStore } from "./partyStore"; +import { talentModifiersForRanks } from "./talentModifiers"; +import { WOW335_MAGE_WINTERS_CHILL_TAG } from "./wow335MageWintersChillRuntime"; + +function registerTarget(id: string): void { + useCombatStore.getState().registerMob(id, { name: id, maxHealth: 100_000, xpReward: 0 }); + setMobPosition(id, [8, 0, 0]); +} + +function setPlayerWintersChillRank(rank: number): void { + useCombatStore.setState((state) => { + const talentRanks = { ...state.talentRanks, "talent-68": rank }; + return { + talentRanks, + talentModifiers: talentModifiersForRanks(talentRanks, state.classId), + }; + }); +} + +function setPartyMageWintersChillRank(memberId: string, rank: number): void { + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === memberId ? { + ...member, + classId: "mage", + talentRanks: { ...(rank > 0 ? { "talent-68": rank } : {}) }, + resourceType: "mana", + resourceName: "Mana", + maxResource: 10_000, + resource: 9_000, + resourcePools: { ...member.resourcePools, mana: 9_000 }, + } : member), + })); +} + +function damageSpell( + targetId: string, + abilityId: string, + school: "fire" | "frost", + now: number, + sourceActorId = PLAYER_AGGRO_ID, + periodic = false, +): number { + const member = usePartyStore.getState().members.find((candidate) => candidate.id === sourceActorId); + useCombatStore.getState().damageMob(targetId, 100, now, { + actorId: sourceActorId, + role: member?.role ?? "damage", + abilityId, + }, school, { + attackKind: "spell", + seed: `wow335-mage-winters-chill:${sourceActorId}:${targetId}:${abilityId}:${now}`, + abilityId, + periodic, + rules: { canMiss: false, canCrit: true, canDodge: false, canParry: false, canBlock: false }, + }); + return useCombatStore.getState().lastCombatResult!.attackTable.criticalPercent; +} + +describe("WoW Mage Winter's Chill combat integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("mage-winters-chill-tests", 1, useCombatStore.getState().health); + }); + + it("stacks on positive direct Frost hits and increases later Mage spell crit against the target", () => { + const frostbolt = abilitiesForClass("mage").find((ability) => ability.name === "Frostbolt")!; + const fireball = abilitiesForClass("mage").find((ability) => ability.name === "Fireball")!; + setPlayerWintersChillRank(3); + registerTarget("winter-chill-target"); + registerTarget("winter-clean-target"); + + for (let stack = 0; stack < 6; stack += 1) { + damageSpell("winter-chill-target", frostbolt.id, "frost", 1_000 + stack * 1_000); + } + const aura = useCombatStore.getState().auras.find((candidate) => ( + candidate.targetId === "winter-chill-target" + && candidate.definition.utilityTags?.includes(WOW335_MAGE_WINTERS_CHILL_TAG) + )); + expect(aura?.stacks).toBe(5); + expect(aura?.expiresAt).toBe(14_000); + expect(resolveHealingValue(1_000, [aura!], "taken")).toBeCloseTo(650); + + const cleanCrit = damageSpell("winter-clean-target", fireball.id, "fire", 7_000); + const chilledCrit = damageSpell("winter-chill-target", fireball.id, "fire", 8_000); + expect(chilledCrit - cleanCrit).toBe(5); + }); + + it("uses party Mage ranks for passive crit, direct Frost procs, and incoming spell vulnerability", () => { + const frostbolt = abilitiesForClass("mage").find((ability) => ability.name === "Frostbolt")!; + const fireball = abilitiesForClass("mage").find((ability) => ability.name === "Fireball")!; + const member = usePartyStore.getState().members[0]!; + setPartyMageWintersChillRank(member.id, 0); + registerTarget("party-winter-clean"); + registerTarget("party-winter-chill"); + + const baselineCrit = damageSpell("party-winter-clean", fireball.id, "fire", 1_000, member.id); + setPartyMageWintersChillRank(member.id, 3); + const frostCrit = damageSpell("party-winter-chill", frostbolt.id, "frost", 2_000, member.id); + const aura = useCombatStore.getState().auras.find((candidate) => ( + candidate.targetId === "party-winter-chill" + && candidate.definition.utilityTags?.includes(WOW335_MAGE_WINTERS_CHILL_TAG) + )); + const chilledCrit = damageSpell("party-winter-chill", fireball.id, "fire", 3_000, member.id); + + expect(frostCrit - baselineCrit).toBeCloseTo(3); + expect(aura?.stacks).toBe(1); + expect(chilledCrit - baselineCrit).toBeCloseTo(4); + }); + + it("does not arm the debuff from periodic Frost damage", () => { + const frostbolt = abilitiesForClass("mage").find((ability) => ability.name === "Frostbolt")!; + setPlayerWintersChillRank(3); + registerTarget("periodic-winter-target"); + + damageSpell("periodic-winter-target", frostbolt.id, "frost", 1_000, PLAYER_AGGRO_ID, true); + + expect(useCombatStore.getState().auras.some((aura) => ( + aura.targetId === "periodic-winter-target" + && aura.definition.utilityTags?.includes(WOW335_MAGE_WINTERS_CHILL_TAG) + ))).toBe(false); + }); +}); diff --git a/src/game/wow335MageWintersChillRuntime.test.ts b/src/game/wow335MageWintersChillRuntime.test.ts new file mode 100644 index 00000000..6902d42d --- /dev/null +++ b/src/game/wow335MageWintersChillRuntime.test.ts @@ -0,0 +1,80 @@ +import { describe, expect, it } from "vitest"; +import { applyAura, resolveHealingValue } from "./combatAuras"; +import { + WOW335_MAGE_WINTERS_CHILL_AURA, + wow335MageWintersChillProfileForRank, + wow335MageWintersChillProcChancePercent, + wow335MageWintersChillShouldProc, + wow335MageWintersChillStacksAfterEvent, + wow335MageWintersChillTargetModifiers, + type Wow335MageWintersChillEvent, +} from "./wow335MageWintersChillRuntime"; +import { talentModifiersForRanks } from "./talentModifiers"; + +const directFrostHit: Wow335MageWintersChillEvent = { + abilityName: "Frostbolt", + attackKind: "spell", + school: "frost", + periodic: false, + landedDamage: 100, +}; + +describe("WoW Mage Winter's Chill generated profile", () => { + it("uses generated passive crit and proc chances with the custom child values", () => { + expect([0, 1, 2, 3, 4, -1, Number.NaN].map(wow335MageWintersChillProfileForRank)).toEqual([ + { casterCriticalChanceBonusPercent: 0, procChancePercent: 0, targetCriticalChanceBonusPercentPerStack: 1, targetHealingReceivedReductionPercentPerStack: 7, durationMs: 8_000, maximumStacks: 5 }, + { casterCriticalChanceBonusPercent: 1, procChancePercent: 33, targetCriticalChanceBonusPercentPerStack: 1, targetHealingReceivedReductionPercentPerStack: 7, durationMs: 8_000, maximumStacks: 5 }, + { casterCriticalChanceBonusPercent: 2, procChancePercent: 66, targetCriticalChanceBonusPercentPerStack: 1, targetHealingReceivedReductionPercentPerStack: 7, durationMs: 8_000, maximumStacks: 5 }, + { casterCriticalChanceBonusPercent: 3, procChancePercent: 100, targetCriticalChanceBonusPercentPerStack: 1, targetHealingReceivedReductionPercentPerStack: 7, durationMs: 8_000, maximumStacks: 5 }, + { casterCriticalChanceBonusPercent: 3, procChancePercent: 100, targetCriticalChanceBonusPercentPerStack: 1, targetHealingReceivedReductionPercentPerStack: 7, durationMs: 8_000, maximumStacks: 5 }, + { casterCriticalChanceBonusPercent: 0, procChancePercent: 0, targetCriticalChanceBonusPercentPerStack: 1, targetHealingReceivedReductionPercentPerStack: 7, durationMs: 8_000, maximumStacks: 5 }, + { casterCriticalChanceBonusPercent: 0, procChancePercent: 0, targetCriticalChanceBonusPercentPerStack: 1, targetHealingReceivedReductionPercentPerStack: 7, durationMs: 8_000, maximumStacks: 5 }, + ]); + }); + + it("exposes the passive all-spell critical chance through the talent modifier catalog", () => { + const criticalBonus = talentModifiersForRanks({ "talent-68": 3 }, "mage") + .find((modifier) => modifier.sourceTalentId === "talent-68" && modifier.kind === "critical-chance-percent"); + expect(criticalBonus?.amount).toBe(3); + }); + + it("procs only on positive landed direct Frost spell damage other than Frozen Orb", () => { + expect(wow335MageWintersChillProcChancePercent(3, directFrostHit)).toBe(100); + expect(wow335MageWintersChillProcChancePercent(3, { ...directFrostHit, periodic: true })).toBe(0); + expect(wow335MageWintersChillProcChancePercent(3, { ...directFrostHit, abilityName: "Frozen Orb" })).toBe(0); + expect(wow335MageWintersChillProcChancePercent(3, { ...directFrostHit, school: "fire" })).toBe(0); + expect(wow335MageWintersChillProcChancePercent(3, { ...directFrostHit, attackKind: "melee" })).toBe(0); + expect(wow335MageWintersChillProcChancePercent(3, { ...directFrostHit, landedDamage: 0 })).toBe(0); + expect(wow335MageWintersChillProcChancePercent(0, directFrostHit)).toBe(0); + }); + + it("applies each rank's deterministic chance and caps crit/healing stacks at five", () => { + expect(wow335MageWintersChillShouldProc(1, directFrostHit, 0.3299)).toBe(true); + expect(wow335MageWintersChillShouldProc(1, directFrostHit, 0.33)).toBe(false); + expect(wow335MageWintersChillShouldProc(2, directFrostHit, 0.6599)).toBe(true); + expect(wow335MageWintersChillShouldProc(2, directFrostHit, 0.66)).toBe(false); + expect(wow335MageWintersChillStacksAfterEvent(4, 3, directFrostHit, 0.99)).toBe(5); + expect(wow335MageWintersChillStacksAfterEvent(5, 3, directFrostHit, 0.99)).toBe(5); + expect(wow335MageWintersChillTargetModifiers(5)).toEqual({ + criticalChanceBonusPercent: 5, + healingReceivedReductionPercent: 35, + }); + }); + + it("defines a shared 8-second, five-stack target debuff with the generated healing penalty", () => { + let auras: ReturnType["auras"] = []; + for (let now = 1_000; now <= 5_000; now += 1_000) { + auras = applyAura(auras, { + definition: WOW335_MAGE_WINTERS_CHILL_AURA, + sourceId: "mage-a", + targetId: "winter-target", + now, + }).auras; + } + const aura = auras[0]!; + expect(aura.stacks).toBe(5); + expect(aura.expiresAt).toBe(13_000); + expect(wow335MageWintersChillTargetModifiers(aura.stacks).criticalChanceBonusPercent).toBe(5); + expect(resolveHealingValue(1_000, auras, "taken")).toBeCloseTo(650); + }); +}); diff --git a/src/game/wow335MageWintersChillRuntime.ts b/src/game/wow335MageWintersChillRuntime.ts new file mode 100644 index 00000000..045495bc --- /dev/null +++ b/src/game/wow335MageWintersChillRuntime.ts @@ -0,0 +1,153 @@ +import type { AuraDefinition } from "./combatAuras"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_MAGE_WINTERS_CHILL_TALENT_ID = "talent-68"; +export const WOW335_MAGE_WINTERS_CHILL_TAG = "wow335-mage-winters-chill"; + +const WINTERS_CHILL_TALENT = WOW335_TALENT_NODES.find((talent) => ( + talent.id === WOW335_MAGE_WINTERS_CHILL_TALENT_ID +)); + +function tooltipNumber(description: string, pattern: RegExp): number { + const parsed = Number(description.match(pattern)?.[1]); + return Number.isFinite(parsed) ? parsed : 0; +} + +const WINTERS_CHILL_EFFECT_DESCRIPTION = WINTERS_CHILL_TALENT?.rankDescriptions[0] ?? ""; +const WINTERS_CHILL_TARGET_CRITICAL_CHANCE_PER_STACK_PERCENT = tooltipNumber( + WINTERS_CHILL_EFFECT_DESCRIPTION, + /increasing the chance spells will critically strike the target by\s+(\d+(?:\.\d+)?)%/i, +); +const WINTERS_CHILL_TARGET_HEALING_REDUCTION_PER_STACK_PERCENT = tooltipNumber( + WINTERS_CHILL_EFFECT_DESCRIPTION, + /reducing healing received by\s+(\d+(?:\.\d+)?)%/i, +); +const WINTERS_CHILL_DURATION_MS = tooltipNumber( + WINTERS_CHILL_EFFECT_DESCRIPTION, + /for\s+(\d+(?:\.\d+)?)\s+seconds/i, +) * 1_000; +const WINTERS_CHILL_MAXIMUM_STACKS = tooltipNumber( + WINTERS_CHILL_EFFECT_DESCRIPTION, + /stacks up to\s+(\d+)\s+times/i, +); + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) + ? Math.max(0, Math.min(WINTERS_CHILL_TALENT?.rankEffects.length ?? 0, Math.trunc(rank))) + : 0; +} + +function generatedRankValue(rank: number, pattern: RegExp): number { + const description = WINTERS_CHILL_TALENT?.rankDescriptions[normalizedRank(rank) - 1] ?? ""; + return tooltipNumber(description, pattern); +} + +export const WOW335_MAGE_WINTERS_CHILL_AURA: AuraDefinition = { + id: "wow335:mage:winters-chill", + name: "Winter's Chill", + description: `Each stack increases incoming spell critical chance by ${WINTERS_CHILL_TARGET_CRITICAL_CHANCE_PER_STACK_PERCENT}% and reduces healing received by ${WINTERS_CHILL_TARGET_HEALING_REDUCTION_PER_STACK_PERCENT}% for ${WINTERS_CHILL_DURATION_MS / 1_000} seconds.`, + disposition: "debuff", + durationMs: WINTERS_CHILL_DURATION_MS, + maxStacks: WINTERS_CHILL_MAXIMUM_STACKS, + stackBehavior: "add", + uniqueBySource: false, + // Local child data is absent; WotLKDB 3.3.5a spell 12579 identifies it as Magic-dispellable. + dispelCategory: "magic", + modifiers: [{ + kind: "healing", + direction: "taken", + operation: "percent", + value: -WINTERS_CHILL_TARGET_HEALING_REDUCTION_PER_STACK_PERCENT / 100, + }], + utilityTags: [WOW335_MAGE_WINTERS_CHILL_TAG], +}; + +export interface Wow335MageWintersChillEvent { + readonly abilityName: string; + readonly attackKind: string; + readonly school: string; + readonly periodic: boolean; + readonly landedDamage: number; +} + +export interface Wow335MageWintersChillProfile { + readonly casterCriticalChanceBonusPercent: number; + readonly procChancePercent: number; + readonly targetCriticalChanceBonusPercentPerStack: number; + readonly targetHealingReceivedReductionPercentPerStack: number; + readonly durationMs: number; + readonly maximumStacks: number; +} + +/** + * Local generated Mage talent node 68, ranks 11180/28592/28593. Its rank + * descriptions give the passive crit bonus, proc chance, and custom 8-second + * child effect values; the stock 3.3.5a child row is not this custom payload. + */ +export function wow335MageWintersChillProfileForRank(rank: number): Wow335MageWintersChillProfile { + const normalized = normalizedRank(rank); + const rankEffect = WINTERS_CHILL_TALENT?.rankEffects[normalized - 1]; + return { + casterCriticalChanceBonusPercent: generatedRankValue( + normalized, + /critical strike chance with all spells and abilities by\s+(\d+(?:\.\d+)?)%/i, + ), + procChancePercent: Math.max(0, Math.min(100, rankEffect?.procChance ?? 0)), + targetCriticalChanceBonusPercentPerStack: WINTERS_CHILL_TARGET_CRITICAL_CHANCE_PER_STACK_PERCENT, + targetHealingReceivedReductionPercentPerStack: WINTERS_CHILL_TARGET_HEALING_REDUCTION_PER_STACK_PERCENT, + durationMs: WINTERS_CHILL_DURATION_MS, + maximumStacks: WINTERS_CHILL_MAXIMUM_STACKS, + }; +} + +export function wow335MageWintersChillProcChancePercent( + rank: number, + event: Wow335MageWintersChillEvent, +): number { + const profile = wow335MageWintersChillProfileForRank(rank); + const eligible = profile.procChancePercent > 0 + && event.attackKind === "spell" + && event.school === "frost" + && !event.periodic + && Number.isFinite(event.landedDamage) + && event.landedDamage > 0 + && event.abilityName.toLowerCase() !== "frozen orb"; + return eligible ? profile.procChancePercent : 0; +} + +export function wow335MageWintersChillShouldProc( + rank: number, + event: Wow335MageWintersChillEvent, + roll: number, +): boolean { + if (!Number.isFinite(roll) || roll < 0 || roll >= 1) return false; + return roll < wow335MageWintersChillProcChancePercent(rank, event) / 100; +} + +export function wow335MageWintersChillStacksAfterEvent( + currentStacks: number, + rank: number, + event: Wow335MageWintersChillEvent, + roll: number, +): number { + const profile = wow335MageWintersChillProfileForRank(rank); + const stacks = Number.isFinite(currentStacks) + ? Math.max(0, Math.min(profile.maximumStacks, Math.trunc(currentStacks))) + : 0; + return wow335MageWintersChillShouldProc(rank, event, roll) + ? Math.min(profile.maximumStacks, stacks + 1) + : stacks; +} + +export function wow335MageWintersChillTargetModifiers(stacks: number): { + readonly criticalChanceBonusPercent: number; + readonly healingReceivedReductionPercent: number; +} { + const normalized = Number.isFinite(stacks) + ? Math.max(0, Math.min(WINTERS_CHILL_MAXIMUM_STACKS, Math.trunc(stacks))) + : 0; + return { + criticalChanceBonusPercent: normalized * WINTERS_CHILL_TARGET_CRITICAL_CHANCE_PER_STACK_PERCENT, + healingReceivedReductionPercent: normalized * WINTERS_CHILL_TARGET_HEALING_REDUCTION_PER_STACK_PERCENT, + }; +} diff --git a/src/game/wow335PaladinAuraMasteryRuntime.test.ts b/src/game/wow335PaladinAuraMasteryRuntime.test.ts new file mode 100644 index 00000000..59f0413e --- /dev/null +++ b/src/game/wow335PaladinAuraMasteryRuntime.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, it } from "vitest"; +import generatedAbilityData from "./wow335AbilityData.generated.json"; +import { + WOW335_PALADIN_RETRIBUTION_AURA_SPELL_POWER_COEFFICIENT, + wow335PaladinRetributionAuraDamage, +} from "./wow335PaladinAuraMasteryRuntime"; + +describe("WoW 3.3.5 Paladin aura damage", () => { + it("matches the generated 0.033 spell-power coefficient for every Retribution Aura rank", () => { + const retributionAura = generatedAbilityData.classes.paladin.find( + (ability) => ability.name === "Retribution Aura", + ); + + expect(retributionAura).toBeDefined(); + for (const rank of retributionAura!.ranks) { + expect(rank.effects[0]?.coefficient).toBeCloseTo( + WOW335_PALADIN_RETRIBUTION_AURA_SPELL_POWER_COEFFICIENT, + 7, + ); + } + expect(wow335PaladinRetributionAuraDamage(112, 3_000)).toBe(211); + expect(wow335PaladinRetributionAuraDamage(112, 0)).toBe(112); + }); + + it("does not turn negative base damage or spell power into healing", () => { + expect(wow335PaladinRetributionAuraDamage(-10, 3_000)).toBeCloseTo(99); + expect(wow335PaladinRetributionAuraDamage(112, -3_000)).toBe(112); + }); +}); diff --git a/src/game/wow335PaladinAuraMasteryRuntime.ts b/src/game/wow335PaladinAuraMasteryRuntime.ts index b4078f57..49bc8a9e 100644 --- a/src/game/wow335PaladinAuraMasteryRuntime.ts +++ b/src/game/wow335PaladinAuraMasteryRuntime.ts @@ -1,38 +1,112 @@ import type { ActiveAura } from "./combatAuras"; +import type { EnemyControlMechanic } from "./enemyAttacks"; export const WOW335_PALADIN_AURA_MASTERY_EFFECTIVENESS_TAG = "wow335-aura-mastery-aura-effectiveness"; +const WOW335_PALADIN_RETRIBUTION_AURA_SPELL_IDS = new Set([ + 7294, 10298, 10299, 10300, 10301, 27150, 54043, +]); + +/** SpellEffectData.BonusCoefficient for every 3.3.5 Retribution Aura rank. */ +export const WOW335_PALADIN_RETRIBUTION_AURA_SPELL_POWER_COEFFICIENT = 0.033; + +/** Adds the DBC spell-power contribution to one Retribution Aura hit. */ +export function wow335PaladinRetributionAuraDamage( + baseDamage: number, + spellPower: number, +): number { + return Math.max(0, baseDamage) + + Math.max(0, spellPower) * WOW335_PALADIN_RETRIBUTION_AURA_SPELL_POWER_COEFFICIENT; +} + +export function isWow335PaladinRetributionAuraDamageShield(aura: ActiveAura): boolean { + const spellId = Number(aura.definition.id.split(":")[1]); + return aura.definition.exclusiveGroup === "paladin:aura" + && aura.definition.id.endsWith(":effect:0:aura:15") + && WOW335_PALADIN_RETRIBUTION_AURA_SPELL_IDS.has(spellId) + && aura.definition.procs?.some((proc) => ( + proc.id.includes(":proc:15:damage") && proc.action.kind === "damage" + )) === true; +} + +/** Returns an evaluation-only aura copy with its owner's spell power included. */ +export function wow335PaladinRetributionAuraWithSpellPower( + aura: ActiveAura, + spellPower: number, +): ActiveAura { + if (!isWow335PaladinRetributionAuraDamageShield(aura)) return aura; + const procs = aura.definition.procs?.map((proc) => ( + proc.id.includes(":proc:15:damage") && proc.action.kind === "damage" + ? { ...proc, action: { ...proc.action, amount: wow335PaladinRetributionAuraDamage(proc.action.amount, spellPower) } } + : proc + )); + return procs ? { ...aura, definition: { ...aura.definition, procs } } : aura; +} /** - * Aura Mastery doubles modifiers from the Paladin aura owned by the same - * Paladin on this recipient while the recipient has the temporary effect. - * Keep the source and target checks here so it cannot amplify another - * Paladin's aura or unrelated buffs on the same actor. + * Aura Mastery doubles modifiers and Retribution Aura retaliation from the + * same Paladin on this recipient while the temporary effect is active. Keep + * the source and target checks here so it cannot amplify another Paladin's + * aura or unrelated buffs on the same actor. */ export function wow335PaladinAuraMasteryAurasForEntity( auras: readonly ActiveAura[], entityId: string, + now?: number, ): ActiveAura[] { const targetAuras = auras.filter((aura) => aura.targetId === entityId); const auraMasterySources = new Set(targetAuras - .filter((aura) => aura.definition.utilityTags?.includes(WOW335_PALADIN_AURA_MASTERY_EFFECTIVENESS_TAG)) + .filter((aura) => aura.definition.utilityTags?.includes(WOW335_PALADIN_AURA_MASTERY_EFFECTIVENESS_TAG) + && (now === undefined || aura.expiresAt === null || aura.expiresAt > now)) .map((aura) => aura.sourceId)); - if (auraMasterySources.size === 0) return targetAuras; return targetAuras.map((aura) => { - if (aura.definition.exclusiveGroup !== "paladin:aura" - || !auraMasterySources.has(aura.sourceId) - || !aura.definition.modifiers?.length) { + const isRetributionAura = isWow335PaladinRetributionAuraDamageShield(aura); + const masteryActive = auraMasterySources.has(aura.sourceId) + && !aura.definition.utilityTags?.includes(WOW335_PALADIN_AURA_MASTERY_EFFECTIVENESS_TAG); + if (!isRetributionAura && (!masteryActive || aura.definition.exclusiveGroup !== "paladin:aura" + || !aura.definition.modifiers?.length)) { return aura; } + const modifiers = masteryActive && aura.definition.modifiers?.length + ? aura.definition.modifiers.map((modifier) => ({ ...modifier, value: modifier.value * 2 })) + : aura.definition.modifiers; + const procs = isRetributionAura + ? aura.definition.procs?.map((proc) => ( + proc.id.includes(":proc:15:damage") && proc.action.kind === "damage" + ? { + ...proc, + action: { + ...proc.action, + amount: proc.action.amount * (masteryActive ? 2 : 1), + school: "holy" as const, + }, + } + : proc + )) + : aura.definition.procs; return { ...aura, definition: { ...aura.definition, - modifiers: aura.definition.modifiers.map((modifier) => ({ - ...modifier, - value: modifier.value * 2, - })), + ...(modifiers ? { modifiers } : {}), + ...(procs ? { procs } : {}), }, }; }); } + +/** Aura Mastery's control-duration rider affects only the Paladin who casts it. */ +export function wow335PaladinAuraMasterySelfControlDuration( + auras: readonly ActiveAura[], + entityId: string, + mechanic: EnemyControlMechanic, + durationMs: number, + now: number, +): number { + if (!(mechanic === "confuse" || mechanic === "fear" || mechanic === "sleep")) return durationMs; + const activeOnSelf = auras.some((aura) => aura.sourceId === entityId + && aura.targetId === entityId + && aura.definition.utilityTags?.includes(WOW335_PALADIN_AURA_MASTERY_EFFECTIVENESS_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)); + return activeOnSelf ? Math.round(durationMs * 0.5) : durationMs; +} diff --git a/src/game/wow335PaladinConcentrationAuraPushback.integration.test.ts b/src/game/wow335PaladinConcentrationAuraPushback.integration.test.ts new file mode 100644 index 00000000..f0f5f5fc --- /dev/null +++ b/src/game/wow335PaladinConcentrationAuraPushback.integration.test.ts @@ -0,0 +1,254 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { applyAura } from "./combatAuras"; +import { useCombatStore, type ActiveCast } from "./combatStore"; +import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { abilitiesForClass } from "./abilityCatalog"; +import { WOW335_PALADIN_CONCENTRATION_AURA_EFFECT_ID } from "./wow335PaladinConcentrationAuraRuntime"; + +type CastMode = "cast" | "channel"; + +function concentrationAuraDefinition() { + const ability = abilitiesForClass("paladin").find((candidate) => candidate.name === "Concentration Aura"); + const effect = ability?.effects.find((candidate) => candidate.kind === "apply-aura"); + if (!effect || effect.kind !== "apply-aura") throw new Error("Concentration Aura effect is missing."); + return effect.aura; +} + +function auraMasteryDefinition() { + const ability = abilitiesForClass("paladin").find((candidate) => candidate.name === "Aura Mastery"); + const effect = ability?.effects.find((candidate) => candidate.kind === "apply-aura"); + if (!effect || effect.kind !== "apply-aura") throw new Error("Aura Mastery effect is missing."); + return effect.aura; +} + +function setupParty(partyId: string, rank: number, includeCompanionCaster: boolean) { + const paladin = createConfiguredPartyMember({ + name: "Concentration Paladin", + classId: "paladin", + specialization: "Holy", + specializationId: "paladin:holy", + talentTreeId: "paladin-holy", + talentRanks: rank > 0 ? { "talent-1450": rank } : {}, + role: "healer", + }, 80, 0, partyId); + const caster = includeCompanionCaster + ? createConfiguredPartyMember({ + name: "Casting Mage", + classId: "mage", + specialization: "Arcane", + specializationId: "mage:arcane", + talentTreeId: "mage-arcane", + talentRanks: {}, + role: "damage", + }, 80, 1, partyId) + : null; + usePartyStore.setState({ members: caster ? [paladin, caster] : [paladin] }); + registerPartyRuntimePosition(paladin.id, [0, 0, 0]); + if (caster) registerPartyRuntimePosition(caster.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + return { paladin, caster }; +} + +function applyConcentrationAura(sourceId: string, targetId: string, now: number): void { + const result = applyAura(useCombatStore.getState().auras, { + definition: concentrationAuraDefinition(), + sourceId, + targetId, + now, + }); + useCombatStore.setState({ auras: [...result.auras] }); +} + +function registerAttacker(id: string, targetActorId: string): void { + useCombatStore.getState().registerMob(id, { + name: id, + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [{ ...DEFAULT_ENEMY_ATTACK, damageMultiplier: 2 }], + }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.getState().damageMob(id, 1, 100, { actorId: targetActorId, role: "tank" }, "physical"); +} + +function playerCast(mode: CastMode, now: number): ActiveCast { + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.name === ( + mode === "channel" ? "Blizzard" : "Fireball" + )); + if (!ability) throw new Error(`Expected the Mage ${mode} ability.`); + return { + id: 1, + abilityId: ability.id, + targetId: "concentration-pushback-target", + mode, + startedAt: now, + completesAt: now + (mode === "channel" ? 10_000 : 5_000), + originalDurationMs: mode === "channel" ? 10_000 : 5_000, + pushbackHits: 0, + school: mode === "channel" ? "frost" : "fire", + canCastWhileMoving: false, + origin: [0, 0, 0], + groundPosition: null, + totalTicks: mode === "channel" ? 8 : 0, + ticksCompleted: 0, + nextTickAt: mode === "channel" ? now + 1_250 : 0, + }; +} + +function partyCast(mode: CastMode, now: number) { + const ability = abilitiesForClass("mage").find((candidate) => candidate.name === ( + mode === "channel" ? "Blizzard" : "Fireball" + )); + if (!ability) throw new Error(`Expected the Mage ${mode} ability.`); + return { + abilityId: ability.id, + school: mode === "channel" ? "frost" as const : "fire" as const, + mode, + startedAt: now, + completesAt: now + (mode === "channel" ? 10_000 : 5_000), + originalDurationMs: mode === "channel" ? 10_000 : 5_000, + pushbackHits: 0, + origin: [0, 0, 0] as const, + targetId: "concentration-pushback-target", + ...(mode === "channel" ? { channelTicksCompleted: 0 } : {}), + }; +} + +function setupIncomingCast( + mode: CastMode, + rank: number, + target: "player" | "companion", + withAuraMastery = false, +) { + const now = 1_000; + const partyId = `concentration-pushback-${target}-${mode}-${rank}`; + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.setState({ mobs: {}, auras: [], actors: {}, activeCast: null, combatEvents: [] }); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty(partyId, 80, useCombatStore.getState().health, "damage", 1); + const { paladin, caster } = setupParty(partyId, rank, target === "companion"); + const targetId = target === "player" ? PLAYER_AGGRO_ID : caster!.id; + applyConcentrationAura(paladin.id, targetId, now - 100); + if (withAuraMastery) { + const mastery = applyAura(useCombatStore.getState().auras, { + definition: auraMasteryDefinition(), + sourceId: paladin.id, + targetId, + now: now - 100, + }); + useCombatStore.setState({ auras: [...mastery.auras] }); + } + + if (target === "player") { + const cast = playerCast(mode, now); + useCombatStore.setState({ activeCast: cast }); + } else { + const cast = partyCast(mode, now); + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === targetId + ? { ...member, activeCast: cast, activeCastTargetId: cast.targetId ?? null } + : member), + })); + useCombatStore.setState((state) => ({ + actors: { + ...state.actors, + [targetId]: { ...state.actors[targetId]!, cast }, + }, + })); + } + + registerAttacker(`concentration-pushback-attacker-${target}-${mode}`, targetId); + useCombatStore.getState().advanceMobCombat(now); + return { targetId, mode }; +} + +describe("WoW Paladin Concentration Aura pushback integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty("concentration-pushback-tests", 80, useCombatStore.getState().health, "damage", 1); + }); + + it.each([ + { target: "player" as const, mode: "cast" as const }, + { target: "player" as const, mode: "channel" as const }, + { target: "companion" as const, mode: "cast" as const }, + { target: "companion" as const, mode: "channel" as const }, + ])("scales $target $mode pushback from the Paladin source rank", ({ target, mode }) => { + const base = setupIncomingCast(mode, 0, target); + const baseState = useCombatStore.getState(); + const baseCast = target === "player" + ? baseState.activeCast! + : baseState.actors[base.targetId]!.cast!; + expect(baseCast.pushbackHits).toBe(1); + + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + const capstone = setupIncomingCast(mode, 3, target); + const capstoneState = useCombatStore.getState(); + const capstoneCast = target === "player" + ? capstoneState.activeCast! + : capstoneState.actors[capstone.targetId]!.cast!; + expect(capstoneCast.pushbackHits).toBe(1); + + if (mode === "cast") { + expect(baseCast.completesAt - 6_000).toBe(325); + expect(capstoneCast.completesAt - 6_000).toBe(225); + } else { + expect(11_000 - baseCast.completesAt).toBe(1_625); + expect(11_000 - capstoneCast.completesAt).toBe(1_125); + if (target === "player") { + expect((baseCast as ActiveCast).totalTicks).toBe(6); + expect((capstoneCast as ActiveCast).totalTicks).toBe(7); + } + } + }); + + it("does not double Concentration Aura through Aura Mastery", () => { + const { targetId } = setupIncomingCast("cast", 3, "player", true); + const cast = useCombatStore.getState().activeCast!; + expect(targetId).toBe(PLAYER_AGGRO_ID); + expect(cast.completesAt - 6_000).toBe(225); + }); + + it.each([ + { label: "a different aura identity", wrongAuraId: true, wrongSource: false }, + { label: "a non-Paladin source", wrongAuraId: false, wrongSource: true }, + ])("ignores Concentration Aura with $label", ({ wrongAuraId, wrongSource }) => { + const now = 1_000; + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.setState({ mobs: {}, auras: [], actors: {}, activeCast: null, combatEvents: [] }); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + const { paladin, caster } = setupParty("concentration-wrong-source", 3, true); + const targetId = caster!.id; + const invalidAura = applyAura(useCombatStore.getState().auras, { + definition: wrongAuraId + ? { ...concentrationAuraDefinition(), id: "not-concentration-aura" } + : concentrationAuraDefinition(), + sourceId: wrongSource ? targetId : paladin.id, + targetId, + now, + }); + useCombatStore.setState({ auras: [...invalidAura.auras] }); + const cast = partyCast("cast", now); + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === targetId + ? { ...member, activeCast: cast, activeCastTargetId: cast.targetId ?? null } + : member), + })); + useCombatStore.setState((state) => ({ + actors: { ...state.actors, [targetId]: { ...state.actors[targetId]!, cast } }, + })); + registerAttacker("concentration-wrong-source-attacker", targetId); + useCombatStore.getState().advanceMobCombat(now); + expect(useCombatStore.getState().actors[targetId]!.cast!.completesAt - 6_000).toBe(500); + expect(useCombatStore.getState().auras.some((aura) => aura.definition.id === WOW335_PALADIN_CONCENTRATION_AURA_EFFECT_ID)).toBe(!wrongAuraId); + }); +}); diff --git a/src/game/wow335PaladinConcentrationAuraRuntime.test.ts b/src/game/wow335PaladinConcentrationAuraRuntime.test.ts new file mode 100644 index 00000000..a5a37e12 --- /dev/null +++ b/src/game/wow335PaladinConcentrationAuraRuntime.test.ts @@ -0,0 +1,30 @@ +import { describe, expect, it } from "vitest"; +import generatedAbilityData from "./wow335AbilityData.generated.json"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import { wow335PaladinConcentrationAuraPushbackReduction } from "./wow335PaladinConcentrationAuraRuntime"; + +describe("WoW 3.3.5 Paladin Concentration Aura pushback", () => { + it("applies the generated base reduction and Improved Concentration Aura's flat effect modifier", () => { + const aura = generatedAbilityData.classes.paladin.find( + (ability) => ability.name === "Concentration Aura", + ); + const effect = aura?.ranks[0]?.effects.find((row) => row.auraType === 149); + const talent = WOW335_TALENT_NODES.find((node) => node.name === "Improved Concentration Aura"); + + expect(effect?.basePoints).toBe(35); + expect(talent?.rankEffects.slice(0, 3).map((rank) => ( + rank.effects.find((row) => row.index === 0)?.basePoints + ))).toEqual([7, 14, 20]); + expect([0, 1, 2, 3].map((rank) => ( + wow335PaladinConcentrationAuraPushbackReduction(true, rank) + ))).toEqual([0.35, 0.42, 0.49, 0.55]); + }); + + it("does nothing when Concentration Aura is absent and clamps invalid talent ranks", () => { + expect(wow335PaladinConcentrationAuraPushbackReduction(false, 3)).toBe(0); + expect(wow335PaladinConcentrationAuraPushbackReduction(true, -1)).toBe(0.35); + expect(wow335PaladinConcentrationAuraPushbackReduction(true, 1.9)).toBe(0.42); + expect(wow335PaladinConcentrationAuraPushbackReduction(true, 99)).toBe(0.55); + expect(wow335PaladinConcentrationAuraPushbackReduction(true, Number.NaN)).toBe(0.35); + }); +}); diff --git a/src/game/wow335PaladinConcentrationAuraRuntime.ts b/src/game/wow335PaladinConcentrationAuraRuntime.ts new file mode 100644 index 00000000..b3691bbd --- /dev/null +++ b/src/game/wow335PaladinConcentrationAuraRuntime.ts @@ -0,0 +1,49 @@ +import generatedAbilityData from "./wow335AbilityData.generated.json"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +const WOW335_PALADIN_CONCENTRATION_AURA_ID = "wow335-paladin-concentration-aura"; +export const WOW335_PALADIN_CONCENTRATION_AURA_EFFECT_ID = "wow335:19746:effect:0:aura:149"; +export const WOW335_PALADIN_IMPROVED_CONCENTRATION_AURA_TALENT_ID = "talent-1450"; + +/** + * Returns pushback-time reduction for an affected caster as a 0..1 fraction. + * + * The DBC's Aura 149 value is a percent reduction of pushback time. Improved + * Concentration Aura applies a flat spell modifier to effect 1, so its value + * is added in percentage points. Aura Mastery explicitly boosts "all other + * auras"; Concentration Aura instead supplies its separate silence/interrupt + * immunity rider, so it does not amplify this result. + * + * The local generated talent rows are 7/14/20, while stock 3.3.5a spell + * 20256 reports 15 at rank 3 (https://wotlkdb.com/index.php?spell=20256). + * Keep the local generated DBC as the mechanic input and surface that source + * conflict to the caller/review rather than silently substituting a value. + */ +export function wow335PaladinConcentrationAuraPushbackReduction( + concentrationAuraActive: boolean, + improvedConcentrationAuraRank: number, +): number { + if (!concentrationAuraActive) return 0; + + const aura = generatedAbilityData.classes.paladin.find( + (ability) => ability.id === WOW335_PALADIN_CONCENTRATION_AURA_ID, + ); + const auraEffect = aura?.ranks[0]?.effects.find((effect) => effect.auraType === 149); + if (!auraEffect) return 0; + + const rank = Math.max(0, Math.min(3, Math.trunc( + Number.isFinite(improvedConcentrationAuraRank) ? improvedConcentrationAuraRank : 0, + ))); + const talent = WOW335_TALENT_NODES.find( + (node) => node.id === WOW335_PALADIN_IMPROVED_CONCENTRATION_AURA_TALENT_ID, + ); + const talentEffect = rank > 0 + ? talent?.rankEffects[rank - 1]?.effects.find((effect) => ( + effect.index === 0 && effect.auraType === 107 && effect.miscValue === 3 + )) + : undefined; + if (rank > 0 && !talentEffect) return 0; + + const reductionPercent = Math.max(0, auraEffect.basePoints + (talentEffect?.basePoints ?? 0)); + return Math.min(100, reductionPercent) / 100; +} diff --git a/src/game/wow335PaladinIllumination.integration.test.ts b/src/game/wow335PaladinIllumination.integration.test.ts new file mode 100644 index 00000000..8e649699 --- /dev/null +++ b/src/game/wow335PaladinIllumination.integration.test.ts @@ -0,0 +1,108 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { installCombatClock } from "./combatClock"; +import { abilityAtLevel, abilityById } from "./abilityCatalog"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { WOW335_PALADIN_ILLUMINATION_TALENT_ID } from "./wow335PaladinIlluminationRuntime"; + +let restoreClock: (() => void) | undefined; + +describe("WoW Paladin Illumination combat integration", () => { + beforeEach(() => { + restoreClock = installCombatClock(() => 1_000); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "paladin", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("wow335-paladin-illumination", 80, useCombatStore.getState().health, "healer", 5); + useCombatStore.setState((state) => ({ + gearStats: { ...EMPTY_ITEM_STATS, criticalStrikeRating: 1_000_000 }, + talentRanks: { ...state.talentRanks, [WOW335_PALADIN_ILLUMINATION_TALENT_ID]: 3 }, + resource: state.maxResource, + resourcePools: { ...state.resourcePools, mana: state.maxResourcePools.mana }, + })); + useCombatStore.getState().damagePlayer(5_000); + }); + + afterEach(() => { + restoreClock?.(); + restoreClock = undefined; + }); + + it("refunds half the resolved DBC base Mana cost after a critical player Flash of Light", () => { + const spell = useCombatStore.getState().abilities.find((ability) => ability.name === "Flash of Light"); + if (!spell) throw new Error("Missing generated Paladin Flash of Light."); + const baseRank = abilityAtLevel(abilityById(spell.id) ?? spell, 80); + const expectedRefund = baseRank.cost.amount * 0.5; + const cast = useCombatStore.getState().castAbility(spell.id, undefined, 1_000); + expect(cast).toMatchObject({ ok: true }); + const activeCast = useCombatStore.getState().activeCast; + expect(activeCast?.illuminationBaseManaCost).toBe(baseRank.cost.amount); + useCombatStore.setState({ level: 70 }); + if (activeCast) useCombatStore.getState().tick(0.1, activeCast.completesAt); + + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + kind: "healing", abilityId: spell.id, critical: true, + })); + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + kind: "resource", sourceActorId: PLAYER_AURA_ENTITY_ID, targetActorId: PLAYER_AURA_ENTITY_ID, + abilityId: spell.id, rawAmount: expectedRefund, effectiveAmount: expectedRefund, + })); + expect(useCombatStore.getState().resourcePools.mana).toBeGreaterThan(0); + }); + + it("refunds a companion Paladin from its own rank after a critical Flash of Light", () => { + const talentRanks = { [WOW335_PALADIN_ILLUMINATION_TALENT_ID]: 3 }; + const healer = createConfiguredPartyMember({ + name: "Illumination Paladin", classId: "paladin", specialization: "Holy", + specializationId: "paladin:holy", talentTreeId: "paladin-holy", talentRanks, role: "healer", + }, 80, 0, "paladin-illumination-companion"); + const spell = abilityById("wow335-paladin-flash-of-light"); + if (!spell) throw new Error("Missing generated Paladin Flash of Light."); + const baseRank = abilityAtLevel(spell, 80); + const expectedRefund = baseRank.cost.amount * 0.5; + usePartyStore.getState().initializeParty( + "paladin-illumination-companion", 80, useCombatStore.getState().health, "healer", 2, + ); + usePartyStore.setState({ members: [{ + ...healer, + health: 100, + maxHealth: 10_000, + gearStats: { ...EMPTY_ITEM_STATS, criticalStrikeRating: 1_000_000 }, + talentRanks, + resource: 8_000, + maxResource: 10_000, + resourcePools: { ...healer.resourcePools, mana: 8_000 }, + activeCast: { + abilityId: spell.id, school: "holy", mode: "cast", startedAt: 500, completesAt: 2_500, + originalDurationMs: 2_000, pushbackHits: 0, origin: [0, 0, 0], targetId: healer.id, + illuminationBaseManaCost: baseRank.cost.amount, + }, + activeCastTargetId: healer.id, + status: "healing", + }] }); + registerPartyRuntimePosition(healer.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + usePartyStore.setState((party) => ({ + members: party.members.map((candidate) => candidate.id === healer.id + ? { ...candidate, level: 70 } + : candidate), + })); + useCombatStore.getState().synchronizeActors(); + + advanceDungeonPartyCombat(2_500); + + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + kind: "healing", sourceActorId: healer.id, abilityId: spell.id, critical: true, + })); + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + kind: "resource", sourceActorId: healer.id, targetActorId: healer.id, + abilityId: spell.id, rawAmount: expectedRefund, effectiveAmount: expectedRefund, + })); + expect(usePartyStore.getState().members[0]?.resourcePools.mana).toBe(8_000 + expectedRefund); + }); +}); diff --git a/src/game/wow335PaladinIlluminationRuntime.test.ts b/src/game/wow335PaladinIlluminationRuntime.test.ts new file mode 100644 index 00000000..46a8d05d --- /dev/null +++ b/src/game/wow335PaladinIlluminationRuntime.test.ts @@ -0,0 +1,106 @@ +import { describe, expect, it } from "vitest"; +import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; +import { + WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS, + WOW335_PALADIN_ILLUMINATION_TALENT_ID, + wow335PaladinIlluminationRankMechanics, + wow335PaladinIlluminationRefundPlan, +} from "./wow335PaladinIlluminationRuntime"; + +const event = (overrides: Partial[1]> = {}) => ({ + casterClassId: "paladin", + abilityId: WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS["Holy Light"], + abilityName: "Holy Light", + criticalHeal: true, + spellBaseManaCost: 1_000, + roll: 0.5, + ...overrides, +}); + +describe("WoW 3.3.5a Paladin Illumination", () => { + it("reads the exact generated rank chance and 50% base-mana refund", () => { + expect(WOW335_PALADIN_ILLUMINATION_TALENT_ID).toBe("talent-1461"); + expect(WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS).toEqual({ + "Flash of Light": "wow335-paladin-flash-of-light", + "Holy Light": "wow335-paladin-holy-light", + "Holy Shock": "wow335-paladin-holy-shock", + }); + expect([1, 2, 3].map(wow335PaladinIlluminationRankMechanics)).toEqual([ + expect.objectContaining({ procChancePercent: 33, baseManaRefundFraction: 0.5 }), + expect.objectContaining({ procChancePercent: 66, baseManaRefundFraction: 0.5 }), + expect.objectContaining({ procChancePercent: 100, baseManaRefundFraction: 0.5 }), + ]); + expect(wow335PaladinIlluminationRankMechanics(0)).toBeNull(); + expect(wow335PaladinIlluminationRankMechanics(4)).toBeNull(); + }); + + it("binds each tooltip heal name to a local 3.3.5a Paladin catalog row", () => { + const rows = new Map(WOW335_ABILITIES_BY_CLASS.paladin.map((ability) => [ability.name, ability])); + const rankOneSpellId = { "Flash of Light": 19_750, "Holy Light": 635, "Holy Shock": 20_473 }; + for (const [name, id] of Object.entries(WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS)) { + expect(rows.get(name)?.id).toBe(id); + expect(rows.get(name)?.source).toBe("wow335-progression"); + expect(rows.get(name)?.dbcSpellId).toBe(rankOneSpellId[name as keyof typeof rankOneSpellId]); + expect(rows.get(name)?.ranks?.length).toBeGreaterThan(0); + expect(rows.get(name)?.ranks?.[0]?.cost.resource).toBe("mana"); + } + }); + + it("uses only Flash of Light, Holy Light, and Holy Shock critical heals", () => { + const mechanics = wow335PaladinIlluminationRankMechanics(3)!; + expect(mechanics.eligibleHealNames).toEqual(["Flash of Light", "Holy Light", "Holy Shock"]); + for (const abilityName of mechanics.eligibleHealNames) { + expect(wow335PaladinIlluminationRefundPlan(3, event({ + abilityName, + abilityId: WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS[ + abilityName as keyof typeof WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS + ], + }))).toEqual({ + manaRefund: 500, + procChancePercent: 100, + }); + } + expect(wow335PaladinIlluminationRefundPlan(3, event({ abilityName: "Divine Light" }))).toBeNull(); + expect(wow335PaladinIlluminationRefundPlan(3, event({ + casterClassId: "mage", + abilityId: "wow335-mage-holy-light", + }))).toBeNull(); + expect(wow335PaladinIlluminationRefundPlan(3, event({ abilityId: "rom-priest-flash-of-light" }))).toBeNull(); + }); + + it("applies rank chance to critical heals and treats the upper boundary as exclusive", () => { + expect(wow335PaladinIlluminationRefundPlan(1, event({ roll: 0.3299 }))).toEqual({ + manaRefund: 500, + procChancePercent: 33, + }); + expect(wow335PaladinIlluminationRefundPlan(1, event({ roll: 0.33 }))).toBeNull(); + expect(wow335PaladinIlluminationRefundPlan(2, event({ roll: 0.6599 }))).not.toBeNull(); + expect(wow335PaladinIlluminationRefundPlan(2, event({ roll: 0.66 }))).toBeNull(); + expect(wow335PaladinIlluminationRefundPlan(3, event({ roll: 0.9999 }))).not.toBeNull(); + }); + + it("requires a critical heal but does not require effective healing above zero", () => { + expect(wow335PaladinIlluminationRefundPlan(3, event({ criticalHeal: false }))).toBeNull(); + // The source trigger is a critical heal, so an overheal remains eligible. + expect(wow335PaladinIlluminationRefundPlan(3, event())).toEqual({ + manaRefund: 500, + procChancePercent: 100, + }); + }); + + it("rejects invalid rank, base cost, and random inputs", () => { + expect(wow335PaladinIlluminationRefundPlan(0, event())).toBeNull(); + expect(wow335PaladinIlluminationRefundPlan(3, event({ spellBaseManaCost: 0 }))).toBeNull(); + expect(wow335PaladinIlluminationRefundPlan(3, event({ spellBaseManaCost: Number.NaN }))).toBeNull(); + for (const roll of [-0.01, 1, Number.NaN, Number.POSITIVE_INFINITY]) { + expect(wow335PaladinIlluminationRefundPlan(3, event({ roll }))).toBeNull(); + } + }); + + it("calculates the refund from the DBC-derived base cost without inventing odd-cost rounding", () => { + expect(wow335PaladinIlluminationRefundPlan(3, event({ spellBaseManaCost: 703 }))).toEqual({ + manaRefund: 351.5, + procChancePercent: 100, + }); + }); +}); diff --git a/src/game/wow335PaladinIlluminationRuntime.ts b/src/game/wow335PaladinIlluminationRuntime.ts new file mode 100644 index 00000000..010161c4 --- /dev/null +++ b/src/game/wow335PaladinIlluminationRuntime.ts @@ -0,0 +1,96 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_PALADIN_ILLUMINATION_TALENT_ID = "talent-1461"; +export const WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS = Object.freeze({ + "Flash of Light": "wow335-paladin-flash-of-light", + "Holy Light": "wow335-paladin-holy-light", + "Holy Shock": "wow335-paladin-holy-shock", +} as const); + +export interface Wow335PaladinIlluminationRankMechanics { + readonly description: string; + readonly procChancePercent: number; + readonly baseManaRefundFraction: number; + readonly eligibleHealNames: readonly string[]; +} + +export interface Wow335PaladinIlluminationRefundPlan { + readonly manaRefund: number; + readonly procChancePercent: number; +} + +const talent = WOW335_TALENT_NODES.find((node) => node.id === WOW335_PALADIN_ILLUMINATION_TALENT_ID); + +/** Reads Illumination's proc ranks, trigger names, and mana refund from generated local talent rows. */ +export function wow335PaladinIlluminationRankMechanics( + rank: number, +): Wow335PaladinIlluminationRankMechanics | null { + const normalizedRank = Math.trunc(Number.isFinite(rank) ? rank : 0); + const description = talent?.rankDescriptions[normalizedRank - 1]; + const rankEffect = talent?.rankEffects[normalizedRank - 1]; + if (!description || !rankEffect) return null; + + const triggerClause = description.match(/critical heals with (.+?) now has a /i)?.[1]; + const chanceMatch = description.match(/now has a (\d+(?:\.\d+)?)% chance/i); + const refundMatch = description.match(/gain mana equal to (\d+(?:\.\d+)?)% of the base cost of the spell/i); + if (!triggerClause || !chanceMatch || !refundMatch) return null; + + const procChancePercent = rankEffect.procChance; + const describedChancePercent = Number(chanceMatch[1]); + const refundPercent = Number(refundMatch[1]); + if (!Number.isFinite(procChancePercent) || procChancePercent <= 0 || procChancePercent > 100 + || procChancePercent !== describedChancePercent + || !Number.isFinite(refundPercent) || refundPercent <= 0 || refundPercent > 100) return null; + + const eligibleHealNames = triggerClause + .replace(/\s+or\s+/gi, ",") + .split(",") + .map((name) => name.trim()) + .filter(Boolean); + if (eligibleHealNames.length === 0) return null; + + return Object.freeze({ + description, + procChancePercent, + baseManaRefundFraction: refundPercent / 100, + eligibleHealNames: Object.freeze(eligibleHealNames), + }); +} + +/** + * Plans the sourced mana return after a critical heal. The caller provides + * the spell's unmodified base Mana cost and owns the capped resource restore. + */ +export function wow335PaladinIlluminationRefundPlan( + rank: number, + event: { + readonly casterClassId: string; + readonly abilityId: string; + readonly abilityName: string; + readonly criticalHeal: boolean; + /** Cost derived from the resolved Spell.dbc rank's base-Mana cost fields before modifiers. */ + readonly spellBaseManaCost: number; + /** A deterministic roll in [0, 1), supplied by the player/party event path. */ + readonly roll: number; + }, +): Wow335PaladinIlluminationRefundPlan | null { + const mechanics = wow335PaladinIlluminationRankMechanics(rank); + if (event.casterClassId !== "paladin" + || !mechanics + || !mechanics.eligibleHealNames.includes(event.abilityName) + || WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS[ + event.abilityName as keyof typeof WOW335_PALADIN_ILLUMINATION_HEAL_ABILITY_IDS + ] !== event.abilityId + || !event.criticalHeal + || !Number.isFinite(event.spellBaseManaCost) + || event.spellBaseManaCost <= 0 + || !Number.isFinite(event.roll) + || event.roll < 0 + || event.roll >= 1 + || event.roll >= mechanics.procChancePercent / 100) return null; + + return Object.freeze({ + manaRefund: event.spellBaseManaCost * mechanics.baseManaRefundFraction, + procChancePercent: mechanics.procChancePercent, + }); +} diff --git a/src/game/wow335PaladinRetributionAura.integration.test.ts b/src/game/wow335PaladinRetributionAura.integration.test.ts new file mode 100644 index 00000000..2b9bc974 --- /dev/null +++ b/src/game/wow335PaladinRetributionAura.integration.test.ts @@ -0,0 +1,101 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { abilitiesForCharacter, abilityAtLevel } from "./abilityCatalog"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; + +function registerAttacker(id: string, actorId = PLAYER_AURA_ENTITY_ID): void { + useCombatStore.getState().registerMob(id, { name: id, level: 80, maxHealth: 10_000, xpReward: 0 }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.getState().damageMob(id, 1, 1_000, { + actorId, + role: actorId === PLAYER_AURA_ENTITY_ID ? "damage" : "tank", + }); +} + +function retributionAuraAbility() { + const catalog = abilitiesForCharacter("paladin", null); + const ability = catalog.find((candidate) => candidate.name === "Retribution Aura"); + if (!ability) throw new Error("Missing generated Retribution Aura ability."); + return abilityAtLevel(ability, 80); +} + +describe("WoW 3.3.5 Retribution Aura spell-power scaling", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty("retribution-aura-sp", 80, useCombatStore.getState().health); + }); + + it("adds the Paladin player's spell power to retaliation damage", () => { + useCombatStore.getState().initializeCharacter({ + classId: "paladin", + specializationId: "paladin:retribution", + level: 80, + }); + useCombatStore.setState((state) => ({ gearStats: { ...state.gearStats, spellPower: 3_000 } })); + useCombatStore.getState().synchronizeActors(); + const aura = retributionAuraAbility(); + const effect = aura.effects.find((candidate) => candidate.kind === "apply-aura"); + if (!effect || effect.kind !== "apply-aura") throw new Error("Retribution Aura has no aura effect."); + expect(useCombatStore.getState().applyActorAura( + PLAYER_AURA_ENTITY_ID, + PLAYER_AURA_ENTITY_ID, + aura, + effect, + 1_000, + )).toBe(true); + registerAttacker("player-retribution-aura-target"); + + useCombatStore.getState().advanceMobCombat(1_450, [0, 0, 0]); + + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + kind: "damage", + sourceActorId: PLAYER_AURA_ENTITY_ID, + targetActorId: "player-retribution-aura-target", + abilityId: "wow335:54043:proc:15:damage", + school: "holy", + effectiveAmount: 211, + })); + }); + + it("adds a generated companion Paladin's spell power when its aura retaliates", () => { + const seed = "retribution-aura-companion-sp"; + const paladin = createConfiguredPartyMember({ + name: "Aura Paladin", + classId: "paladin", + specialization: "Retribution", + specializationId: "paladin:retribution", + talentTreeId: "paladin-retribution", + role: "tank", + }, 80, 0, seed); + const aura = retributionAuraAbility(); + const effect = aura.effects.find((candidate) => candidate.kind === "apply-aura"); + if (!effect || effect.kind !== "apply-aura") throw new Error("Retribution Aura has no aura effect."); + usePartyStore.getState().initializeParty(seed, 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ members: [{ ...paladin, gearStats: { ...EMPTY_ITEM_STATS, spellPower: 3_000 } }] }); + registerPartyRuntimePosition(paladin.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + expect(useCombatStore.getState().applyActorAura(paladin.id, paladin.id, aura, effect, 1_000)).toBe(true); + registerAttacker("companion-retribution-aura-target", paladin.id); + + for (let now = 1_450; now <= 50_000; now += 1_500) { + useCombatStore.getState().advanceMobCombat(now, [0, 0, 0]); + if (useCombatStore.getState().combatEvents.some((event) => ( + event.abilityId === "wow335:54043:proc:15:damage" + ))) break; + } + + expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ + kind: "damage", + sourceActorId: paladin.id, + targetActorId: "companion-retribution-aura-target", + abilityId: "wow335:54043:proc:15:damage", + school: "holy", + effectiveAmount: 211, + })); + }); +}); diff --git a/src/game/wow335PaladinVengeance.integration.test.ts b/src/game/wow335PaladinVengeance.integration.test.ts new file mode 100644 index 00000000..7fad6d92 --- /dev/null +++ b/src/game/wow335PaladinVengeance.integration.test.ts @@ -0,0 +1,100 @@ +import { afterEach, beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { installCombatClock } from "./combatClock"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { + WOW335_PALADIN_VENGEANCE_AURA_TAG, + WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS, + WOW335_PALADIN_VENGEANCE_TALENT_ID, +} from "./wow335PaladinVengeanceRuntime"; + +const TARGET_ID = "paladin-vengeance-target"; +let restoreClock: (() => void) | undefined; + +function registerTarget(id = TARGET_ID) { + useCombatStore.getState().registerMob(id, { name: "Vengeance target", maxHealth: 1_000_000, xpReward: 0 }); + setMobPosition(id, [2, 0, 0]); +} + +function criticalHit(actorId: string, now: number) { + return useCombatStore.getState().damageMob(TARGET_ID, 100, now, + { actorId, role: "damage", abilityId: WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS["Crusader Strike"] }, + "physical", { + attackKind: "melee", + seed: `${actorId}:${now}:vengeance-test`, + abilityId: WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS["Crusader Strike"], + criticalChanceBonusPercent: 100, + rules: { canMiss: false, canDodge: false, canParry: false, canBlock: false, resistanceMode: "none" }, + }); +} + +describe("WoW Paladin Vengeance combat integration", () => { + beforeEach(() => { + restoreClock = installCombatClock(() => 1_000); + clearMobRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "paladin", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("wow335-paladin-vengeance", 80, useCombatStore.getState().health, "damage", 5); + registerTarget(); + }); + + afterEach(() => { + restoreClock?.(); + restoreClock = undefined; + }); + + it("applies a stack after player crits and uses existing stacks only on the next qualifying hit", () => { + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [WOW335_PALADIN_VENGEANCE_TALENT_ID]: 3 }, + })); + const first = criticalHit(PLAYER_AGGRO_ID, 1_000); + expect(first.combatResult?.critical).toBe(true); + expect(useCombatStore.getState().auras.find((aura) => aura.targetId === PLAYER_AURA_ENTITY_ID + && aura.definition.utilityTags?.includes(WOW335_PALADIN_VENGEANCE_AURA_TAG))) + .toMatchObject({ stacks: 1, appliedAt: 1_000, expiresAt: 16_000 }); + + const withStack = useCombatStore.getState().damageMob(TARGET_ID, 100, 2_000, + { actorId: PLAYER_AGGRO_ID, role: "damage", abilityId: WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS["Crusader Strike"] }, + "physical", { + attackKind: "melee", seed: "vengeance-followup", abilityId: WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS["Crusader Strike"], + rules: { canMiss: false, canDodge: false, canParry: false, canBlock: false, canCrit: false, resistanceMode: "none" }, + }); + expect(withStack.amount).toBeGreaterThan(0); + expect(useCombatStore.getState().auras.find((aura) => aura.targetId === PLAYER_AURA_ENTITY_ID + && aura.definition.utilityTags?.includes(WOW335_PALADIN_VENGEANCE_AURA_TAG))?.stacks).toBe(1); + criticalHit(PLAYER_AGGRO_ID, 3_000); + expect(useCombatStore.getState().auras.find((aura) => aura.targetId === PLAYER_AURA_ENTITY_ID + && aura.definition.utilityTags?.includes(WOW335_PALADIN_VENGEANCE_AURA_TAG))) + .toMatchObject({ stacks: 2, appliedAt: 3_000, expiresAt: 18_000 }); + registerTarget("paladin-vengeance-control"); + useCombatStore.setState((state) => ({ auras: state.auras.filter((aura) => !aura.definition.utilityTags?.includes( + WOW335_PALADIN_VENGEANCE_AURA_TAG, + )) })); + const withoutStack = useCombatStore.getState().damageMob("paladin-vengeance-control", 100, 2_000, + { actorId: PLAYER_AGGRO_ID, role: "damage", abilityId: WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS["Crusader Strike"] }, + "physical", { + attackKind: "melee", seed: "vengeance-followup", abilityId: WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS["Crusader Strike"], + rules: { canMiss: false, canDodge: false, canParry: false, canBlock: false, canCrit: false, resistanceMode: "none" }, + }); + expect(withStack.amount).toBeGreaterThan(withoutStack.amount); + }); + + it("uses the companion Paladin's own rank and owner-scoped stack aura", () => { + const talentRanks = { [WOW335_PALADIN_VENGEANCE_TALENT_ID]: 2 }; + const member = createConfiguredPartyMember({ + name: "Vengeance Paladin", classId: "paladin", specialization: "Retribution", + specializationId: "paladin:retribution", talentTreeId: "paladin-retribution", talentRanks, role: "damage", + }, 80, 0, "paladin-vengeance-companion"); + usePartyStore.setState({ members: [{ ...member, gearStats: EMPTY_ITEM_STATS, talentRanks }] }); + useCombatStore.getState().synchronizeActors(); + + const result = criticalHit(member.id, 2_000); + expect(result.combatResult?.critical).toBe(true); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: member.id, targetId: member.id, appliedAt: 2_000, expiresAt: 17_000, + stacks: 1, definition: expect.objectContaining({ utilityTags: [WOW335_PALADIN_VENGEANCE_AURA_TAG] }), + })); + }); +}); diff --git a/src/game/wow335PaladinVengeanceRuntime.test.ts b/src/game/wow335PaladinVengeanceRuntime.test.ts new file mode 100644 index 00000000..b91ea9db --- /dev/null +++ b/src/game/wow335PaladinVengeanceRuntime.test.ts @@ -0,0 +1,125 @@ +import { describe, expect, it } from "vitest"; +import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; +import { + WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS, + WOW335_PALADIN_VENGEANCE_TALENT_ID, + wow335PaladinVengeanceDamageBonusPercent, + wow335PaladinVengeanceProcPlan, + wow335PaladinVengeanceProfile, + type Wow335PaladinVengeanceCriticalSource, +} from "./wow335PaladinVengeanceRuntime"; + +const procEvent = (overrides: Partial[1]> = {}) => ({ + casterClassId: "paladin", + source: "ability" as Wow335PaladinVengeanceCriticalSource, + critical: true, + damageDealt: 100, + currentStacks: 0, + ...overrides, +}); + +describe("WoW 3.3.5a Paladin Vengeance", () => { + it("uses generated talent ranks for its trigger, damage value, scope, duration, and stack cap", () => { + expect(WOW335_PALADIN_VENGEANCE_TALENT_ID).toBe("talent-1402"); + expect([1, 2, 3].map(wow335PaladinVengeanceProfile)).toEqual([ + expect.objectContaining({ + rankSpellId: 20_049, + triggerSpellId: 20_050, + procChancePercent: 100, + damageBonusPercentPerStack: 1, + durationMs: 15_000, + maxStacks: 5, + damageScope: "holy-or-crusader-strike-or-divine-storm", + }), + expect.objectContaining({ + rankSpellId: 20_056, + triggerSpellId: 20_052, + damageBonusPercentPerStack: 2, + durationMs: 15_000, + maxStacks: 5, + }), + expect.objectContaining({ + rankSpellId: 20_057, + triggerSpellId: 20_053, + damageBonusPercentPerStack: 3, + durationMs: 15_000, + maxStacks: 5, + }), + ]); + expect(wow335PaladinVengeanceProfile(0)).toBeNull(); + expect(wow335PaladinVengeanceProfile(4)).toBeNull(); + }); + + it("binds the tooltip's named damage bonuses to local Paladin Spell.dbc ability rows", () => { + const rows = new Map(WOW335_ABILITIES_BY_CLASS.paladin.map((ability) => [ability.name, ability])); + expect(WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS).toEqual({ + "Crusader Strike": "wow335-paladin-crusader-strike", + "Divine Storm": "wow335-paladin-divine-storm", + }); + for (const [name, id] of Object.entries(WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS)) { + const row = rows.get(name); + expect(row?.id).toBe(id); + expect(row?.source).toBe("wow335-progression"); + expect(row?.ranks?.length).toBeGreaterThan(0); + } + expect(rows.get("Crusader Strike")?.ranks?.[0]?.spellId).toBe(35_395); + expect(rows.get("Divine Storm")?.ranks?.[0]?.spellId).toBe(53_385); + }); + + it.each(["weapon-swing", "spell", "ability"] as const)( + "grants and refreshes a stack after any positive landed Paladin critical %s", + (source) => { + expect(wow335PaladinVengeanceProcPlan(3, procEvent({ source, currentStacks: 2 }))).toEqual({ + stacks: 3, + durationMs: 15_000, + procChancePercent: 100, + }); + expect(wow335PaladinVengeanceProcPlan(3, procEvent({ source, currentStacks: 5 }))).toEqual({ + stacks: 5, + durationMs: 15_000, + procChancePercent: 100, + }); + }, + ); + + it("rejects non-Paladin, noncritical, zero-damage, and unsupported source events", () => { + expect(wow335PaladinVengeanceProcPlan(3, procEvent({ casterClassId: "warrior" }))).toBeNull(); + expect(wow335PaladinVengeanceProcPlan(3, procEvent({ critical: false }))).toBeNull(); + expect(wow335PaladinVengeanceProcPlan(3, procEvent({ damageDealt: 0 }))).toBeNull(); + expect(wow335PaladinVengeanceProcPlan(3, procEvent({ damageDealt: -1 }))).toBeNull(); + expect(wow335PaladinVengeanceProcPlan(3, procEvent({ source: "heal" }))).toBeNull(); + expect(wow335PaladinVengeanceProcPlan(0, procEvent())).toBeNull(); + }); + + it("applies the per-stack bonus to Holy damage or either explicitly named ability", () => { + const rank = 3; + const stacks = 4; + expect(wow335PaladinVengeanceDamageBonusPercent(rank, stacks, { + casterClassId: "paladin", + abilityId: "wow335-paladin-holy-light", + damageSchool: "holy", + })).toBe(12); + for (const abilityId of Object.values(WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS)) { + expect(wow335PaladinVengeanceDamageBonusPercent(rank, stacks, { + casterClassId: "paladin", + abilityId, + damageSchool: "physical", + })).toBe(12); + } + expect(wow335PaladinVengeanceDamageBonusPercent(rank, stacks, { + casterClassId: "paladin", + abilityId: "wow335-paladin-crusader-strike", + damageSchool: "holy", + })).toBe(12); + expect(wow335PaladinVengeanceDamageBonusPercent(rank, stacks, { + casterClassId: "paladin", + abilityId: "wow335-paladin-judgement-of-wisdom", + damageSchool: "physical", + })).toBe(0); + expect(wow335PaladinVengeanceDamageBonusPercent(rank, 99, { + casterClassId: "paladin", + abilityId: "wow335-paladin-holy-light", + damageSchool: "holy", + })).toBe(15); + }); +}); diff --git a/src/game/wow335PaladinVengeanceRuntime.ts b/src/game/wow335PaladinVengeanceRuntime.ts new file mode 100644 index 00000000..24cd2bce --- /dev/null +++ b/src/game/wow335PaladinVengeanceRuntime.ts @@ -0,0 +1,132 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_PALADIN_VENGEANCE_TALENT_ID = "talent-1402"; +export const WOW335_PALADIN_VENGEANCE_AURA_ID = "wow335:paladin:vengeance"; +export const WOW335_PALADIN_VENGEANCE_AURA_TAG = "wow335-paladin-vengeance"; +export const WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS = Object.freeze({ + "Crusader Strike": "wow335-paladin-crusader-strike", + "Divine Storm": "wow335-paladin-divine-storm", +} as const); + +export type Wow335PaladinVengeanceCriticalSource = "weapon-swing" | "spell" | "ability"; + +export interface Wow335PaladinVengeanceProfile { + readonly rank: number; + readonly rankSpellId: number; + readonly triggerSpellId: number; + readonly procChancePercent: 100; + readonly damageBonusPercentPerStack: number; + readonly durationMs: number; + readonly maxStacks: number; + readonly damageScope: "holy-or-crusader-strike-or-divine-storm"; +} + +export interface Wow335PaladinVengeanceProcPlan { + readonly stacks: number; + readonly durationMs: number; + readonly procChancePercent: 100; +} + +const talent = WOW335_TALENT_NODES.find((node) => node.id === WOW335_PALADIN_VENGEANCE_TALENT_ID); + +/** Reads Vengeance's critical-hit trigger and buff values from generated local rank rows. */ +export function wow335PaladinVengeanceProfile(rank: number): Wow335PaladinVengeanceProfile | null { + const normalizedRank = Math.trunc(Number.isFinite(rank) ? rank : 0); + const description = talent?.rankDescriptions[normalizedRank - 1]; + const rankEffect = talent?.rankEffects[normalizedRank - 1]; + if (!description || !rankEffect || rankEffect.procChance !== 100) return null; + + const damageMatch = description.match( + /a (\d+(?:\.\d+)?)% bonus to Holy damage and Crusader Strike and Divine Storm damage you deal/i, + ); + const durationMatch = description.match(/damage you deal for (\d+(?:\.\d+)?) seconds after dealing/i); + const stackMatch = description.match(/stacks up to (\d+) times/i); + const triggerEffect = rankEffect.effects.find((effect) => effect.auraType === 42 && effect.triggerSpellId > 0); + if (!damageMatch || !durationMatch || !stackMatch || !triggerEffect) return null; + + const damageBonusPercentPerStack = Number(damageMatch[1]); + const durationMs = Number(durationMatch[1]) * 1_000; + const maxStacks = Number(stackMatch[1]); + if (!Number.isFinite(damageBonusPercentPerStack) || damageBonusPercentPerStack <= 0 + || !Number.isFinite(durationMs) || durationMs <= 0 + || !Number.isFinite(maxStacks) || maxStacks <= 0) return null; + + return Object.freeze({ + rank: normalizedRank, + rankSpellId: rankEffect.spellId, + triggerSpellId: triggerEffect.triggerSpellId, + procChancePercent: 100, + damageBonusPercentPerStack, + durationMs, + maxStacks, + damageScope: "holy-or-crusader-strike-or-divine-storm", + }); +} + +/** Creates the owner-scoped timed stack aura described by the generated talent ranks. */ +export function wow335PaladinVengeanceAuraDefinition(rank: number): import("./combatAuras").AuraDefinition | null { + const profile = wow335PaladinVengeanceProfile(rank); + if (!profile) return null; + return { + id: WOW335_PALADIN_VENGEANCE_AURA_ID, + name: "Vengeance", + description: `Critical strikes grant ${profile.damageBonusPercentPerStack}% increased Holy, Crusader Strike, and Divine Storm damage per stack for ${profile.durationMs / 1_000} seconds, stacking up to ${profile.maxStacks} times.`, + disposition: "buff", + durationMs: profile.durationMs, + maxStacks: profile.maxStacks, + stackBehavior: "add", + utilityTags: [WOW335_PALADIN_VENGEANCE_AURA_TAG], + }; +} + +/** Plans a guaranteed stack and 15-second refresh after a landed offensive Paladin critical hit. */ +export function wow335PaladinVengeanceProcPlan( + rank: number, + event: { + readonly casterClassId: string; + readonly source: Wow335PaladinVengeanceCriticalSource | string; + readonly critical: boolean; + /** Positive resolved damage proves the critical hit landed and dealt damage. */ + readonly damageDealt: number; + readonly currentStacks: number; + }, +): Wow335PaladinVengeanceProcPlan | null { + const profile = wow335PaladinVengeanceProfile(rank); + if (event.casterClassId !== "paladin" + || !profile + || !["weapon-swing", "spell", "ability"].includes(event.source) + || !event.critical + || !Number.isFinite(event.damageDealt) + || event.damageDealt <= 0 + || !Number.isFinite(event.currentStacks)) return null; + + const currentStacks = Math.max(0, Math.min(profile.maxStacks, Math.trunc(event.currentStacks))); + return Object.freeze({ + stacks: Math.min(profile.maxStacks, currentStacks + 1), + durationMs: profile.durationMs, + procChancePercent: profile.procChancePercent, + }); +} + +/** Returns Vengeance's local generated-tooltip bonus for the currently resolved damage scope. */ +export function wow335PaladinVengeanceDamageBonusPercent( + rank: number, + stacks: number, + event: { + readonly casterClassId: string; + readonly abilityId: string; + readonly damageSchool: string; + }, +): number { + const profile = wow335PaladinVengeanceProfile(rank); + if (event.casterClassId !== "paladin" || !profile || !Number.isFinite(stacks)) return 0; + + const boundedStacks = Math.max(0, Math.min(profile.maxStacks, Math.trunc(stacks))); + const isHolyDamage = event.damageSchool.toLowerCase() === "holy"; + const isNamedAbility = Object.values(WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS).includes( + event.abilityId as typeof WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS[keyof typeof WOW335_PALADIN_VENGEANCE_DAMAGE_ABILITY_IDS], + ); + return isHolyDamage || isNamedAbility + ? profile.damageBonusPercentPerStack * boundedStacks + : 0; +} diff --git a/src/game/wow335PriestLightwellRuntime.test.ts b/src/game/wow335PriestLightwellRuntime.test.ts index 0c16e9ea..aa2561a1 100644 --- a/src/game/wow335PriestLightwellRuntime.test.ts +++ b/src/game/wow335PriestLightwellRuntime.test.ts @@ -13,7 +13,7 @@ describe("WoW 3.3.5 Lightwell Renew source payload", () => { [31895, 27874, 533, 0.3333], [31894, 28276, 787, 0.3333], [31893, 48084, 1_305, 0.3333], - [31883, 48085, 1_540, undefined], + [31883, 48085, 1_540, 0.626], ] as const; for (const [creatureId, childSpellId, baseHealPerTick, coefficient] of expected) { diff --git a/src/game/wow335PriestLightwellRuntime.ts b/src/game/wow335PriestLightwellRuntime.ts index 89b8b65c..c111515b 100644 --- a/src/game/wow335PriestLightwellRuntime.ts +++ b/src/game/wow335PriestLightwellRuntime.ts @@ -18,7 +18,10 @@ const LIGHTWELL_RENEW_PROFILE_BY_CREATURE: Readonly 0 && safeRoll < chance ? 2_000 : 0; +} + /** Generated talent 206 has a two-rank capstone with this success-only rider. */ export function wow335RogueImprovedKickAuraEffectForRank( rank: number, diff --git a/src/game/wow335ShamanElementalFocusRuntime.test.ts b/src/game/wow335ShamanElementalFocusRuntime.test.ts new file mode 100644 index 00000000..fbb95dcf --- /dev/null +++ b/src/game/wow335ShamanElementalFocusRuntime.test.ts @@ -0,0 +1,33 @@ +import { describe, expect, it } from "vitest"; +import { + wow335ShamanElementalFocusProfileForRank, + wow335ShamanElementalFocusShouldProc, +} from "./wow335ShamanElementalFocusRuntime"; + +describe("WoW Shaman Elemental Focus profile", () => { + it("uses the generated rank proc chance and discount with the local Clearcasting duration", () => { + expect(wow335ShamanElementalFocusProfileForRank(0)).toBeNull(); + expect(wow335ShamanElementalFocusProfileForRank(1)).toEqual({ + procChancePercent: 50, + costReductionPercent: 30, + charges: 2, + durationMs: 15_000, + }); + expect(wow335ShamanElementalFocusProfileForRank(2)).toEqual({ + procChancePercent: 100, + costReductionPercent: 30, + charges: 2, + durationMs: 15_000, + }); + }); + + it("requires a landed nonperiodic Fire, Frost, or Nature critical and honors the rank chance", () => { + const rankOne = wow335ShamanElementalFocusProfileForRank(1); + expect(wow335ShamanElementalFocusShouldProc(rankOne, "nature", true, false, 0.49)).toBe(true); + expect(wow335ShamanElementalFocusShouldProc(rankOne, "nature", true, false, 0.5)).toBe(false); + expect(wow335ShamanElementalFocusShouldProc(rankOne, "nature", false, false, 0)).toBe(false); + expect(wow335ShamanElementalFocusShouldProc(rankOne, "nature", true, true, 0)).toBe(false); + expect(wow335ShamanElementalFocusShouldProc(rankOne, "physical", true, false, 0)).toBe(false); + expect(wow335ShamanElementalFocusShouldProc(null, "fire", true, false, 0)).toBe(false); + }); +}); diff --git a/src/game/wow335ShamanElementalFocusRuntime.ts b/src/game/wow335ShamanElementalFocusRuntime.ts new file mode 100644 index 00000000..05da899e --- /dev/null +++ b/src/game/wow335ShamanElementalFocusRuntime.ts @@ -0,0 +1,54 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_SHAMAN_ELEMENTAL_FOCUS_TALENT_ID = "talent-574"; +export const WOW335_SHAMAN_ELEMENTAL_FOCUS_AURA_TAG = "wow335-shaman-elemental-focus-clearcasting"; +export const WOW335_SHAMAN_ELEMENTAL_FOCUS_DURATION_MS = 15_000; + +const ELEMENTAL_FOCUS_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_SHAMAN_ELEMENTAL_FOCUS_TALENT_ID +)); + +export interface Wow335ShamanElementalFocusProfile { + readonly procChancePercent: number; + readonly costReductionPercent: number; + readonly charges: 2; + readonly durationMs: number; +} + +/** Reads the proc chance and discount from the generated local talent tooltip. */ +export function wow335ShamanElementalFocusProfileForRank( + rank: number, +): Wow335ShamanElementalFocusProfile | null { + const safeRank = Math.max(0, Math.min(2, Math.trunc(Number.isFinite(rank) ? rank : 0))); + const description = safeRank > 0 + ? ELEMENTAL_FOCUS_SOURCE?.rankDescriptions[safeRank - 1] + : undefined; + const match = description?.match(/you have a (\d+(?:\.\d+)?)% chance.*?next two .*? by (\d+(?:\.\d+)?)%/i); + if (!match) return null; + const procChancePercent = Number(match[1]); + const costReductionPercent = Number(match[2]); + if (!Number.isFinite(procChancePercent) || !Number.isFinite(costReductionPercent)) return null; + return { + procChancePercent, + costReductionPercent, + charges: 2, + // The local triggered Clearcasting effect is 15 seconds (SpellDuration row 8). + durationMs: WOW335_SHAMAN_ELEMENTAL_FOCUS_DURATION_MS, + }; +} + +export function wow335ShamanElementalFocusShouldProc( + profile: Wow335ShamanElementalFocusProfile | null, + school: string, + critical: boolean, + periodic: boolean, + roll: number, +): boolean { + return profile !== null + && critical + && !periodic + && ["fire", "frost", "nature"].includes(school.toLowerCase()) + && Number.isFinite(roll) + && roll >= 0 + && roll < profile.procChancePercent / 100; +} diff --git a/src/game/wow335ShamanElementalWarding.integration.test.ts b/src/game/wow335ShamanElementalWarding.integration.test.ts new file mode 100644 index 00000000..cbf81675 --- /dev/null +++ b/src/game/wow335ShamanElementalWarding.integration.test.ts @@ -0,0 +1,146 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore, stableCombatUnit } from "./combatStore"; +import { DEFAULT_ENEMY_ATTACK, type EnemyDamageSchool } from "./enemyAttacks"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { talentModifiersForRanks } from "./talentModifiers"; +import { WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID } from "./wow335ShamanElementalWardingRuntime"; + +const ATTACK = { + ...DEFAULT_ENEMY_ATTACK, + id: "elemental-warding-incoming-test", + name: "Elemental Warding Incoming Test", + delivery: "projectile" as const, + animation: "cast" as const, + castTimeMs: 0, + range: 20, + cooldownMs: 10_000, + initialCooldownMs: [0, 0] as const, + repeatCooldownMs: [10_000, 10_000] as const, + damageMultiplier: 1, +}; + +function incomingEvent(mobId: string, targetId: string) { + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "damage" + && candidate.sourceActorId === mobId + && candidate.targetActorId === targetId + )); + if (!event) throw new Error(`Expected a recorded incoming hit on ${targetId}.`); + return event; +} + +function timeForHit(mobId: string, actorId: string): number { + for (let now = 1_000; now < 200_000; now += 1) { + const roll = stableCombatUnit(`${mobId}:${ATTACK.id}:${actorId}:0:${now}:outcome`); + if (roll >= 0.2 && roll < 0.9) return now; + } + throw new Error("Could not find a stable Elemental Warding test hit."); +} + +function installAttacker(mobId: string, targetId: string, now: number, school: EnemyDamageSchool): void { + const attack = { ...ATTACK, school }; + useCombatStore.getState().registerMob(mobId, { + name: "Elemental Warding Test Attacker", + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [attack], + }); + setMobPosition(mobId, [2, 0, 0]); + useCombatStore.getState().damageMob(mobId, 1, now - 1, { + actorId: targetId, + role: "tank", + }, "physical"); +} + +function runPlayerHit(rank: number, school: EnemyDamageSchool) { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "shaman", level: 80, xp: 0 }); + const ranks = { ...useCombatStore.getState().talentRanks, [WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID]: rank }; + useCombatStore.setState({ + health: 100_000, + maxHealth: 100_000, + talentRanks: ranks, + talentModifiers: talentModifiersForRanks(ranks, "shaman"), + }); + const mobId = `elemental-warding-player-${school}`; + const now = timeForHit(mobId, PLAYER_AGGRO_ID); + installAttacker(mobId, PLAYER_AGGRO_ID, now, school); + useCombatStore.getState().advanceMobCombat(now); + return incomingEvent(mobId, PLAYER_AGGRO_ID); +} + +function runCompanionHit(rank: number, school: EnemyDamageSchool) { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty( + `elemental-warding-party-${school}`, + 80, + useCombatStore.getState().health, + "damage", + 1, + ); + const companion = createConfiguredPartyMember({ + name: "Elemental Warding Shaman", + classId: "shaman", + specialization: "Elemental", + specializationId: "shaman:elemental", + talentTreeId: "shaman-elemental", + talentRanks: { [WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID]: rank }, + role: "tank", + }, 80, 0, `elemental-warding-${school}`); + usePartyStore.setState({ members: [companion] }); + registerPartyRuntimePosition(companion.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + const mobId = `elemental-warding-companion-${school}`; + const now = timeForHit(mobId, companion.id); + installAttacker(mobId, companion.id, now, school); + advanceDungeonPartyCombat(now); + useCombatStore.getState().advanceMobCombat(now); + return incomingEvent(mobId, companion.id); +} + +describe("WoW Shaman Elemental Warding incoming damage integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + }); + + it.each(["fire", "frost", "nature"] as const)( + "reduces %s damage for the player and generated Shaman companion by rank 3's 6%", + (school) => { + const playerBaseline = runPlayerHit(0, school); + const playerWarded = runPlayerHit(3, school); + expect(playerBaseline.effectiveAmount).toBeGreaterThan(0); + expect(playerWarded.effectiveAmount).toBe(Math.round(playerBaseline.effectiveAmount * 0.94)); + + const companionBaseline = runCompanionHit(0, school); + const companionWarded = runCompanionHit(3, school); + expect(companionBaseline.effectiveAmount).toBeGreaterThan(0); + expect(companionWarded.effectiveAmount).toBe(Math.round(companionBaseline.effectiveAmount * 0.94)); + }, + ); + + it.each(["physical", "arcane", "holy", "shadow"] as const)( + "does not change %s damage for the player or generated Shaman companion", + (school) => { + const playerBaseline = runPlayerHit(0, school); + const playerWarded = runPlayerHit(3, school); + expect(playerWarded.effectiveAmount).toBe(playerBaseline.effectiveAmount); + + const companionBaseline = runCompanionHit(0, school); + const companionWarded = runCompanionHit(3, school); + expect(companionWarded.effectiveAmount).toBe(companionBaseline.effectiveAmount); + }, + ); +}); diff --git a/src/game/wow335ShamanElementalWardingRuntime.test.ts b/src/game/wow335ShamanElementalWardingRuntime.test.ts new file mode 100644 index 00000000..a2814911 --- /dev/null +++ b/src/game/wow335ShamanElementalWardingRuntime.test.ts @@ -0,0 +1,53 @@ +import { describe, expect, it } from "vitest"; +import { applyTalentModifierValue, talentModifiersForRanks } from "./talentModifiers"; +import { wow335ShamanElementalWardingModifierForRank } from "./wow335ShamanElementalWardingRuntime"; + +describe("WoW Shaman Elemental Warding", () => { + it.each([ + [1, -2], + [2, -4], + [3, -6], + ])("reads the generated owner damage reduction at rank %i", (rank, amount) => { + expect(wow335ShamanElementalWardingModifierForRank(rank)).toEqual({ + kind: "damage-taken-percent", + amount, + unit: "percent", + scope: "all Fire, Frost and Nature damage taken", + }); + }); + + it("does not create owner modifiers while untrained or for invalid rank input", () => { + expect(wow335ShamanElementalWardingModifierForRank(0)).toBeNull(); + expect(wow335ShamanElementalWardingModifierForRank(Number.NaN)).toBeNull(); + }); + + it("keeps the Tethered Elemental damage and threat clauses off the Shaman", () => { + const modifiers = talentModifiersForRanks({ "talent-1640": 2 }, "shaman"); + expect(modifiers).toHaveLength(1); + expect(modifiers[0]).toMatchObject({ + kind: "damage-taken-percent", + amount: -4, + sourceTalentId: "talent-1640", + sourceTalentName: "Elemental Warding", + rank: 2, + }); + expect(modifiers.some((modifier) => modifier.kind === "threat-percent")).toBe(false); + }); + + it("reduces only Fire, Frost and Nature damage", () => { + const modifiers = talentModifiersForRanks({ "talent-1640": 3 }, "shaman"); + for (const school of ["fire", "frost", "nature"] as const) { + expect(applyTalentModifierValue(100, modifiers, "damage-taken-percent", { + tags: ["magic", school], + })).toBe(94); + } + for (const school of ["arcane", "holy", "shadow"] as const) { + expect(applyTalentModifierValue(100, modifiers, "damage-taken-percent", { + tags: ["magic", school], + })).toBe(100); + } + expect(applyTalentModifierValue(100, modifiers, "damage-taken-percent", { + tags: ["physical"], + })).toBe(100); + }); +}); diff --git a/src/game/wow335ShamanElementalWardingRuntime.ts b/src/game/wow335ShamanElementalWardingRuntime.ts new file mode 100644 index 00000000..b1829406 --- /dev/null +++ b/src/game/wow335ShamanElementalWardingRuntime.ts @@ -0,0 +1,41 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID = "talent-1640"; + +const ELEMENTAL_WARDING_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_SHAMAN_ELEMENTAL_WARDING_TALENT_ID +)); + +export interface Wow335ShamanElementalWardingModifier { + readonly kind: "damage-taken-percent"; + /** Damage-taken reductions use a negative percentage. */ + readonly amount: number; + readonly unit: "percent"; + readonly scope: "all Fire, Frost and Nature damage taken"; +} + +/** + * Reads only Elemental Warding's owner-facing damage clause from its generated + * rank tooltip. The same tooltip has separate Tethered Elemental damage and + * threat riders; this simulator has no tethered-elemental actor to receive them. + */ +export function wow335ShamanElementalWardingModifierForRank( + rank: number, +): Wow335ShamanElementalWardingModifier | null { + const safeRank = Math.max(0, Math.min(3, Math.trunc(Number.isFinite(rank) ? rank : 0))); + const description = safeRank > 0 + ? ELEMENTAL_WARDING_SOURCE?.rankDescriptions[safeRank - 1] + : undefined; + const match = description?.match(/reduces all Fire, Frost and Nature damage taken by (\d+(?:\.\d+)?)%/i); + if (!match) return null; + + const reductionPercent = Number(match[1]); + return Number.isFinite(reductionPercent) && reductionPercent > 0 + ? { + kind: "damage-taken-percent", + amount: -reductionPercent, + unit: "percent", + scope: "all Fire, Frost and Nature damage taken", + } + : null; +} diff --git a/src/game/wow335ShamanFlurry.integration.test.ts b/src/game/wow335ShamanFlurry.integration.test.ts new file mode 100644 index 00000000..3a0d9a13 --- /dev/null +++ b/src/game/wow335ShamanFlurry.integration.test.ts @@ -0,0 +1,171 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; +import { usePartyStore, createConfiguredPartyMember } from "./partyStore"; +import { PLAYER_AURA_ENTITY_ID, useCombatStore } from "./combatStore"; +import { + WOW335_SHAMAN_FLURRY_AURA_TAG, + WOW335_SHAMAN_FLURRY_DURATION_MS, +} from "./wow335ShamanFlurryRuntime"; + +const TARGET_ID = "wow335-shaman-flurry-target"; +const FLURRY_RANK_ID = "talent-602"; + +function registerTarget(): void { + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Flurry target", + level: 80, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [3, 0, 0]); + useCombatStore.setState((state) => ({ + mobs: { + ...state.mobs, + [TARGET_ID]: { + ...state.mobs[TARGET_ID]!, + characterDefender: { level: 80, dodgePercent: 0, parryPercent: 0, blockPercent: 0 }, + }, + }, + })); +} + +function setupPlayerShaman(rank: number): void { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "shaman", level: 80, xp: 0 }); + useCombatStore.getState().resetSettings(); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + usePartyStore.getState().initializeParty("wow-shaman-flurry-player", 80, useCombatStore.getState().health); + registerTarget(); + useCombatStore.setState((state) => ({ + gearStats: { + ...state.gearStats, + hitRating: 100_000, + criticalStrikeRating: 100_000, + expertiseRating: 100_000, + }, + talentRanks: { ...state.talentRanks, [FLURRY_RANK_ID]: rank }, + autoAttackTargetId: TARGET_ID, + nextAutoAttackAt: 1_000, + })); +} + +function flurryAura(actorId: string) { + return useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === actorId + && aura.targetId === actorId + && aura.definition.utilityTags?.includes(WOW335_SHAMAN_FLURRY_AURA_TAG) + )); +} + +describe("WoW Shaman Flurry combat integration", () => { + beforeEach(() => setupPlayerShaman(0)); + + it("procs from the player's landed melee crit and hastens the next main-hand interval", () => { + const intervalForRank = (rank: number) => { + setupPlayerShaman(rank); + useCombatStore.getState().tick(0.1, 1_000); + const state = useCombatStore.getState(); + expect(state.lastCombatResult?.critical).toBe(true); + expect(state.lastCombatResult?.landed).toBe(true); + return state.nextAutoAttackAt - 1_000; + }; + + const baselineInterval = intervalForRank(0); + const flurryInterval = intervalForRank(1); + const aura = flurryAura(PLAYER_AURA_ENTITY_ID); + expect(flurryInterval).toBeLessThan(baselineInterval); + expect(aura).toMatchObject({ + stacks: 3, + appliedAt: 1_000, + expiresAt: 1_000 + WOW335_SHAMAN_FLURRY_DURATION_MS, + definition: { + modifiers: [{ kind: "stat", stat: "melee-haste", operation: "flat", value: 4, perStack: false }], + }, + }); + }); + + it("uses a generated companion Shaman's exact rank and consumes the next three autoattack attempts", () => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + usePartyStore.getState().initializeParty("wow-shaman-flurry-companion", 80, useCombatStore.getState().health); + const baseMember = createConfiguredPartyMember({ + name: "Flurry Shaman", + classId: "shaman", + specialization: "Enhancement", + specializationId: "shaman:enhancement", + talentTreeId: "shaman-enhancement", + talentRanks: { [FLURRY_RANK_ID]: 2 }, + role: "damage", + }, 80, 0, "wow-shaman-flurry-companion:member"); + const member = { + ...baseMember, + gearStats: { ...EMPTY_ITEM_STATS, hitRating: 100_000, criticalStrikeRating: 100_000, expertiseRating: 100_000 }, + health: baseMember.maxHealth, + }; + usePartyStore.setState({ members: [member] }); + useCombatStore.getState().commitCompanionActors([member]); + registerTarget(); + + const trigger = useCombatStore.getState().damageMob( + TARGET_ID, + 100, + 2_000, + { actorId: member.id, role: member.role, abilityId: "party-auto-attack" }, + "physical", + { + attackKind: "melee", + seed: "flurry-companion-trigger", + abilityId: "party-auto-attack", + rules: { + isAutoAttack: true, + canMiss: false, + canDodge: false, + canParry: false, + canBlock: false, + }, + }, + ); + expect(trigger.combatResult?.landed).toBe(true); + expect(trigger.combatResult?.critical).toBe(true); + expect(flurryAura(member.id)).toMatchObject({ + stacks: 3, + definition: { + modifiers: [{ kind: "stat", stat: "melee-haste", operation: "flat", value: 6, perStack: false }], + }, + }); + // A fake rank on the Mage player must not supply the companion's Flurry value. + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, [FLURRY_RANK_ID]: 3 }, + })); + + for (let swing = 1; swing <= 3; swing += 1) { + useCombatStore.getState().damageMob( + TARGET_ID, + 100, + 2_000 + swing * 100, + { actorId: member.id, role: member.role, abilityId: "party-auto-attack" }, + "physical", + { + attackKind: "melee", + seed: `flurry-companion-swing-${swing}`, + abilityId: "party-auto-attack", + rules: { + isAutoAttack: true, + canCrit: false, + canMiss: false, + canDodge: false, + canParry: false, + canBlock: false, + }, + }, + ); + const aura = flurryAura(member.id); + expect(aura?.stacks ?? 0).toBe(3 - swing); + } + expect(flurryAura(PLAYER_AURA_ENTITY_ID)).toBeUndefined(); + }); +}); diff --git a/src/game/wow335ShamanFlurryRuntime.test.ts b/src/game/wow335ShamanFlurryRuntime.test.ts new file mode 100644 index 00000000..8acbd947 --- /dev/null +++ b/src/game/wow335ShamanFlurryRuntime.test.ts @@ -0,0 +1,94 @@ +import { describe, expect, it } from "vitest"; +import { + WOW335_SHAMAN_FLURRY_AURA_TAG, + WOW335_SHAMAN_FLURRY_DURATION_MS, + WOW335_SHAMAN_FLURRY_TALENT_ID, + wow335ShamanFlurryApplyProc, + wow335ShamanFlurryConsumeSwingCharge, + wow335ShamanFlurryGeneratedSource, + wow335ShamanFlurryProfileForRank, + wow335ShamanFlurryShouldProc, +} from "./wow335ShamanFlurryRuntime"; + +describe("WoW 3.3.5 Shaman Flurry source model", () => { + it("uses the local generated Flurry rank rows and their displayed values", () => { + const talent = wow335ShamanFlurryGeneratedSource(); + expect(talent).toMatchObject({ + id: WOW335_SHAMAN_FLURRY_TALENT_ID, + name: "Flurry", + treeId: "shaman-enhancement", + rankSpellIds: [16256, 16281, 16282], + }); + expect(talent!.rankDescriptions).toEqual([ + expect.stringContaining("melee attack speed by 4% for your next 3 swings"), + expect.stringContaining("melee attack speed by 6% for your next 3 swings"), + expect.stringContaining("melee attack speed by 10% for your next 3 swings"), + ]); + expect([1, 2, 3].map(wow335ShamanFlurryProfileForRank)).toEqual([ + { rank: 1, meleeHastePercent: 4, swingCharges: 3 }, + { rank: 2, meleeHastePercent: 6, swingCharges: 3 }, + { rank: 3, meleeHastePercent: 10, swingCharges: 3 }, + ]); + }); + + it("normalizes ranks and returns no profile when no rank is trained", () => { + expect(wow335ShamanFlurryProfileForRank(0)).toBeNull(); + expect(wow335ShamanFlurryProfileForRank(-1)).toBeNull(); + expect(wow335ShamanFlurryProfileForRank(Number.NaN)).toBeNull(); + expect(wow335ShamanFlurryProfileForRank(99)).toEqual({ + rank: 3, meleeHastePercent: 10, swingCharges: 3, + }); + }); + + it("triggers only for a landed melee critical strike with a trained rank", () => { + const landedMeleeCritical = { attackKind: "melee" as const, landed: true, critical: true }; + expect(wow335ShamanFlurryShouldProc(1, landedMeleeCritical)).toBe(true); + expect(wow335ShamanFlurryShouldProc(0, landedMeleeCritical)).toBe(false); + expect(wow335ShamanFlurryShouldProc(1, { ...landedMeleeCritical, landed: false })).toBe(false); + expect(wow335ShamanFlurryShouldProc(1, { ...landedMeleeCritical, critical: false })).toBe(false); + expect(wow335ShamanFlurryShouldProc(1, { ...landedMeleeCritical, attackKind: "spell" })).toBe(false); + expect(wow335ShamanFlurryShouldProc(1, { ...landedMeleeCritical, attackKind: "ranged" })).toBe(false); + }); + + it("keeps the tooltip display value distinct from the raw rank-two aura payload", () => { + const talent = wow335ShamanFlurryGeneratedSource()!; + expect(wow335ShamanFlurryProfileForRank(2)?.meleeHastePercent).toBe(6); + expect(talent.rankEffects[1]?.effects[1]?.basePoints).toBe(7); + }); + + it("applies the rank haste for 15 seconds and refreshes to three charges", () => { + const applied = wow335ShamanFlurryApplyProc([], "shaman-1", 2, 1_000); + expect(applied).toHaveLength(1); + expect(applied[0]).toMatchObject({ + sourceId: "shaman-1", + targetId: "shaman-1", + stacks: 3, + appliedAt: 1_000, + expiresAt: 1_000 + WOW335_SHAMAN_FLURRY_DURATION_MS, + definition: { + utilityTags: [WOW335_SHAMAN_FLURRY_AURA_TAG], + modifiers: [{ kind: "stat", stat: "melee-haste", operation: "flat", value: 6, perStack: false }], + }, + }); + + const decremented = wow335ShamanFlurryConsumeSwingCharge(applied, "shaman-1", 2_000); + expect(decremented[0]?.stacks).toBe(2); + expect(wow335ShamanFlurryApplyProc(decremented, "shaman-1", 1, 3_000)[0]).toMatchObject({ + stacks: 3, + appliedAt: 3_000, + expiresAt: 3_000 + WOW335_SHAMAN_FLURRY_DURATION_MS, + definition: { modifiers: [{ value: 4 }] }, + }); + }); + + it("does not consume another Shaman's charge or an expired aura", () => { + const active = wow335ShamanFlurryApplyProc([], "shaman-1", 1, 1_000); + const otherOwner = wow335ShamanFlurryApplyProc(active, "shaman-2", 1, 1_000); + expect(wow335ShamanFlurryConsumeSwingCharge(otherOwner, "shaman-1", 2_000)) + .toEqual(expect.arrayContaining([ + expect.objectContaining({ targetId: "shaman-1", stacks: 2 }), + expect.objectContaining({ targetId: "shaman-2", stacks: 3 }), + ])); + expect(wow335ShamanFlurryConsumeSwingCharge(active, "shaman-1", 16_000)).toEqual(active); + }); +}); diff --git a/src/game/wow335ShamanFlurryRuntime.ts b/src/game/wow335ShamanFlurryRuntime.ts new file mode 100644 index 00000000..a1124d19 --- /dev/null +++ b/src/game/wow335ShamanFlurryRuntime.ts @@ -0,0 +1,124 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import { applyAura, type ActiveAura, type AuraDefinition } from "./combatAuras"; +import type { WotlkAttackKind } from "./wotlkStats"; + +export const WOW335_SHAMAN_FLURRY_TALENT_ID = "talent-602"; +export const WOW335_SHAMAN_FLURRY_AURA_TAG = "wow335-shaman-flurry"; +/** Local child Spell.dbc rows 16257/16277/16278 map duration 8 to 15 seconds. */ +export const WOW335_SHAMAN_FLURRY_DURATION_MS = 15_000; + +const FLURRY_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_SHAMAN_FLURRY_TALENT_ID +)); + +export interface Wow335ShamanFlurryProfile { + readonly rank: number; + readonly meleeHastePercent: number; + readonly swingCharges: number; +} + +export interface Wow335ShamanFlurryTriggerEvent { + readonly attackKind: WotlkAttackKind; + readonly landed: boolean; + readonly critical: boolean; +} + +/** Reads Flurry's haste and swing count from the selected generated DBC tooltip rank. */ +export function wow335ShamanFlurryProfileForRank(rank: number): Wow335ShamanFlurryProfile | null { + const maxRank = FLURRY_SOURCE?.rankDescriptions.length ?? 0; + const safeRank = Number.isFinite(rank) ? Math.max(0, Math.min(maxRank, Math.trunc(rank))) : 0; + if (safeRank <= 0) return null; + + const description = FLURRY_SOURCE?.rankDescriptions[safeRank - 1]; + const match = description?.match( + /increases your melee attack speed by (\d+(?:\.\d+)?)% for your next (\d+) swings after dealing a melee critical strike/i, + ); + if (!match) return null; + + const meleeHastePercent = Number(match[1]); + const swingCharges = Number(match[2]); + return Number.isFinite(meleeHastePercent) && meleeHastePercent > 0 + && Number.isSafeInteger(swingCharges) && swingCharges > 0 + ? { rank: safeRank, meleeHastePercent, swingCharges } + : null; +} + +/** The generated tooltip triggers Flurry after a landed melee critical strike. */ +export function wow335ShamanFlurryShouldProc( + rank: number, + event: Wow335ShamanFlurryTriggerEvent, +): boolean { + return wow335ShamanFlurryProfileForRank(rank) !== null + && event.attackKind === "melee" + && event.landed + && event.critical; +} + +export function wow335ShamanFlurryAuraDefinition( + profile: Wow335ShamanFlurryProfile, +): AuraDefinition { + return { + id: WOW335_SHAMAN_FLURRY_AURA_TAG, + name: "Flurry", + description: `Melee attack speed increased by ${profile.meleeHastePercent}% for the next ${profile.swingCharges} swings.`, + disposition: "buff", + durationMs: WOW335_SHAMAN_FLURRY_DURATION_MS, + maxStacks: profile.swingCharges, + stackBehavior: "replace", + utilityTags: [WOW335_SHAMAN_FLURRY_AURA_TAG], + modifiers: [{ + kind: "stat", + stat: "melee-haste", + operation: "flat", + value: profile.meleeHastePercent, + perStack: false, + }], + }; +} + +/** Applies/refreshes the three swing charges after an eligible generated rank proc. */ +export function wow335ShamanFlurryApplyProc( + auras: readonly ActiveAura[], + actorId: string, + rank: number, + now: number, +): readonly ActiveAura[] { + const profile = wow335ShamanFlurryProfileForRank(rank); + if (!profile) return auras; + return applyAura(auras, { + definition: wow335ShamanFlurryAuraDefinition(profile), + sourceId: actorId, + targetId: actorId, + stacks: profile.swingCharges, + now, + }).auras; +} + +export function wow335ShamanFlurryIsActive( + auras: readonly ActiveAura[], + actorId: string, + now: number, +): boolean { + return auras.some((aura) => aura.sourceId === actorId && aura.targetId === actorId + && aura.definition.utilityTags?.includes(WOW335_SHAMAN_FLURRY_AURA_TAG) + && (aura.expiresAt === null || aura.expiresAt > now)); +} + +/** Consumes one active charge for a completed owner autoattack swing attempt. */ +export function wow335ShamanFlurryConsumeSwingCharge( + auras: readonly ActiveAura[], + actorId: string, + now: number, +): readonly ActiveAura[] { + return auras.flatMap((aura) => { + if (aura.sourceId !== actorId || aura.targetId !== actorId + || !aura.definition.utilityTags?.includes(WOW335_SHAMAN_FLURRY_AURA_TAG) + || (aura.expiresAt !== null && aura.expiresAt <= now)) return [aura]; + return aura.stacks > 1 ? [{ ...aura, stacks: aura.stacks - 1 }] : []; + }); +} + +/** Exposes the generated rank row for provenance checks and focused tests. */ +export function wow335ShamanFlurryGeneratedSource() { + return FLURRY_SOURCE ?? null; +} diff --git a/src/game/wow335ShamanImprovedEarthShieldRuntime.test.ts b/src/game/wow335ShamanImprovedEarthShieldRuntime.test.ts new file mode 100644 index 00000000..2e3d0902 --- /dev/null +++ b/src/game/wow335ShamanImprovedEarthShieldRuntime.test.ts @@ -0,0 +1,62 @@ +import { describe, expect, it } from "vitest"; +import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; +import { + WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_COOLDOWN_MS, + wow335ShamanImprovedEarthShieldHealingAmount, + wow335ShamanImprovedEarthShieldHealingBonusPercent, + wow335ShamanImprovedEarthShieldProcCharges, + wow335ShamanImprovedEarthShieldShouldGrantTidalWaves, +} from "./wow335ShamanImprovedEarthShieldRuntime"; + +function earthShieldProc() { + const earthShield = WOW335_ABILITIES_BY_CLASS.shaman.find((ability) => ability.name === "Earth Shield"); + expect(earthShield, "Shaman Earth Shield").toBeDefined(); + const proc = earthShield!.effects + .filter((effect) => effect.kind === "apply-aura") + .flatMap((effect) => effect.aura.procs ?? []) + .find((candidate) => candidate.id.endsWith(":earth-shield")); + expect(proc).toBeDefined(); + return proc!; +} + +describe("WoW Shaman Improved Earth Shield", () => { + it("adds generated rank charges to the local nine-charge proc without changing its three-second ICD", () => { + const proc = earthShieldProc(); + expect(proc.charges).toBe(9); + expect(proc.internalCooldownMs).toBe(3_000); + expect([1, 2, 3].map((rank) => wow335ShamanImprovedEarthShieldProcCharges(proc.charges ?? 0, rank))) + .toEqual([10, 11, 12]); + expect(proc.internalCooldownMs).toBe(3_000); + }); + + it("uses rank-scaled +5/10/15% healing on the local proc payload", () => { + const proc = earthShieldProc(); + expect(proc.action.kind).toBe("heal"); + if (proc.action.kind !== "heal") return; + + expect([0, 1, 2, 3].map(wow335ShamanImprovedEarthShieldHealingBonusPercent)).toEqual([0, 5, 10, 15]); + expect(wow335ShamanImprovedEarthShieldHealingAmount(proc.action.amount, 3)) + .toBe(Math.round(proc.action.amount * 1.15)); + expect(wow335ShamanImprovedEarthShieldHealingAmount(proc.action.amount, 3, 3)) + .toBe(Math.round(proc.action.amount * 1.3)); + }); + + it("grants the Tidal Waves rider only with both capstone ranks and respects its five-second ICD", () => { + expect(WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_COOLDOWN_MS).toBe(5_000); + expect(wow335ShamanImprovedEarthShieldShouldGrantTidalWaves(3, 3, null, 1_000)).toBe(true); + expect(wow335ShamanImprovedEarthShieldShouldGrantTidalWaves(2, 3, null, 1_000)).toBe(false); + expect(wow335ShamanImprovedEarthShieldShouldGrantTidalWaves(3, 2, null, 1_000)).toBe(false); + expect(wow335ShamanImprovedEarthShieldShouldGrantTidalWaves(3, 3, 1_000, 5_999)).toBe(false); + expect(wow335ShamanImprovedEarthShieldShouldGrantTidalWaves(3, 3, 1_000, 6_000)).toBe(true); + expect(wow335ShamanImprovedEarthShieldShouldGrantTidalWaves(3, 3, 6_000, 5_999)).toBe(false); + expect(wow335ShamanImprovedEarthShieldShouldGrantTidalWaves(3, 3, null, Number.NaN)).toBe(false); + }); + + it("bounds invalid ranks and amounts safely", () => { + expect(wow335ShamanImprovedEarthShieldProcCharges(9, Number.NaN)).toBe(9); + expect(wow335ShamanImprovedEarthShieldProcCharges(9, 99)).toBe(12); + expect(wow335ShamanImprovedEarthShieldHealingAmount(100, -1)).toBe(100); + expect(wow335ShamanImprovedEarthShieldHealingAmount(Number.NaN, 3)).toBe(0); + expect(wow335ShamanImprovedEarthShieldShouldGrantTidalWaves(3, 3, Number.NaN, 10_000)).toBe(false); + }); +}); diff --git a/src/game/wow335ShamanImprovedEarthShieldRuntime.ts b/src/game/wow335ShamanImprovedEarthShieldRuntime.ts new file mode 100644 index 00000000..62077f73 --- /dev/null +++ b/src/game/wow335ShamanImprovedEarthShieldRuntime.ts @@ -0,0 +1,54 @@ +import { wow335ShamanImprovedShieldOrbBonusPercent } from "./wow335ShamanImprovedShieldsRuntime"; + +/** Source ranks 51560, 51561, and 851561 from generated talent node 2059. */ +const EXTRA_CHARGES_BY_RANK = [0, 1, 2, 3] as const; +const HEALING_BONUS_PERCENT_BY_RANK = [0, 5, 10, 15] as const; + +export const WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_COOLDOWN_MS = 5_000; +export const WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_ICD_TAG = "wow335-shaman-improved-earth-shield-tidal-waves-icd"; + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) ? Math.max(0, Math.min(3, Math.trunc(rank))) : 0; +} + +/** Add the generated talent's extra charges to the local Earth Shield proc count. */ +export function wow335ShamanImprovedEarthShieldProcCharges(baseCharges: number, talentRank: number): number { + if (!Number.isFinite(baseCharges)) return 0; + return Math.max(0, Math.trunc(baseCharges)) + (EXTRA_CHARGES_BY_RANK[normalizedRank(talentRank)] ?? 0); +} + +export function wow335ShamanImprovedEarthShieldHealingBonusPercent(talentRank: number): number { + return HEALING_BONUS_PERCENT_BY_RANK[normalizedRank(talentRank)] ?? 0; +} + +/** Apply the generated Earth Shield heal bonus to the local proc payload. */ +export function wow335ShamanImprovedEarthShieldHealingAmount( + baseAmount: number, + talentRank: number, + improvedShieldsRank = 0, +): number { + if (!Number.isFinite(baseAmount)) return 0; + const amount = Math.max(0, baseAmount); + const bonusPercent = wow335ShamanImprovedEarthShieldHealingBonusPercent(talentRank) + + wow335ShamanImprovedShieldOrbBonusPercent("earth-shield", improvedShieldsRank); + return Math.round(amount * (1 + bonusPercent / 100)); +} + +/** + * The rank-three Improved Earth Shield rider grants Tidal Waves only when the + * Shaman also has Tidal Waves rank 3, and no more often than every five seconds. + * Call this when an Earth Shield heal proc has triggered; the caller owns the + * aura/proc event and stores the returned proc time on that Shaman. + */ +export function wow335ShamanImprovedEarthShieldShouldGrantTidalWaves( + improvedEarthShieldRank: number, + tidalWavesRank: number, + lastProcAt: number | null, + now: number, +): boolean { + if (normalizedRank(improvedEarthShieldRank) < 3 || normalizedRank(tidalWavesRank) < 3 + || !Number.isFinite(now)) return false; + if (lastProcAt === null) return true; + return Number.isFinite(lastProcAt) + && now - lastProcAt >= WOW335_SHAMAN_IMPROVED_EARTH_SHIELD_TIDAL_WAVES_COOLDOWN_MS; +} diff --git a/src/game/wow335ShamanImprovedShieldsRuntime.test.ts b/src/game/wow335ShamanImprovedShieldsRuntime.test.ts new file mode 100644 index 00000000..c1c75f6a --- /dev/null +++ b/src/game/wow335ShamanImprovedShieldsRuntime.test.ts @@ -0,0 +1,55 @@ +import { describe, expect, it } from "vitest"; +import { abilityAtLevel } from "./abilityCatalog"; +import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; +import { + wow335ShamanImprovedShieldOrbAmount, + wow335ShamanImprovedShieldOrbBonusPercent, +} from "./wow335ShamanImprovedShieldsRuntime"; + +function shieldProc(name: string, suffix: string) { + const ability = WOW335_ABILITIES_BY_CLASS.shaman.find((candidate) => candidate.name === name); + expect(ability, `Shaman ${name}`).toBeDefined(); + const ranked = abilityAtLevel(ability!, 80); + const proc = ranked.effects + .filter((effect) => effect.kind === "apply-aura") + .flatMap((effect) => effect.aura.procs ?? []) + .find((candidate) => candidate.id.endsWith(suffix)); + expect(proc, `${name} ${suffix} proc`).toBeDefined(); + return proc!; +} + +describe("WoW Shaman Improved Shields orb bonuses", () => { + it.each([ + ["lightning-shield", false, [0, 20, 40, 60]], + ["lightning-shield", true, [0, 10, 20, 30]], + ["earth-shield", false, [0, 5, 10, 15]], + ["earth-shield", true, [0, 5, 10, 15]], + ] as const)("uses generated %s rank bonuses against playerTarget=%s", (kind, isPlayerTarget, expected) => { + expect([0, 1, 2, 3].map((rank) => ( + wow335ShamanImprovedShieldOrbBonusPercent(kind, rank, isPlayerTarget) + ))).toEqual(expected); + }); + + it("scales the local Lightning Shield damage and Earth Shield healing proc payloads", () => { + const lightning = shieldProc("Lightning Shield", ":lightning-shield"); + const earth = shieldProc("Earth Shield", ":earth-shield"); + expect(lightning.action.kind).toBe("damage"); + expect(earth.action.kind).toBe("heal"); + if (lightning.action.kind !== "damage" || earth.action.kind !== "heal") return; + + expect(wow335ShamanImprovedShieldOrbAmount(lightning.action.amount, "lightning-shield", 3)) + .toBe(Math.round(lightning.action.amount * 1.6)); + expect(wow335ShamanImprovedShieldOrbAmount(lightning.action.amount, "lightning-shield", 3, true)) + .toBe(Math.round(lightning.action.amount * 1.3)); + expect(wow335ShamanImprovedShieldOrbAmount(earth.action.amount, "earth-shield", 3)) + .toBe(Math.round(earth.action.amount * 1.15)); + }); + + it("treats missing/invalid ranks and invalid amounts safely", () => { + expect(wow335ShamanImprovedShieldOrbBonusPercent("lightning-shield", Number.NaN)).toBe(0); + expect(wow335ShamanImprovedShieldOrbBonusPercent("earth-shield", Number.POSITIVE_INFINITY)).toBe(0); + expect(wow335ShamanImprovedShieldOrbBonusPercent("lightning-shield", 99)).toBe(60); + expect(wow335ShamanImprovedShieldOrbAmount(100, "earth-shield", -1)).toBe(100); + expect(wow335ShamanImprovedShieldOrbAmount(Number.NaN, "earth-shield", 3)).toBe(0); + }); +}); diff --git a/src/game/wow335ShamanImprovedShieldsRuntime.ts b/src/game/wow335ShamanImprovedShieldsRuntime.ts new file mode 100644 index 00000000..53d7502b --- /dev/null +++ b/src/game/wow335ShamanImprovedShieldsRuntime.ts @@ -0,0 +1,41 @@ +/** + * Rank values from generated WoW talent node `talent-607` (Improved Shields), + * source ranks 16261/16290/51881. Its tooltip independently improves Lightning + * Shield damage and Earth Shield healing; Water Shield mana has its own helper. + */ +const LIGHTNING_SHIELD_DAMAGE_BONUS_BY_RANK = [0, 20, 40, 60] as const; +const LIGHTNING_SHIELD_PVP_DAMAGE_BONUS_BY_RANK = [0, 10, 20, 30] as const; +const EARTH_SHIELD_HEALING_BONUS_BY_RANK = [0, 5, 10, 15] as const; + +export type ImprovedShieldOrbKind = "lightning-shield" | "earth-shield"; + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) ? Math.max(0, Math.min(3, Math.trunc(rank))) : 0; +} + +export function wow335ShamanImprovedShieldOrbBonusPercent( + kind: ImprovedShieldOrbKind, + rank: number, + isPlayerTarget = false, +): number { + const index = normalizedRank(rank); + if (kind === "lightning-shield") { + return (isPlayerTarget + ? LIGHTNING_SHIELD_PVP_DAMAGE_BONUS_BY_RANK + : LIGHTNING_SHIELD_DAMAGE_BONUS_BY_RANK)[index] ?? 0; + } + return EARTH_SHIELD_HEALING_BONUS_BY_RANK[index] ?? 0; +} + +/** Apply the generated Improved Shields bonus to one local shield proc amount. */ +export function wow335ShamanImprovedShieldOrbAmount( + baseAmount: number, + kind: ImprovedShieldOrbKind, + rank: number, + isPlayerTarget = false, +): number { + if (!Number.isFinite(baseAmount)) return 0; + const amount = Math.max(0, baseAmount); + const bonusPercent = wow335ShamanImprovedShieldOrbBonusPercent(kind, rank, isPlayerTarget); + return Math.round(amount * (1 + bonusPercent / 100)); +} diff --git a/src/game/wow335ShamanImprovedWaterShieldRuntime.test.ts b/src/game/wow335ShamanImprovedWaterShieldRuntime.test.ts index 90e803ba..465e824d 100644 --- a/src/game/wow335ShamanImprovedWaterShieldRuntime.test.ts +++ b/src/game/wow335ShamanImprovedWaterShieldRuntime.test.ts @@ -5,6 +5,7 @@ import { wow335ShamanImprovedWaterShieldCappedRestore, wow335ShamanImprovedWaterShieldProcChance, wow335ShamanImprovedWaterShieldShouldProc, + wow335ShamanImprovedShieldsWaterShieldManaBonusPercent, wow335ShamanWaterShieldOrbManaAtLevel, } from "./wow335ShamanImprovedWaterShieldRuntime"; @@ -25,7 +26,7 @@ function prepareShaman(): void { maxResource: 10_000, resourcePools: { ...state.resourcePools, mana: 8_000 }, maxResourcePools: { ...state.maxResourcePools, mana: 10_000 }, - talentRanks: { ...state.talentRanks, "talent-583": 3 }, + talentRanks: { ...state.talentRanks, "talent-583": 3, "talent-607": 3 }, })); } @@ -62,6 +63,10 @@ describe("WoW Shaman Improved Water Shield", () => { expect(wow335ShamanImprovedWaterShieldShouldProc(3, "Healing Wave", "nature", true, 0.6)).toBe(false); expect(wow335ShamanWaterShieldOrbManaAtLevel(80)).toBe(400); expect(wow335ShamanWaterShieldOrbManaAtLevel(70)).toBe(200); + expect([0, 1, 2, 3].map(wow335ShamanImprovedShieldsWaterShieldManaBonusPercent)) + .toEqual([0, 5, 10, 15]); + expect(wow335ShamanWaterShieldOrbManaAtLevel(80, 3)).toBe(460); + expect(wow335ShamanWaterShieldOrbManaAtLevel(80, Number.NaN)).toBe(400); expect(wow335ShamanImprovedWaterShieldCappedRestore(100, 200, 400)).toBe(100); }); @@ -93,8 +98,8 @@ describe("WoW Shaman Improved Water Shield", () => { expect(useCombatStore.getState().combatEvents).toContainEqual(expect.objectContaining({ kind: "resource", abilityId: "wow335-shaman-improved-water-shield", - rawAmount: 400, - effectiveAmount: 400, + rawAmount: 460, + effectiveAmount: 460, })); }); diff --git a/src/game/wow335ShamanImprovedWaterShieldRuntime.ts b/src/game/wow335ShamanImprovedWaterShieldRuntime.ts index 17f22595..b8a82380 100644 --- a/src/game/wow335ShamanImprovedWaterShieldRuntime.ts +++ b/src/game/wow335ShamanImprovedWaterShieldRuntime.ts @@ -3,6 +3,14 @@ import { WOW335_ABILITIES_BY_CLASS } from "./wow335AbilityCatalog"; const IMPROVED_WATER_SHIELD_CRITICAL_CHANCE_BY_RANK = [0, 0.1, 0.2, 0.3] as const; const IMPROVED_WATER_SHIELD_NORMAL_CHANCE_BY_RANK = [0, 0.05, 0.1, 0.15] as const; +const IMPROVED_SHIELDS_WATER_SHIELD_MANA_BONUS_BY_RANK = [0, 5, 10, 15] as const; + +export function wow335ShamanImprovedShieldsWaterShieldManaBonusPercent(rank: number): number { + const normalizedRank = Number.isFinite(rank) + ? Math.max(0, Math.min(3, Math.trunc(rank))) + : 0; + return IMPROVED_SHIELDS_WATER_SHIELD_MANA_BONUS_BY_RANK[normalizedRank] ?? 0; +} export function wow335ShamanImprovedWaterShieldProcChance( rank: number, @@ -32,7 +40,7 @@ export function wow335ShamanImprovedWaterShieldShouldProc( return chance > 0 && Number.isFinite(roll) && roll >= 0 && roll < chance; } -export function wow335ShamanWaterShieldOrbManaAtLevel(level: number): number { +export function wow335ShamanWaterShieldOrbManaAtLevel(level: number, improvedShieldsRank = 0): number { const waterShield = WOW335_ABILITIES_BY_CLASS.shaman.find((ability) => ability.name === "Water Shield"); if (!waterShield) return 0; const rankedWaterShield = abilityAtLevel(waterShield, level); @@ -44,7 +52,9 @@ export function wow335ShamanWaterShieldOrbManaAtLevel(level: number): number { .find((proc) => proc.id.endsWith(":water-shield") && proc.action.kind === "resource" && proc.action.resource === "mana"); - return orbProc?.action.kind === "resource" ? Math.max(0, orbProc.action.amount) : 0; + if (orbProc?.action.kind !== "resource") return 0; + const baseMana = Math.max(0, orbProc.action.amount); + return Math.round(baseMana * (1 + wow335ShamanImprovedShieldsWaterShieldManaBonusPercent(improvedShieldsRank) / 100)); } export function wow335ShamanImprovedWaterShieldCappedRestore( diff --git a/src/game/wow335ShamanLightningOverload.integration.test.ts b/src/game/wow335ShamanLightningOverload.integration.test.ts new file mode 100644 index 00000000..7ace5cb0 --- /dev/null +++ b/src/game/wow335ShamanLightningOverload.integration.test.ts @@ -0,0 +1,184 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { abilityAtLevel, abilitiesForClass, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { wow335ShamanLightningOverloadProfileForRank } from "./wow335ShamanLightningOverloadRuntime"; + +const TARGET_ID = "lightning-overload-target"; +const BASE_NOW = 10_000; +const TALENT_ID = "talent-1686"; + +function stableUnit(seed: string): number { + let hash = 2_166_136_261; + for (const character of seed) { + hash ^= character.charCodeAt(0); + hash = Math.imul(hash, 16_777_619); + } + return (hash >>> 0) / 0x1_0000_0000; +} + +function findProcTime(seedForTime: (time: number) => string, after: number): number { + for (let time = after; time < after + 100_000; time += 1) { + if (stableUnit(seedForTime(time)) < 0.2) return time; + } + throw new Error("Could not find a deterministic Lightning Overload proc timestamp."); +} + +function setupPlayerShaman(rank: number, targetId: string) { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "shaman", level: 80, xp: 0 }); + useCombatStore.setState((state) => ({ + gearStats: { ...state.gearStats, hitRating: 100_000, criticalStrikeRating: 0 }, + talentRanks: { ...state.talentRanks, [TALENT_ID]: rank }, + })); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + useCombatStore.getState().registerMob(targetId, { + name: "Lightning Overload target", + level: 80, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(targetId, [8, 0, 0]); + useCombatStore.getState().selectMob(targetId); + return useCombatStore.getState().abilities.find((ability) => ability.name === "Lightning Bolt")!; +} + +async function setupPartyShaman() { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + await preloadAbilityCatalogsForClasses(["shaman"]); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80, xp: 0 }); + useCombatStore.setState({ auras: [], effects: [], combatEvents: [] }); + usePartyStore.getState().initializeParty("lightning-overload-party", 80, + useCombatStore.getState().health, "damage", 1); + const abilities = abilitiesForClass("shaman"); + const lightningBolt = abilityAtLevel( + abilities.find((ability) => ability.name === "Lightning Bolt")!, + 80, + ); + const base = createConfiguredPartyMember({ + name: "Lightning Overload Shaman", + classId: "shaman", + specialization: "Elemental", + specializationId: "shaman:elemental", + talentTreeId: "shaman-elemental", + talentRanks: { [TALENT_ID]: 3 }, + role: "damage", + }, 80, 0, "lightning-overload-party"); + const member = { + ...base, + talentRanks: { ...base.talentRanks, [TALENT_ID]: 3 }, + gearStats: { ...EMPTY_ITEM_STATS, hitRating: 100_000, criticalStrikeRating: 0, spellPower: 500 }, + resource: 100_000, + maxResource: 100_000, + resourcePools: { ...base.resourcePools, mana: 100_000 }, + cooldowns: Object.fromEntries(abilities + .filter((ability) => !ability.passive) + .map((ability) => [ability.id, ability.id === lightningBolt.id ? 0 : BASE_NOW + 100_000])), + nextActionAt: 0, + activeCast: null, + activeCastTargetId: null, + status: "ready" as const, + }; + usePartyStore.setState({ members: [member], command: "attack", activeMobId: TARGET_ID }); + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Lightning Overload target", + level: 80, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [8, 0, 0]); + useCombatStore.getState().damageMob(TARGET_ID, 1, BASE_NOW - 1); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + useCombatStore.getState().synchronizeActors(); + return { member, lightningBolt }; +} + +describe("WoW Shaman Lightning Overload cast runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + }); + + it("creates a same-target half-damage player echo without adding threat", () => { + const run = (rank: number) => { + const targetId = `${TARGET_ID}-${rank}`; + const lightningBolt = setupPlayerShaman(rank, targetId); + const hitTime = findProcTime( + (time) => `${PLAYER_AGGRO_ID}:${lightningBolt.id}:${targetId}:${time}:direct:wow335-shaman-lightning-overload`, + BASE_NOW + 10_000, + ); + const cast = useCombatStore.getState().castAbility(lightningBolt.id, { now: BASE_NOW }); + expect(cast.ok, JSON.stringify(cast)).toBe(true); + const activeCast = useCombatStore.getState().activeCast; + expect(activeCast).not.toBeNull(); + useCombatStore.setState((state) => ({ + activeCast: state.activeCast ? { ...state.activeCast, completesAt: hitTime } : null, + })); + useCombatStore.getState().tick(0.1, hitTime); + const events = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.targetActorId === targetId && event.abilityId === lightningBolt.id + )); + return { + events, + threat: useCombatStore.getState().mobs[targetId]!.threatByActor[PLAYER_AGGRO_ID] ?? 0, + }; + }; + + const baseline = run(0); + const overloaded = run(3); + expect(baseline.events).toHaveLength(1); + expect(overloaded.events).toHaveLength(2); + expect(overloaded.events[0]?.effectiveAmount).toBeGreaterThan(0); + expect(overloaded.events[1]?.effectiveAmount).toBeGreaterThan(0); + expect(overloaded.events[1]).toMatchObject({ sourceActorId: PLAYER_AGGRO_ID, school: "nature" }); + expect(overloaded.threat).toBe(baseline.threat); + }); + + it("creates a same-target companion echo with no threat", async () => { + const { member, lightningBolt } = await setupPartyShaman(); + const talentProfile = wow335ShamanLightningOverloadProfileForRank(3)!; + const castStartedAt = BASE_NOW; + advanceDungeonPartyCombat(castStartedAt); + const castingMember = usePartyStore.getState().members.find((candidate) => candidate.id === member.id)!; + expect(castingMember.activeCast?.abilityId).toBe(lightningBolt.id); + const hitTime = findProcTime( + (time) => `${member.id}:${lightningBolt.id}:${TARGET_ID}:${time}:wow335-shaman-lightning-overload`, + castStartedAt + 3_000, + ); + usePartyStore.setState((state) => ({ + members: state.members.map((candidate) => candidate.id === member.id + ? { ...candidate, activeCast: candidate.activeCast + ? { ...candidate.activeCast, completesAt: hitTime } + : null } + : candidate), + })); + useCombatStore.getState().commitCompanionActors(usePartyStore.getState().members); + advanceDungeonPartyCombat(hitTime); + + const events = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.sourceActorId === member.id + && event.targetActorId === TARGET_ID && event.abilityId === lightningBolt.id + )); + expect(events).toHaveLength(2); + expect(events.every((event) => event.effectiveAmount > 0)).toBe(true); + expect(events[1]).toMatchObject({ sourceActorId: member.id, school: "nature" }); + expect(useCombatStore.getState().mobs[TARGET_ID]!.threatByActor[member.id]) + .toBe(events[0]!.effectiveAmount); + expect(talentProfile.threatScale).toBe(0); + }); +}); diff --git a/src/game/wow335ShamanLightningOverloadRuntime.test.ts b/src/game/wow335ShamanLightningOverloadRuntime.test.ts new file mode 100644 index 00000000..d9fc47f1 --- /dev/null +++ b/src/game/wow335ShamanLightningOverloadRuntime.test.ts @@ -0,0 +1,38 @@ +import { describe, expect, it } from "vitest"; +import { + wow335ShamanLightningOverloadDamageAmount, + wow335ShamanLightningOverloadProfileForRank, + wow335ShamanLightningOverloadShouldProc, +} from "./wow335ShamanLightningOverloadRuntime"; + +describe("WoW Shaman Lightning Overload", () => { + it("reads rank chance from the generated talent and models half damage with no threat", () => { + expect(wow335ShamanLightningOverloadProfileForRank(0)).toBeNull(); + expect(wow335ShamanLightningOverloadProfileForRank(1)).toMatchObject({ + procChancePercent: 7, + criticalProcChancePercent: 21, + damageMultiplier: 0.5, + threatScale: 0, + }); + expect(wow335ShamanLightningOverloadProfileForRank(2)?.procChancePercent).toBe(14); + expect(wow335ShamanLightningOverloadProfileForRank(3)).toMatchObject({ + procChancePercent: 20, + criticalProcChancePercent: 60, + eligibleAbilityNames: ["Lightning Bolt", "Chain Lightning"], + }); + expect(wow335ShamanLightningOverloadDamageAmount(101)).toBe(51); + expect(wow335ShamanLightningOverloadDamageAmount(-1)).toBe(0); + }); + + it("requires a landed direct Lightning Bolt or Chain Lightning hit and triples only critical-hit chance", () => { + const rankOne = wow335ShamanLightningOverloadProfileForRank(1); + expect(wow335ShamanLightningOverloadShouldProc(rankOne, "Lightning Bolt", true, false, false, 0.069)).toBe(true); + expect(wow335ShamanLightningOverloadShouldProc(rankOne, "Lightning Bolt", true, false, false, 0.07)).toBe(false); + expect(wow335ShamanLightningOverloadShouldProc(rankOne, "Chain Lightning", true, true, false, 0.20)).toBe(true); + expect(wow335ShamanLightningOverloadShouldProc(rankOne, "Chain Lightning", true, true, false, 0.21)).toBe(false); + expect(wow335ShamanLightningOverloadShouldProc(rankOne, "Lava Burst", true, true, false, 0)).toBe(false); + expect(wow335ShamanLightningOverloadShouldProc(rankOne, "Lightning Bolt", false, true, false, 0)).toBe(false); + expect(wow335ShamanLightningOverloadShouldProc(rankOne, "Lightning Bolt", true, true, true, 0)).toBe(false); + expect(wow335ShamanLightningOverloadShouldProc(rankOne, "Lightning Bolt", true, true, false, 1)).toBe(false); + }); +}); diff --git a/src/game/wow335ShamanLightningOverloadRuntime.ts b/src/game/wow335ShamanLightningOverloadRuntime.ts new file mode 100644 index 00000000..4618589c --- /dev/null +++ b/src/game/wow335ShamanLightningOverloadRuntime.ts @@ -0,0 +1,63 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_SHAMAN_LIGHTNING_OVERLOAD_TALENT_ID = "talent-1686"; +export const WOW335_SHAMAN_LIGHTNING_OVERLOAD_PROC_TAG = "wow335-shaman-lightning-overload"; +export const WOW335_SHAMAN_LIGHTNING_OVERLOAD_DAMAGE_MULTIPLIER = 0.5; + +const LIGHTNING_OVERLOAD_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_SHAMAN_LIGHTNING_OVERLOAD_TALENT_ID +)); +const LIGHTNING_OVERLOAD_ABILITIES = new Set(["Lightning Bolt", "Chain Lightning"]); + +export interface Wow335ShamanLightningOverloadProfile { + readonly procChancePercent: number; + readonly criticalProcChancePercent: number; + readonly damageMultiplier: number; + readonly eligibleAbilityNames: readonly string[]; + readonly threatScale: 0; +} + +/** Reads the stock Shaman talent's proc rate from the generated local rank tooltip. */ +export function wow335ShamanLightningOverloadProfileForRank( + rank: number, +): Wow335ShamanLightningOverloadProfile | null { + const maximumRank = LIGHTNING_OVERLOAD_SOURCE?.rankDescriptions.length ?? 3; + const safeRank = Math.max(0, Math.min(maximumRank, Math.trunc(Number.isFinite(rank) ? rank : 0))); + const description = safeRank > 0 + ? LIGHTNING_OVERLOAD_SOURCE?.rankDescriptions[safeRank - 1] + : undefined; + const match = description?.match(/Gives your Lightning Bolt and Chain Lightning spells a (\d+(?:\.\d+)?)% chance.*?half damage and no threat\. This chance is tripled for critical strikes\./i); + if (!match) return null; + const procChancePercent = Number(match[1]); + if (!Number.isFinite(procChancePercent) || procChancePercent <= 0) return null; + return { + procChancePercent, + criticalProcChancePercent: procChancePercent * 3, + damageMultiplier: WOW335_SHAMAN_LIGHTNING_OVERLOAD_DAMAGE_MULTIPLIER, + eligibleAbilityNames: [...LIGHTNING_OVERLOAD_ABILITIES], + threatScale: 0, + }; +} + +/** A successful eligible direct hit rolls once; critical hits triple the rank chance. */ +export function wow335ShamanLightningOverloadShouldProc( + profile: Wow335ShamanLightningOverloadProfile | null, + abilityName: string, + landed: boolean, + critical: boolean, + periodic: boolean, + roll: number, +): boolean { + if (!profile || !LIGHTNING_OVERLOAD_ABILITIES.has(abilityName) || !landed || periodic + || !Number.isFinite(roll) || roll < 0 || roll >= 1) return false; + const chancePercent = critical ? profile.criticalProcChancePercent : profile.procChancePercent; + return roll < chancePercent / 100; +} + +/** The triggered similar spell deals half of the initiating spell's pre-defense amount. */ +export function wow335ShamanLightningOverloadDamageAmount( + initiatingSpellAmount: number, +): number { + return Math.max(0, Math.round(Math.max(0, Number.isFinite(initiatingSpellAmount) ? initiatingSpellAmount : 0) + * WOW335_SHAMAN_LIGHTNING_OVERLOAD_DAMAGE_MULTIPLIER)); +} diff --git a/src/game/wow335ShamanMaelstromWeaponCombatRuntime.test.ts b/src/game/wow335ShamanMaelstromWeaponCombatRuntime.test.ts index 4135fccf..5bf99c9f 100644 --- a/src/game/wow335ShamanMaelstromWeaponCombatRuntime.test.ts +++ b/src/game/wow335ShamanMaelstromWeaponCombatRuntime.test.ts @@ -1,6 +1,7 @@ import { beforeEach, describe, expect, it } from "vitest"; import { PLAYER_AURA_ENTITY_ID, resolvedAbilityCosts, useCombatStore } from "./combatStore"; import { abilityAtLevel, abilityById } from "./abilityCatalog"; +import { applyAura } from "./combatAuras"; import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; import { clearPartyRuntimeRegistry } from "./partyRuntimeRegistry"; import { EMPTY_ITEM_STATS } from "./itemStats"; @@ -46,6 +47,49 @@ function stableCombatUnit(seed: string): number { return (hash >>> 0) / 0x1_0000_0000; } +function markTargetAsCharacterDefender(): void { + useCombatStore.setState((state) => ({ + mobs: { + ...state.mobs, + [TARGET_ID]: { ...state.mobs[TARGET_ID]!, characterDefender: { level: 80 } }, + }, + })); +} + +function grantMaelstrom(stacks: number, now: number): void { + const definition = { + id: "wow335:shaman:maelstrom-weapon", + name: "Maelstrom Weapon", + description: "Your next listed spell has its cast time reduced by 20% per stack.", + disposition: "buff" as const, + durationMs: 30_000, + maxStacks: 5, + initialStacks: 1, + stackBehavior: "add" as const, + utilityTags: [WOW335_SHAMAN_MAELSTROM_WEAPON_AURA_TAG], + }; + useCombatStore.setState((state) => ({ + auras: [...applyAura(state.auras, { + definition, + sourceId: PLAYER_AURA_ENTITY_ID, + targetId: PLAYER_AURA_ENTITY_ID, + stacks, + now, + }).auras], + })); +} + +function firstPlayerLightningBoltDamage(): number { + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "damage" + && candidate.sourceActorId === PLAYER_AURA_ENTITY_ID + && candidate.targetActorId === TARGET_ID + && candidate.abilityId === shamanAbility("Lightning Bolt").id + )); + expect(event, "player Lightning Bolt damage event").toBeDefined(); + return event!.effectiveAmount; +} + function setupShaman(): void { clearMobRuntimeRegistry(); clearPartyRuntimeRegistry(); @@ -97,9 +141,10 @@ function setupShaman(): void { useCombatStore.getState().selectMob(TARGET_ID); } -function cast(abilityId: string, now: number, targetActorId: string | null = TARGET_ID): void { +function cast(abilityId: string, now: number, targetActorId: string | null = TARGET_ID) { const result = useCombatStore.getState().castAbility(abilityId, { targetActorId, now }); expect(result.ok, JSON.stringify(result)).toBe(true); + return result; } describe("WoW Shaman Maelstrom Weapon combat runtime", () => { @@ -326,4 +371,97 @@ describe("WoW Shaman Maelstrom Weapon combat runtime", () => { expect(activeCast!.completesAt! - activeCast!.startedAt!).toBe(2_500); expect(maelstromAura()?.expiresAt).toBe(3_000); }); + + it("reduces instant Lightning Bolt damage only against a character defender, capped at five stacks", () => { + const run = (stacks: number, characterDefender: boolean): number => { + setupShaman(); + setMaelstromRank(3); + if (characterDefender) markTargetAsCharacterDefender(); + const lightningBolt = shamanAbility("Lightning Bolt"); + if (stacks > 0) grantMaelstrom(stacks, 5_000); + + cast(lightningBolt.id, 5_000); + const activeCast = useCombatStore.getState().activeCast; + if (activeCast) { + useCombatStore.setState((state) => ({ + activeCast: state.activeCast ? { ...state.activeCast, completesAt: 7_500 } : null, + })); + useCombatStore.getState().tick(0.1, 7_500); + } + return firstPlayerLightningBoltDamage(); + }; + + const pvpBaseline = run(0, true); + const pvpFiveStacks = run(5, true); + expect(pvpBaseline).toBeGreaterThan(0); + expect(pvpFiveStacks).toBe(Math.round(pvpBaseline * 0.9)); + + const npcBaseline = run(0, false); + const npcFiveStacks = run(5, false); + expect(npcFiveStacks).toBe(npcBaseline); + }); + + it("retains consumed Maelstrom stacks through cast completion and channel pulses", () => { + const runCast = (stacks: number): { readonly damage: number; readonly snapshot: unknown } => { + setupShaman(); + setMaelstromRank(3); + markTargetAsCharacterDefender(); + const lightningBolt = shamanAbility("Lightning Bolt"); + if (stacks > 0) grantMaelstrom(stacks, 5_000); + cast(lightningBolt.id, 5_000); + const activeCast = useCombatStore.getState().activeCast; + expect(activeCast).not.toBeNull(); + const snapshot = { + rank: activeCast!.maelstromWeaponRank, + stacks: activeCast!.maelstromWeaponStacksConsumed, + }; + expect(maelstromAura()).toBeUndefined(); + useCombatStore.setState((state) => ({ + activeCast: state.activeCast ? { ...state.activeCast, completesAt: 20_000 } : null, + ...(stacks > 0 ? { talentRanks: { ...state.talentRanks, "talent-2057": 0 } } : {}), + })); + useCombatStore.getState().tick(0.1, 20_000); + return { damage: firstPlayerLightningBoltDamage(), snapshot }; + }; + + const castBaseline = runCast(0); + const castWithStacks = runCast(3); + expect(castWithStacks.snapshot).toEqual({ rank: 3, stacks: 3 }); + expect(castWithStacks.damage).toBe(Math.round(castBaseline.damage * 0.94)); + + const runChannel = (stacks: number): { readonly damage: number; readonly snapshot: unknown } => { + setupShaman(); + setMaelstromRank(3); + markTargetAsCharacterDefender(); + const lightningBolt = shamanAbility("Lightning Bolt"); + if (stacks > 0) grantMaelstrom(stacks, 5_000); + cast(lightningBolt.id, 5_000); + const activeCast = useCombatStore.getState().activeCast; + expect(activeCast).not.toBeNull(); + const snapshot = { + rank: activeCast!.maelstromWeaponRank, + stacks: activeCast!.maelstromWeaponStacksConsumed, + }; + expect(maelstromAura()).toBeUndefined(); + useCombatStore.setState((state) => ({ + activeCast: state.activeCast ? { + ...state.activeCast, + mode: "channel", + totalTicks: 2, + ticksCompleted: 0, + originalDurationMs: 2_000, + completesAt: 7_000, + nextTickAt: 6_000, + } : null, + ...(stacks > 0 ? { talentRanks: { ...state.talentRanks, "talent-2057": 0 } } : {}), + })); + useCombatStore.getState().tick(0.1, 6_000); + return { damage: firstPlayerLightningBoltDamage(), snapshot }; + }; + + const channelBaseline = runChannel(0); + const channelWithStacks = runChannel(3); + expect(channelWithStacks.snapshot).toEqual({ rank: 3, stacks: 3 }); + expect(channelWithStacks.damage).toBe(Math.round(channelBaseline.damage * 0.94)); + }); }); diff --git a/src/game/wow335ShamanMaelstromWeaponRuntime.test.ts b/src/game/wow335ShamanMaelstromWeaponRuntime.test.ts index 98806c83..e07d6671 100644 --- a/src/game/wow335ShamanMaelstromWeaponRuntime.test.ts +++ b/src/game/wow335ShamanMaelstromWeaponRuntime.test.ts @@ -4,6 +4,7 @@ import { WOW335_SHAMAN_MAELSTROM_WEAPON_ELIGIBLE_SPELLS, WOW335_SHAMAN_MAELSTROM_WEAPON_DURATION_MS, wow335ShamanMaelstromWeaponCastTimeReductionPercent, + wow335ShamanMaelstromWeaponPvpDamageReductionPercent, wow335ShamanMaelstromWeaponProfile, } from "./wow335ShamanMaelstromWeaponRuntime"; @@ -21,6 +22,7 @@ describe("WoW Shaman Maelstrom Weapon source profile", () => { durationMs: WOW335_SHAMAN_MAELSTROM_WEAPON_DURATION_MS, maxStacks: 5, castTimeReductionPerStackPercent: 20, + pvpDamageReductionPerStackPercent: 2, }); }); @@ -52,6 +54,20 @@ describe("WoW Shaman Maelstrom Weapon source profile", () => { expect(wow335ShamanMaelstromWeaponCastTimeReductionPercent(profile, -2)).toBe(0); }); + it.each([1, 2, 3])("reduces eligible spell damage by 2%% per consumed stack at rank %i", (rank) => { + expect(wow335ShamanMaelstromWeaponPvpDamageReductionPercent(rank, 1, "Lightning Bolt")).toBe(2); + expect(wow335ShamanMaelstromWeaponPvpDamageReductionPercent(rank, 3, "Chain Lightning")).toBe(6); + expect(wow335ShamanMaelstromWeaponPvpDamageReductionPercent(rank, 5, "Lava Burst")).toBe(10); + expect(wow335ShamanMaelstromWeaponPvpDamageReductionPercent(rank, 8, "Fireball")).toBe(10); + }); + + it("does not reduce healing, unlisted spells, or damage without consumed stacks", () => { + expect(wow335ShamanMaelstromWeaponPvpDamageReductionPercent(3, 5, "Lesser Healing Wave")).toBe(0); + expect(wow335ShamanMaelstromWeaponPvpDamageReductionPercent(3, 5, "Healing Wave")).toBe(0); + expect(wow335ShamanMaelstromWeaponPvpDamageReductionPercent(3, 0, "Lightning Bolt")).toBe(0); + expect(wow335ShamanMaelstromWeaponPvpDamageReductionPercent(0, 5, "Lightning Bolt")).toBe(0); + }); + it("rejects an unlearned rank or invalid weapon speed", () => { expect(wow335ShamanMaelstromWeaponProfile(0)).toBeNull(); expect(wow335ShamanMaelstromWeaponProfile(-1)).toBeNull(); diff --git a/src/game/wow335ShamanMaelstromWeaponRuntime.ts b/src/game/wow335ShamanMaelstromWeaponRuntime.ts index f58281a2..53f5bfbf 100644 --- a/src/game/wow335ShamanMaelstromWeaponRuntime.ts +++ b/src/game/wow335ShamanMaelstromWeaponRuntime.ts @@ -33,6 +33,7 @@ export interface Wow335ShamanMaelstromWeaponProfile { readonly durationMs: number; readonly maxStacks: number; readonly castTimeReductionPerStackPercent: number; + readonly pvpDamageReductionPerStackPercent: number; } /** @@ -55,8 +56,12 @@ export function wow335ShamanMaelstromWeaponProfile( const castTimeReductionPerStackPercent = Number(rankDescription.match(/reduce the cast time .*? by (\d+)%/i)?.[1]); const maxStacks = Number(rankDescription.match(/Stacks up to (\d+)/i)?.[1]); + const pvpDamageReductionPerStackPercent = Number( + rankDescription.match(/deal (\d+)% reduced damage in PvP combat per stack/i)?.[1], + ); if (!Number.isFinite(castTimeReductionPerStackPercent) || castTimeReductionPerStackPercent <= 0 - || !Number.isFinite(maxStacks) || maxStacks <= 0) return null; + || !Number.isFinite(maxStacks) || maxStacks <= 0 + || !Number.isFinite(pvpDamageReductionPerStackPercent) || pvpDamageReductionPerStackPercent < 0) return null; const procsPerMinute = WOW335_SHAMAN_MAELSTROM_WEAPON_PROCS_PER_MINUTE[safeRank - 1]; return { @@ -69,6 +74,7 @@ export function wow335ShamanMaelstromWeaponProfile( durationMs: WOW335_SHAMAN_MAELSTROM_WEAPON_DURATION_MS, maxStacks, castTimeReductionPerStackPercent, + pvpDamageReductionPerStackPercent, }; } @@ -82,3 +88,24 @@ export function wow335ShamanMaelstromWeaponCastTimeReductionPercent( ); return Math.min(100, safeStacks * profile.castTimeReductionPerStackPercent); } + +/** + * Resolves the generated Maelstrom Weapon PvP damage penalty for an eligible + * damage spell. Lesser Healing Wave is eligible for the cast-time proc but is + * a heal, so this damage-only rider does not apply to it. + */ +export function wow335ShamanMaelstromWeaponPvpDamageReductionPercent( + rank: number, + consumedStacks: number, + spellName: string, +): number { + if (!WOW335_SHAMAN_MAELSTROM_WEAPON_ELIGIBLE_SPELLS.has(spellName) + || spellName === "Lesser Healing Wave") return 0; + const profile = wow335ShamanMaelstromWeaponProfile(rank); + if (!profile) return 0; + const safeStacks = Math.min( + profile.maxStacks, + Math.max(0, Math.trunc(Number.isFinite(consumedStacks) ? consumedStacks : 0)), + ); + return safeStacks * profile.pvpDamageReductionPerStackPercent; +} diff --git a/src/game/wow335ShamanPartyMaelstromRuntime.test.ts b/src/game/wow335ShamanPartyMaelstromRuntime.test.ts new file mode 100644 index 00000000..460554b2 --- /dev/null +++ b/src/game/wow335ShamanPartyMaelstromRuntime.test.ts @@ -0,0 +1,502 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { EMPTY_ITEM_STATS, type WeaponStats } from "./itemStats"; +import type { InventoryItem } from "./lootTypes"; +import { applyAura } from "./combatAuras"; +import { abilitiesForClass, abilityAtLevel } from "./abilityCatalog"; +import { partyAbilityAmount } from "./partyAbilityAi"; +import { useCombatStore } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { WOW335_SHAMAN_MAELSTROM_WEAPON_AURA_TAG } from "./wow335ShamanMaelstromWeaponRuntime"; + +const TARGET_ID = "party-maelstrom-target"; +const BASE_NOW = 10_000; +const FIXED_CAST_COMPLETION = BASE_NOW + 20_000; +const MAIN_HAND_ID = "party-maelstrom-main-hand"; +const OFF_HAND_ID = "party-maelstrom-off-hand"; + +function stableUnit(seed: string): number { + let hash = 2_166_136_261; + for (const character of seed) { + hash ^= character.charCodeAt(0); + hash = Math.imul(hash, 16_777_619); + } + return (hash >>> 0) / 0x1_0000_0000; +} + +function weaponItem( + instanceId: string, + slot: "main-hand" | "off-hand", + weapon: WeaponStats, + inventorySlot: string = slot, + weaponType = "mace", +): InventoryItem { + return { + instanceId, + itemId: instanceId === MAIN_HAND_ID ? 99_101 : 99_102, + itemKey: instanceId, + name: instanceId, + quality: "uncommon", + inventorySlot, + armorType: null, + weaponType, + itemLevel: 80, + sourceItemLevel: 80, + stats: { ...EMPTY_ITEM_STATS, meleeWeapon: weapon }, + quantity: 1, + sourceBossKey: "test", + sourceBossName: "Test", + acquiredAt: 1, + }; +} + +const FAST_MAIN_HAND: WeaponStats = { + damageMin: 90, + damageMax: 110, + damageSchool: "physical", + speedMs: 1_000, +}; +const SLOW_OFF_HAND: WeaponStats = { + damageMin: 70, + damageMax: 90, + damageSchool: "physical", + speedMs: 2_000, +}; + +function maelstromAura(actorId: string) { + return useCombatStore.getState().auras.find((aura) => aura.targetId === actorId + && aura.sourceId === actorId + && aura.definition.utilityTags?.includes(WOW335_SHAMAN_MAELSTROM_WEAPON_AURA_TAG)); +} + +function grantMaelstrom(actorId: string, stacks: number, now = BASE_NOW): void { + const definition = { + id: "wow335:shaman:maelstrom-weapon", + name: "Maelstrom Weapon", + description: "Your next listed spell has its cast time reduced by 20% per stack.", + disposition: "buff" as const, + durationMs: 30_000, + maxStacks: 5, + initialStacks: 1, + stackBehavior: "add" as const, + utilityTags: [WOW335_SHAMAN_MAELSTROM_WEAPON_AURA_TAG], + }; + useCombatStore.setState((state) => ({ + auras: [...applyAura(state.auras, { + definition, + sourceId: actorId, + targetId: actorId, + stacks, + now, + }).auras], + })); +} + +function markTargetAsCharacterDefender(): void { + useCombatStore.setState((state) => ({ + mobs: { + ...state.mobs, + [TARGET_ID]: { ...state.mobs[TARGET_ID]!, characterDefender: { level: 80 } }, + }, + })); +} + +function latestCompanionSpellDamage(memberId: string, abilityId: string): number { + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "damage" + && candidate.sourceActorId === memberId + && candidate.abilityId === abilityId + )); + expect(event, `companion damage event for ${abilityId}`).toBeDefined(); + return event!.effectiveAmount; +} + +function updateRuntimePartyMember( + memberId: string, + update: (member: ReturnType["members"][number]) => ReturnType["members"][number], +): void { + const members = usePartyStore.getState().members.map((member) => member.id === memberId + ? update(member) + : member); + useCombatStore.getState().commitCompanionActors(members); +} + +function setupShaman(options: { + readonly allowedAbility?: string; + readonly targetDistance?: number; + readonly talentRanks?: Readonly>; + readonly twoHander?: boolean; +} = {}) { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "priest", level: 80 }); + const abilities = abilitiesForClass("shaman"); + const ranks = { "talent-2057": 3, ...(options.talentRanks ?? {}) }; + const shaman = createConfiguredPartyMember({ + name: "Maelstrom Shaman", + classId: "shaman", + specialization: "Enhancement", + specializationId: "shaman:enhancement", + talentTreeId: "shaman-enhancement", + talentRanks: ranks, + role: "damage", + }, 80, 0, "party-maelstrom-runtime"); + const disabledCooldowns = Object.fromEntries(abilities + .filter((ability) => !ability.passive && ability.name !== options.allowedAbility) + .map((ability) => [ability.id, BASE_NOW + 60_000])); + const mainWeapon = options.twoHander + ? weaponItem(MAIN_HAND_ID, "main-hand", FAST_MAIN_HAND, "two-hand", "staff") + : weaponItem(MAIN_HAND_ID, "main-hand", FAST_MAIN_HAND, "one-hand", "mace"); + const items = [mainWeapon, ...(!options.twoHander + ? [weaponItem(OFF_HAND_ID, "off-hand", SLOW_OFF_HAND)] + : [])]; + const member = { + ...shaman, + talentRanks: ranks, + gearStats: { + ...EMPTY_ITEM_STATS, + attackPower: 1_000, + hitRating: 100_000, + expertiseRating: 100_000, + }, + resource: 100_000, + maxResource: 100_000, + resourcePools: { ...shaman.resourcePools, mana: 100_000 }, + cooldowns: disabledCooldowns, + nextActionAt: options.allowedAbility ? 0 : BASE_NOW + 60_000, + activeCast: null, + activeCastTargetId: null, + status: "ready" as const, + }; + usePartyStore.getState().initializeParty("party-maelstrom-runtime", 80, + useCombatStore.getState().health, "damage"); + usePartyStore.setState({ + members: [member], + command: "attack", + activeMobId: TARGET_ID, + }); + useCombatStore.setState((state) => ({ + inventory: [...state.inventory, ...items], + equipment: { + ...state.equipment, + [member.id]: { + "main-hand": MAIN_HAND_ID, + ...(!options.twoHander ? { "off-hand": OFF_HAND_ID } : {}), + }, + }, + })); + useCombatStore.getState().registerMob(TARGET_ID, { + name: "Maelstrom target", + level: 1, + maxHealth: 1_000_000, + xpReward: 0, + }); + const targetDistance = options.targetDistance ?? 2; + setMobPosition(TARGET_ID, [targetDistance, 0, 0]); + useCombatStore.getState().damageMob(TARGET_ID, 1, BASE_NOW - 1_000); + registerPartyRuntimePosition(member.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(member.id, TARGET_ID, true); + useCombatStore.getState().synchronizeActors(); + return { member, abilities }; +} + +function findRollTime( + predicate: (now: number) => boolean, +): number { + for (let now = BASE_NOW; now < BASE_NOW + 100_000; now += 1) { + if (predicate(now)) return now; + } + throw new Error("Could not find a deterministic Maelstrom roll time."); +} + +describe("WoW Shaman companion Maelstrom Weapon runtime", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + }); + + it("tracks main/off-hand autoattacks independently and uses each equipped weapon speed", () => { + const { member } = setupShaman(); + const mainChance = 12 * FAST_MAIN_HAND.speedMs / 60_000; + const offChance = 12 * SLOW_OFF_HAND.speedMs / 60_000; + const mainRoll = (now: number) => stableUnit( + `${member.id}:party-auto-attack:${TARGET_ID}:${now}:main-hand:wow335-shaman-maelstrom-weapon`, + ); + const offRoll = (now: number) => stableUnit( + `${member.id}:party-auto-attack-offhand:${TARGET_ID}:${now}:off-hand:wow335-shaman-maelstrom-weapon`, + ); + const now = findRollTime((candidate) => mainRoll(candidate) >= mainChance + && offRoll(candidate) < offChance); + + advanceDungeonPartyCombat(now); + + const attacks = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.sourceActorId === member.id + && ["party-auto-attack", "party-auto-attack-offhand"].includes(event.abilityId ?? "") + )); + expect(attacks.map((event) => event.abilityId).sort()).toEqual([ + "party-auto-attack", + "party-auto-attack-offhand", + ]); + expect(maelstromAura(member.id)).toMatchObject({ stacks: 1, expiresAt: now + 30_000 }); + + advanceDungeonPartyCombat(now + 1_500); + const later = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.sourceActorId === member.id + && ["party-auto-attack", "party-auto-attack-offhand"].includes(event.abilityId ?? "") + && event.occurredAt > now + )); + expect(later.map((event) => event.abilityId)).toEqual(["party-auto-attack"]); + }); + + it("uses Stormstrike's hand-tagged damage and proc speeds, skipping a missing off-hand", () => { + const ranks = { "talent-901": 1 }; + const { member, abilities } = setupShaman({ allowedAbility: "Stormstrike", talentRanks: ranks }); + const stormstrike = abilities.find((ability) => ability.name === "Stormstrike")!; + const mainProc = (now: number) => stableUnit( + `${member.id}:${stormstrike.id}:${TARGET_ID}:${now}:main-hand:wow335-shaman-maelstrom-weapon`, + ); + const offProc = (now: number) => stableUnit( + `${member.id}:${stormstrike.id}:${TARGET_ID}:${now}:off-hand:wow335-shaman-maelstrom-weapon`, + ); + const autoMain = (now: number) => stableUnit( + `${member.id}:party-auto-attack:${TARGET_ID}:${now}:main-hand:wow335-shaman-maelstrom-weapon`, + ); + const autoOff = (now: number) => stableUnit( + `${member.id}:party-auto-attack-offhand:${TARGET_ID}:${now}:off-hand:wow335-shaman-maelstrom-weapon`, + ); + const now = findRollTime((candidate) => mainProc(candidate) >= 0.2 + && offProc(candidate) < 0.4 + && autoMain(candidate) >= 0.2 + && autoOff(candidate) >= 0.4); + + advanceDungeonPartyCombat(now); + + const hits = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.sourceActorId === member.id && event.abilityId === stormstrike.id + )); + expect(hits.filter((event) => event.effectiveAmount > 0)).toHaveLength(2); + expect(hits.map((event) => event.rawAmount).sort((left, right) => right - left)[0]) + .toBeGreaterThan(hits.map((event) => event.rawAmount).sort((left, right) => right - left)[1]!); + expect(maelstromAura(member.id)?.stacks).toBe(1); + + const missingOffhand = setupShaman({ + allowedAbility: "Stormstrike", + talentRanks: ranks, + twoHander: true, + }); + const twoHandStormstrike = missingOffhand.abilities.find((ability) => ability.name === "Stormstrike")!; + advanceDungeonPartyCombat(now + 1); + const oneHandHit = useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "damage" && event.sourceActorId === missingOffhand.member.id + && event.abilityId === twoHandStormstrike.id && event.effectiveAmount > 0 + )); + expect(oneHandHit).toHaveLength(1); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.sourceActorId === missingOffhand.member.id + && event.abilityId === "party-auto-attack-offhand" + ))).toBe(false); + }); + + it("uses the off-hand speed for Lava Lash without replacing its generated damage effect", () => { + const { member, abilities } = setupShaman({ allowedAbility: "Lava Lash" }); + const lavaLash = abilities.find((ability) => ability.name === "Lava Lash")!; + const seedRoll = (now: number) => stableUnit( + `${member.id}:${lavaLash.id}:${TARGET_ID}:${now}:off-hand:wow335-shaman-maelstrom-weapon`, + ); + const autoMain = (now: number) => stableUnit( + `${member.id}:party-auto-attack:${TARGET_ID}:${now}:main-hand:wow335-shaman-maelstrom-weapon`, + ); + const autoOff = (now: number) => stableUnit( + `${member.id}:party-auto-attack-offhand:${TARGET_ID}:${now}:off-hand:wow335-shaman-maelstrom-weapon`, + ); + const now = findRollTime((candidate) => seedRoll(candidate) < 0.4 + && autoMain(candidate) >= 0.2 && autoOff(candidate) >= 0.4); + + advanceDungeonPartyCombat(now); + + const damageEvent = useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" && event.sourceActorId === member.id && event.abilityId === lavaLash.id + && event.effectiveAmount > 0 + )); + expect(damageEvent).toBeDefined(); + const generatedLavaLashEffect = lavaLash.effects.find((effect) => effect.kind === "damage")!; + expect(damageEvent?.rawAmount).toBe(partyAbilityAmount(member, lavaLash, generatedLavaLashEffect)); + expect(maelstromAura(member.id)?.stacks).toBe(1); + }); + + it.each([ + { stacks: 2, expectedCastTime: 1_500 }, + { stacks: 5, expectedCastTime: 0 }, + ])("reduces eligible companion cast time by its full $stacks-stack bundle and consumes it", ({ stacks, expectedCastTime }) => { + const { member, abilities } = setupShaman({ allowedAbility: "Lightning Bolt", targetDistance: 10 }); + const lightningBolt = abilities.find((ability) => ability.name === "Lightning Bolt")!; + grantMaelstrom(member.id, stacks); + + advanceDungeonPartyCombat(BASE_NOW); + + const current = usePartyStore.getState().members.find((candidate) => candidate.id === member.id)!; + expect(maelstromAura(member.id)).toBeUndefined(); + if (expectedCastTime > 0) { + expect(current.activeCast?.abilityId).toBe(lightningBolt.id); + expect(current.activeCast?.completesAt! - current.activeCast?.startedAt!).toBe(expectedCastTime); + expect(current.activeCast).toMatchObject({ maelstromWeaponRank: 3, maelstromWeaponStacksConsumed: stacks }); + } else { + expect(current.activeCast).toBeNull(); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.sourceActorId === member.id + && event.abilityId === lightningBolt.id + ))).toBe(true); + } + }); + + it("reduces and consumes Maelstrom stacks for a companion's Lesser Healing Wave support cast", () => { + const { member, abilities } = setupShaman({ allowedAbility: "Lesser Healing Wave" }); + const healer = { ...member, role: "healer" as const }; + const tankBase = createConfiguredPartyMember({ + name: "Injured Tank", + classId: "warrior", + specialization: "Protection", + specializationId: "warrior:protection", + talentTreeId: "warrior-protection", + role: "tank", + }, 80, 1, "party-maelstrom-runtime:injured-tank"); + const tank = { ...tankBase, health: Math.round(tankBase.maxHealth * 0.3) }; + usePartyStore.setState({ members: [healer, tank] }); + registerPartyRuntimePosition(tank.id, [1, 0, 0]); + useCombatStore.getState().commitCompanionActors(usePartyStore.getState().members); + const lesserHealingWave = abilityAtLevel( + abilities.find((ability) => ability.name === "Lesser Healing Wave")!, 80, + ); + grantMaelstrom(healer.id, 2); + + advanceDungeonPartyCombat(BASE_NOW); + + const current = usePartyStore.getState().members.find((candidate) => candidate.id === healer.id)!; + expect(current.activeCast?.abilityId).toBe(lesserHealingWave.id); + expect(current.activeCast?.originalDurationMs).toBe(Math.round(lesserHealingWave.castTimeMs * 0.6)); + expect(current.activeCast).toMatchObject({ maelstromWeaponRank: 3, maelstromWeaponStacksConsumed: 2 }); + expect(maelstromAura(healer.id)).toBeUndefined(); + }); + + it("reduces instant companion Lightning Bolt damage only against character defenders", () => { + const run = (stacks: number, characterDefender: boolean): number => { + const { member, abilities } = setupShaman({ allowedAbility: "Lightning Bolt" }); + const lightningBolt = abilities.find((ability) => ability.name === "Lightning Bolt")!; + if (characterDefender) markTargetAsCharacterDefender(); + if (stacks > 0) grantMaelstrom(member.id, stacks); + + advanceDungeonPartyCombat(BASE_NOW); + const current = usePartyStore.getState().members.find((candidate) => candidate.id === member.id)!; + if (current.activeCast) { + usePartyStore.setState((state) => ({ + members: state.members.map((candidate) => candidate.id === member.id + ? { ...candidate, activeCast: candidate.activeCast + ? { ...candidate.activeCast, completesAt: BASE_NOW + 2_500 } + : null } + : candidate), + })); + advanceDungeonPartyCombat(BASE_NOW + 2_500); + } + + return latestCompanionSpellDamage(member.id, lightningBolt.id); + }; + + const pvpBaseline = run(0, true); + const pvpFiveStacks = run(5, true); + expect(pvpBaseline).toBeGreaterThan(0); + expect(Math.abs(pvpFiveStacks - pvpBaseline * 0.9)).toBeLessThanOrEqual(1); + + const npcBaseline = run(0, false); + const npcFiveStacks = run(5, false); + expect(npcFiveStacks).toBe(npcBaseline); + }); + + it("preserves a companion's consumed Maelstrom snapshot through cast completion and channel pulses", () => { + const runCast = (stacks: number): { readonly damage: number; readonly snapshot: unknown } => { + const { member, abilities } = setupShaman({ allowedAbility: "Lightning Bolt", targetDistance: 10 }); + markTargetAsCharacterDefender(); + const lightningBolt = abilities.find((ability) => ability.name === "Lightning Bolt")!; + if (stacks > 0) grantMaelstrom(member.id, stacks); + advanceDungeonPartyCombat(BASE_NOW); + + const castingMember = usePartyStore.getState().members.find((candidate) => candidate.id === member.id)!; + expect(castingMember.activeCast?.abilityId).toBe(lightningBolt.id); + const snapshot = { + rank: castingMember.activeCast?.maelstromWeaponRank, + stacks: castingMember.activeCast?.maelstromWeaponStacksConsumed, + }; + updateRuntimePartyMember(member.id, (candidate) => ({ + ...candidate, + ...(stacks > 0 ? { talentRanks: { ...candidate.talentRanks, "talent-2057": 0 } } : {}), + activeCast: candidate.activeCast + ? { ...candidate.activeCast, completesAt: FIXED_CAST_COMPLETION } + : null, + })); + advanceDungeonPartyCombat(FIXED_CAST_COMPLETION); + return { damage: latestCompanionSpellDamage(member.id, lightningBolt.id), snapshot }; + }; + + const castBaseline = runCast(0); + const castWithStacks = runCast(3); + expect(castWithStacks.snapshot).toEqual({ rank: 3, stacks: 3 }); + expect(Math.abs(castWithStacks.damage - castBaseline.damage * 0.94)).toBeLessThanOrEqual(1); + + const runChannelPulse = (stacks: number): { readonly damage: number; readonly snapshot: unknown } => { + const { member, abilities } = setupShaman({ allowedAbility: "Lightning Bolt", targetDistance: 10 }); + markTargetAsCharacterDefender(); + const lightningBolt = abilities.find((ability) => ability.name === "Lightning Bolt")!; + if (stacks > 0) grantMaelstrom(member.id, stacks); + advanceDungeonPartyCombat(BASE_NOW); + + const castingMember = usePartyStore.getState().members.find((candidate) => candidate.id === member.id)!; + expect(castingMember.activeCast?.abilityId).toBe(lightningBolt.id); + const snapshot = { + rank: castingMember.activeCast?.maelstromWeaponRank, + stacks: castingMember.activeCast?.maelstromWeaponStacksConsumed, + }; + updateRuntimePartyMember(member.id, (candidate) => ({ + ...candidate, + ...(stacks > 0 ? { talentRanks: { ...candidate.talentRanks, "talent-2057": 0 } } : {}), + activeCast: candidate.activeCast + ? { + ...candidate.activeCast, + mode: "channel", + startedAt: BASE_NOW, + originalDurationMs: 5_000, + completesAt: BASE_NOW + 5_000, + channelTicksCompleted: 0, + } + : null, + })); + advanceDungeonPartyCombat(BASE_NOW + 1_000); + return { damage: latestCompanionSpellDamage(member.id, lightningBolt.id), snapshot }; + }; + + const channelBaseline = runChannelPulse(0); + const channelWithStacks = runChannelPulse(3); + expect(channelWithStacks.snapshot).toEqual({ rank: 3, stacks: 3 }); + expect(Math.abs(channelWithStacks.damage - channelBaseline.damage * 0.94)).toBeLessThanOrEqual(1); + }); + + it("does not generate or consume stacks from a noneligible spell hit", () => { + const { member, abilities } = setupShaman({ allowedAbility: "Earth Shock", targetDistance: 10 }); + const earthShock = abilities.find((ability) => ability.name === "Earth Shock")!; + grantMaelstrom(member.id, 3); + + advanceDungeonPartyCombat(BASE_NOW); + + expect(maelstromAura(member.id)?.stacks).toBe(3); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.kind === "damage" && event.sourceActorId === member.id && event.abilityId === earthShock.id + ))).toBe(true); + }); +}); diff --git a/src/game/wow335ShamanPartyRuntime.test.ts b/src/game/wow335ShamanPartyRuntime.test.ts index 8d247672..81aaddd6 100644 --- a/src/game/wow335ShamanPartyRuntime.test.ts +++ b/src/game/wow335ShamanPartyRuntime.test.ts @@ -1,12 +1,16 @@ import { describe, expect, it } from "vitest"; import { abilityAtLevel, abilitiesForClass, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; import { useCombatStore } from "./combatStore"; -import { clearMobRuntimeRegistry } from "./mobRuntimeRegistry"; -import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; import { createConfiguredPartyMember, usePartyStore, type PartyMember } from "./partyStore"; import { EMPTY_ITEM_STATS } from "./itemStats"; -import { partyAbilityAmount } from "./partyAbilityAi"; +import { partyAbilityAmount, partyAbilityCosts } from "./partyAbilityAi"; import { WOW335_SHAMAN_TIDAL_WAVES_AURA_TAG } from "./wow335ShamanTidalWavesRuntime"; function stableUnit(seed: string): number { @@ -52,6 +56,8 @@ async function setupShamanParty(options: { readonly tidalRank?: number; readonly riptideRank?: number; readonly waterShieldRank?: number; + readonly improvedShieldsRank?: number; + readonly elementalFocusRank?: number; readonly secondShaman?: boolean; readonly secondShamanTidalRank?: number; readonly spellPower?: number; @@ -69,6 +75,8 @@ async function setupShamanParty(options: { "talent-2063": options.tidalRank ?? 0, "talent-2064": options.riptideRank ?? 0, "talent-583": options.waterShieldRank ?? 0, + "talent-607": options.improvedShieldsRank ?? 0, + "talent-574": options.elementalFocusRank ?? 0, }; const firstShamanBase = createConfiguredPartyMember({ name: "Party Shaman", @@ -150,11 +158,77 @@ function findPartyHealTime( } describe("party WoW Shaman healing talents", () => { + it("grants and consumes party Elemental Focus Clearcasting after a critical elemental spell", async () => { + const members = await setupShamanParty({ elementalFocusRank: 2, criticalStrikeRating: 1_000_000 }); + const shaman = members[0]; + const bolt = shamanAbility("Lightning Bolt"); + const targetId = "shaman-elemental-focus-party-target"; + useCombatStore.getState().registerMob(targetId, { + name: "Elemental Focus target", + level: 80, + maxHealth: 100_000, + xpReward: 0, + }); + setMobPosition(targetId, [2, 0, 0]); + useCombatStore.getState().damageMob(targetId, 1, 500); + updatePartyRuntimeTargetVisibility(shaman.id, targetId, true); + const damageShaman: PartyMember = { + ...onlyReady(shaman, "Lightning Bolt"), + role: "damage", + health: shaman.maxHealth, + globalCooldownEndsAt: 0, + nextActionAt: 0, + }; + const fullManaCost = partyAbilityCosts(damageShaman, bolt, 1_000) + .find((cost) => cost.resource === "mana")?.amount; + usePartyStore.setState((state) => ({ + command: "attack", + activeMobId: targetId, + members: state.members.map((member) => member.id === shaman.id + ? damageShaman + : { ...member, cooldowns: Object.fromEntries(abilitiesForClass("warrior").map((ability) => [ability.id, 1_000_000])) }), + })); + useCombatStore.getState().commitCompanionActors(usePartyStore.getState().members); + + advanceDungeonPartyCombat(1_000); + const firstCast = usePartyStore.getState().members.find((member) => member.id === shaman.id)?.activeCast; + expect(firstCast?.abilityId).toBe(bolt.id); + advanceDungeonPartyCombat(firstCast!.completesAt); + + const hit = [...useCombatStore.getState().combatEvents].reverse().find((event) => ( + event.kind === "damage" && event.sourceActorId === shaman.id && event.abilityId === bolt.id + )); + expect(hit).toMatchObject({ critical: true }); + const clearcasting = () => useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === shaman.id + && aura.targetId === shaman.id + && aura.definition.utilityTags?.includes("wow335-shaman-elemental-focus-clearcasting") + )); + expect(clearcasting()).toMatchObject({ stacks: 2, expiresAt: hit!.occurredAt + 15_000 }); + + expect(fullManaCost).toBeGreaterThan(0); + expect(partyAbilityCosts(shaman, bolt, hit!.occurredAt) + .find((cost) => cost.resource === "mana")?.amount).toBe(Math.round(fullManaCost! * 0.7)); + + const currentShaman = usePartyStore.getState().members.find((member) => member.id === shaman.id)!; + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === shaman.id + ? { ...onlyReady(currentShaman, "Lightning Bolt"), globalCooldownEndsAt: 0, nextActionAt: 0 } + : member), + })); + useCombatStore.getState().commitCompanionActors(usePartyStore.getState().members); + advanceDungeonPartyCombat(hit!.occurredAt + 1_000); + expect(usePartyStore.getState().members.find((member) => member.id === shaman.id)?.activeCast?.abilityId) + .toBe(bolt.id); + expect(clearcasting()?.stacks).toBe(1); + }); + it("procs rank-owned Improved Water Shield from its own critical Healing Wave and restores only its mana", async () => { const members = await setupShamanParty({ tidalRank: 3, riptideRank: 1, waterShieldRank: 3, + improvedShieldsRank: 3, spellPower: 1_000, criticalStrikeRating: 100_000, secondShaman: true, @@ -225,7 +299,8 @@ describe("party WoW Shaman healing talents", () => { expect(healingEvent?.rawAmount).toBe(Math.round((ordinaryHeal + 120) * 1.5)); expect(waterShieldEvent).toMatchObject({ targetActorId: shaman.id, - effectiveAmount: 400, + rawAmount: 460, + effectiveAmount: 460, overheal: 0, }); expect(combat.combatEvents).not.toContainEqual(expect.objectContaining({ diff --git a/src/game/wow335ShamanShieldProc.integration.test.ts b/src/game/wow335ShamanShieldProc.integration.test.ts new file mode 100644 index 00000000..2cf5fdfc --- /dev/null +++ b/src/game/wow335ShamanShieldProc.integration.test.ts @@ -0,0 +1,197 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { abilitiesForClass, abilityAtLevel, abilityTalentNodeId, preloadAbilityCatalogsForClasses } from "./abilityCatalog"; +import { useCombatStore, PLAYER_AURA_ENTITY_ID } from "./combatStore"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { resetPartyRuntimeClock } from "./partyRuntime"; +import { WOW335_SHAMAN_TIDAL_WAVES_AURA_TAG } from "./wow335ShamanTidalWavesRuntime"; + +function shamanAbility(name: string) { + const source = abilitiesForClass("shaman").find((candidate) => candidate.name === name); + expect(source, `generated Shaman ${name}`).toBeDefined(); + return abilityAtLevel(source!, 80); +} + +function shieldAuraEffect(name: string) { + const ability = shamanAbility(name); + const effect = ability.effects.find((candidate) => candidate.kind === "apply-aura"); + expect(effect, `${name} apply-aura`).toBeDefined(); + if (!effect || effect.kind !== "apply-aura") throw new Error(`${name} aura is missing`); + return { ability, effect }; +} + +function registerAttacker(id: string, targetActorId: string, engagedAt = 100): void { + useCombatStore.getState().registerMob(id, { + name: id, + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [{ ...DEFAULT_ENEMY_ATTACK, id: `${id}:swing`, range: 30 }], + }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.getState().damageMob(id, 1, engagedAt, { actorId: targetActorId, role: "tank" }, "physical"); +} + +describe("WoW Shaman shield proc integration", () => { + beforeEach(async () => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + await preloadAbilityCatalogsForClasses(["shaman", "warrior"]); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + useCombatStore.setState({ auras: [], effects: [], combatEvents: [] }); + usePartyStore.getState().initializeParty("shaman-shields-test", 80, useCombatStore.getState().health, "damage", 1); + }); + + it("scales player Lightning Shield damage and Earth Shield charges/healing, then gates Tidal Waves to its 5s ICD", () => { + useCombatStore.getState().initializeCharacter({ classId: "shaman", role: "healer", level: 80 }); + useCombatStore.setState((state) => ({ + health: Math.round(state.maxHealth * 0.5), + talentRanks: { + ...state.talentRanks, + "talent-607": 3, + "talent-2059": 3, + "talent-2063": 3, + }, + })); + + const lightning = shieldAuraEffect("Lightning Shield"); + const earth = shieldAuraEffect("Earth Shield"); + const earthTalentNodeId = abilityTalentNodeId(earth.ability); + useCombatStore.setState((state) => ({ + talentRanks: { ...state.talentRanks, ...(earthTalentNodeId ? { [earthTalentNodeId]: 1 } : {}) }, + })); + const lightningCast = useCombatStore.getState().castAbility(lightning.ability.id, { + targetActorId: PLAYER_AURA_ENTITY_ID, now: 1_000, + }); + expect(lightningCast.ok, lightningCast.reason).toBe(true); + const earthCast = useCombatStore.getState().castAbility(earth.ability.id, { + targetActorId: null, now: 4_000, + }); + expect(earthCast.ok, earthCast.reason).toBe(true); + + const earthAura = useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === PLAYER_AGGRO_ID && aura.targetId === PLAYER_AURA_ENTITY_ID + && aura.definition.procs?.some((proc) => proc.id.endsWith(":earth-shield")) + )); + expect(earthAura, useCombatStore.getState().auras.map((aura) => `${aura.sourceId}:${aura.targetId}:${aura.definition.name}:${aura.definition.procs?.map((proc) => proc.id).join(",")}`).join(" | ")) + .toBeDefined(); + expect(earthAura?.definition.procs?.find((proc) => proc.id.endsWith(":earth-shield"))).toMatchObject({ + charges: 12, + internalCooldownMs: 3_000, + }); + + registerAttacker("shaman-player-shield-attacker", PLAYER_AGGRO_ID, 4_000); + useCombatStore.getState().advanceMobCombat(5_450); + const lightningProc = [...useCombatStore.getState().combatEvents].reverse().find((event) => ( + event.kind === "damage" && event.sourceActorId === PLAYER_AGGRO_ID + && event.abilityId?.endsWith(":lightning-shield") + )); + const lightningBase = lightning.effect.aura.procs?.find((proc) => proc.id.endsWith(":lightning-shield"))?.action; + expect(lightningBase?.kind).toBe("damage"); + if (lightningBase?.kind !== "damage") throw new Error("Lightning Shield damage proc is missing"); + expect(lightningProc?.rawAmount).toBe(Math.round(lightningBase.amount * 1.6)); + expect(useCombatStore.getState().auras.find((aura) => aura.definition.exclusiveGroup === "shaman:elemental-shield") + ?.procStates.find((proc) => proc.procId.endsWith(":lightning-shield"))?.remainingCharges).toBe(2); + + useCombatStore.getState().advanceMobCombat(5_450); + const tidalAuraAtFirstHeal = useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === PLAYER_AGGRO_ID && aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes(WOW335_SHAMAN_TIDAL_WAVES_AURA_TAG) + )); + const earthProcEvents = () => useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "healing" && event.sourceActorId === PLAYER_AGGRO_ID + && event.abilityId?.endsWith(":earth-shield") + )); + const earthBase = earthAura?.definition.procs?.find((proc) => proc.id.endsWith(":earth-shield"))?.action; + expect(earthBase?.kind).toBe("heal"); + if (earthBase?.kind !== "heal") throw new Error("Earth Shield heal proc is missing"); + expect(earthProcEvents()[0]?.rawAmount).toBe(Math.round(earthBase.amount * 1.3)); + expect(tidalAuraAtFirstHeal?.stacks).toBe(1); + + useCombatStore.getState().advanceMobCombat(7_350); + useCombatStore.getState().advanceMobCombat(9_250); + expect(useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === PLAYER_AGGRO_ID && aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes(WOW335_SHAMAN_TIDAL_WAVES_AURA_TAG) + ))?.stacks).toBe(1); + let now = 9_250; + while (earthProcEvents().length < 3 && now < 30_000) { + now += 1_900; + useCombatStore.getState().advanceMobCombat(now); + } + expect(earthProcEvents()).toHaveLength(3); + expect(earthProcEvents()[2].occurredAt - earthProcEvents()[0].occurredAt).toBeGreaterThanOrEqual(5_000); + expect(useCombatStore.getState().auras.find((aura) => ( + aura.sourceId === PLAYER_AGGRO_ID && aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes(WOW335_SHAMAN_TIDAL_WAVES_AURA_TAG) + ))?.stacks).toBe(2); + expect(useCombatStore.getState().auras.find((aura) => aura.instanceId === earthAura?.instanceId) + ?.procStates.find((proc) => proc.procId.endsWith(":earth-shield"))?.remainingCharges).toBe(9); + }); + + it("applies Improved Earth Shield charge and healing bonuses to a generated companion's shield proc", () => { + const shamanBase = createConfiguredPartyMember({ + name: "Shield Shaman", + classId: "shaman", + specialization: "Restoration", + specializationId: "shaman:restoration", + talentTreeId: "shaman-restoration", + talentRanks: { "talent-607": 3, "talent-2059": 3, "talent-2063": 3 }, + role: "healer", + }, 80, 0, "shaman-shields-test"); + const tankBase = createConfiguredPartyMember({ + name: "Shield Tank", + classId: "warrior", + specialization: "Protection", + specializationId: "warrior:protection", + talentTreeId: "warrior-protection", + role: "tank", + }, 80, 1, "shaman-shields-test"); + const shaman = { ...shamanBase, gearStats: EMPTY_ITEM_STATS, health: shamanBase.maxHealth }; + const tank = { ...tankBase, gearStats: EMPTY_ITEM_STATS, health: Math.round(tankBase.maxHealth * 0.35) }; + usePartyStore.setState({ members: [shaman, tank] }); + registerPartyRuntimePosition(shaman.id, [0, 0, 0]); + registerPartyRuntimePosition(tank.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + + const earth = shieldAuraEffect("Earth Shield"); + for (const effect of earth.ability.effects.filter((candidate) => candidate.kind === "apply-aura")) { + if (effect.kind === "apply-aura") { + expect(useCombatStore.getState().applyActorAura(shaman.id, tank.id, earth.ability, effect, 500)).toBe(true); + } + } + const aura = useCombatStore.getState().auras.find((candidate) => ( + candidate.sourceId === shaman.id && candidate.targetId === tank.id + && candidate.definition.procs?.some((proc) => proc.id.endsWith(":earth-shield")) + )); + expect(aura?.definition.procs?.find((proc) => proc.id.endsWith(":earth-shield"))).toMatchObject({ + charges: 12, + internalCooldownMs: 3_000, + }); + + registerAttacker("shaman-party-shield-attacker", tank.id); + useCombatStore.getState().advanceMobCombat(1_450); + const procEvent = [...useCombatStore.getState().combatEvents].reverse().find((event) => ( + event.kind === "healing" && event.sourceActorId === shaman.id + && event.targetActorId === tank.id && event.abilityId?.endsWith(":earth-shield") + )); + const baseAction = aura?.definition.procs?.find((proc) => proc.id.endsWith(":earth-shield"))?.action; + expect(baseAction?.kind).toBe("heal"); + if (baseAction?.kind !== "heal") throw new Error("Earth Shield heal proc is missing"); + expect(procEvent?.rawAmount).toBe(Math.round(baseAction.amount * 1.3)); + expect(procEvent?.effectiveAmount).toBeGreaterThan(0); + expect(useCombatStore.getState().auras.find((candidate) => candidate.instanceId === aura?.instanceId) + ?.procStates.find((proc) => proc.procId.endsWith(":earth-shield"))?.remainingCharges).toBe(11); + expect(useCombatStore.getState().auras).toContainEqual(expect.objectContaining({ + sourceId: shaman.id, + targetId: shaman.id, + stacks: 1, + definition: expect.objectContaining({ utilityTags: expect.arrayContaining([WOW335_SHAMAN_TIDAL_WAVES_AURA_TAG]) }), + })); + }); +}); diff --git a/src/game/wow335ShamanTalentRuntime.ts b/src/game/wow335ShamanTalentRuntime.ts index 6d74da14..5678c661 100644 --- a/src/game/wow335ShamanTalentRuntime.ts +++ b/src/game/wow335ShamanTalentRuntime.ts @@ -1,10 +1,15 @@ import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; export const WOW335_SHAMAN_CONVECTION_TALENT_ID = "talent-564"; +export const WOW335_SHAMAN_ELEMENTAL_DEVASTATION_TALENT_ID = "talent-1645"; +export const WOW335_SHAMAN_ELEMENTAL_DEVASTATION_AURA_TAG = "wow335-shaman-elemental-devastation"; const SHAMAN_CONVECTION_SOURCE = WOW335_TALENT_NODES.find((node) => ( node.id === WOW335_SHAMAN_CONVECTION_TALENT_ID )); +const SHAMAN_ELEMENTAL_DEVASTATION_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_SHAMAN_ELEMENTAL_DEVASTATION_TALENT_ID +)); const SHOCK_ABILITY_NAMES = ["Earth Shock", "Flame Shock", "Frost Shock"] as const; @@ -16,6 +21,28 @@ export interface Wow335ShamanConvectionModifier { readonly scope: string; } +export interface Wow335ShamanElementalDevastationProfile { + readonly criticalChanceBonusPercent: number; + readonly durationMs: number; +} + +/** Reads the rank payload from the generated DBC tooltip instead of duplicating its values. */ +export function wow335ShamanElementalDevastationProfileForRank( + rank: number, +): Wow335ShamanElementalDevastationProfile | null { + const safeRank = Math.max(0, Math.min(3, Math.trunc(Number.isFinite(rank) ? rank : 0))); + const description = safeRank > 0 + ? SHAMAN_ELEMENTAL_DEVASTATION_SOURCE?.rankDescriptions[safeRank - 1] + : undefined; + const match = description?.match(/critical strike chance with melee and ranged attacks by (\d+(?:\.\d+)?)% for (\d+(?:\.\d+)?) seconds/i); + if (!match) return null; + const criticalChanceBonusPercent = Number(match[1]); + const durationMs = Number(match[2]) * 1_000; + return Number.isFinite(criticalChanceBonusPercent) && Number.isFinite(durationMs) + ? { criticalChanceBonusPercent, durationMs } + : null; +} + /** * Builds Convection's exact spell scopes from the generated rank tooltip. * The generic tooltip parser stops at the comma after "Shock", which drops diff --git a/src/game/wow335Talents.generated.ts b/src/game/wow335Talents.generated.ts index 08bdce69..a49087f8 100644 --- a/src/game/wow335Talents.generated.ts +++ b/src/game/wow335Talents.generated.ts @@ -35195,10 +35195,10 @@ export const WOW335_TALENT_NODES = [ 13867 ], "name": "Improved Kick", - "description": "Your Kick has a 100% chance of preventing your target from moving faster than their normal movement speed for 3 seconds. Capstone Bonus: Your successful interrupts with Kick grants you 40 energy and 35% attack speed for 6 sec.", + "description": "Your Kick has a 100% chance to silence the target for 2 sec. Capstone Bonus: Successful interrupts with Kick restore 40 Energy and increase your attack speed by 35% for 6 sec.", "rankDescriptions": [ - "Your Kick has a 50% chance of preventing your target from moving faster than their normal movement speed for 3 seconds. Capstone Bonus: Your successful interrupts with Kick grants you 40 energy and 35% attack speed for 6 sec.", - "Your Kick has a 100% chance of preventing your target from moving faster than their normal movement speed for 3 seconds. Capstone Bonus: Your successful interrupts with Kick grants you 40 energy and 35% attack speed for 6 sec." + "Your Kick has a 50% chance to silence the target for 2 sec. Capstone Bonus: Successful interrupts with Kick restore 40 Energy and increase your attack speed by 35% for 6 sec.", + "Your Kick has a 100% chance to silence the target for 2 sec. Capstone Bonus: Successful interrupts with Kick restore 40 Energy and increase your attack speed by 35% for 6 sec." ], "rawRankDescriptions": [ "Your Kick has a $h% chance of preventing your target from moving faster than their normal movement speed for $813868d. Capstone Bonus: Your successful interrupts with Kick grants you $18425s2 energy and $18425s1% attack speed for 6 sec.", diff --git a/src/game/wow335WarlockMechanics.test.ts b/src/game/wow335WarlockMechanics.test.ts index acf39327..335d672a 100644 --- a/src/game/wow335WarlockMechanics.test.ts +++ b/src/game/wow335WarlockMechanics.test.ts @@ -95,6 +95,24 @@ describe("WoW 3.3.5 Warlock mechanics", () => { ))).toBe(false); }); + it("applies Aftermath's generated rank-2 slow after a landed Conflagrate", () => { + setTalentRank("Aftermath", 2); + const conflagrateId = unlockTalentAbility("Conflagrate"); + castAndFinish("Immolate", 3_000); + const conflagrateAt = castAndFinish("Conflagrate", 8_000); + + const aftermathSlow = useCombatStore.getState().mobs["warlock-target"]?.statuses.find((status) => ( + status.kind === "slow" && status.sourceAbilityId === conflagrateId + )); + expect(aftermathSlow).toMatchObject({ + kind: "slow", + sourceAbilityId: conflagrateId, + sourceActorId: PLAYER_AGGRO_ID, + magnitude: 0.5, + endsAt: conflagrateAt + 4_000, + }); + }); + it("models Shadowflame's missing periodic child so Conflagrate can consume it", () => { const shadowflameCompleteAt = castAndFinish("Shadowflame", 3_000); const shadowflameId = abilityId("Shadowflame"); diff --git a/src/game/wow335WarlockTalentRuntime.test.ts b/src/game/wow335WarlockTalentRuntime.test.ts index 1fb3d3cb..a49d3aee 100644 --- a/src/game/wow335WarlockTalentRuntime.test.ts +++ b/src/game/wow335WarlockTalentRuntime.test.ts @@ -7,6 +7,7 @@ import { usePartyStore } from "./partyStore"; import { talentModifiersForRanks } from "./talentModifiers"; import { loadTalentUiCatalog } from "./talentUiCatalog"; import { + warlockAftermathDazeForRank, warlockDeathGraspEffectsForRank, warlockDeathGraspHitChanceBonusForRank, warlockDeathGraspSpellHasteModifier, @@ -15,6 +16,33 @@ import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; const DEATH_GRASP_ID = "talent-1005"; +describe("WoW Warlock Aftermath", () => { + it("uses the generated talent ranks' chance and child spell link", () => { + const talent = WOW335_TALENT_NODES.find((node) => node.name === "Aftermath"); + expect(talent?.rankSpellIds).toEqual([18119, 18120]); + expect(talent?.rankEffects.map((rank) => rank.procChance)).toEqual([50, 100]); + expect(talent?.rankEffects.map((rank) => rank.effects.find((effect) => effect.triggerSpellId !== 0)?.triggerSpellId)) + .toEqual([18118, 18118]); + }); + + it("uses the generated 50/100% proc ranks and tooltip slow payload", () => { + expect(warlockAftermathDazeForRank(0, 0)).toBeNull(); + expect(warlockAftermathDazeForRank(1, 0.49)).toEqual({ + rank: 1, + procChancePercent: 50, + durationMs: 4_000, + movementSpeedReductionPercent: 50, + }); + expect(warlockAftermathDazeForRank(1, 0.5)).toBeNull(); + expect(warlockAftermathDazeForRank(2, 0.999)).toMatchObject({ + rank: 2, + procChancePercent: 100, + durationMs: 4_000, + movementSpeedReductionPercent: 50, + }); + }); +}); + function setWarlockTalentRank(name: string, rank: number): void { const talent = WOW335_TALENT_NODES.find((node) => node.name === name); expect(talent, name).toBeDefined(); diff --git a/src/game/wow335WarlockTalentRuntime.ts b/src/game/wow335WarlockTalentRuntime.ts index 6a17c119..971f6193 100644 --- a/src/game/wow335WarlockTalentRuntime.ts +++ b/src/game/wow335WarlockTalentRuntime.ts @@ -1,5 +1,30 @@ import type { TalentModifier } from "./talentModifiers"; +export interface WarlockAftermathDazeEffects { + readonly rank: number; + readonly procChancePercent: number; + readonly durationMs: number; + readonly movementSpeedReductionPercent: number; +} + +/** + * Aftermath talent rows 18119/18120 provide a 50%/100% chance. The generated + * talent tooltip specifies a 50% slow for 4 seconds; that current project + * description governs this custom talent over the stock 18118 child payload. + */ +export function warlockAftermathDazeForRank(rank: number, roll: number): WarlockAftermathDazeEffects | null { + const normalizedRank = Math.max(0, Math.min(2, Math.trunc(Number.isFinite(rank) ? rank : 0))); + if (normalizedRank === 0 || !Number.isFinite(roll)) return null; + const procChancePercent = [0, 50, 100][normalizedRank] ?? 0; + if (roll < 0 || roll >= procChancePercent / 100) return null; + return { + rank: normalizedRank, + procChancePercent, + durationMs: 4_000, + movementSpeedReductionPercent: 50, + }; +} + export const WARLOCK_BACKDRAFT_READY_TAG = "wow335-warlock-backdraft-ready"; export const WARLOCK_BACKDRAFT_TRIGGER_SPELLS = new Set([ "Conflagrate", diff --git a/src/game/wow335WarriorCriticalBlock.integration.test.ts b/src/game/wow335WarriorCriticalBlock.integration.test.ts new file mode 100644 index 00000000..7eaf4784 --- /dev/null +++ b/src/game/wow335WarriorCriticalBlock.integration.test.ts @@ -0,0 +1,155 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore, stableCombatUnit } from "./combatStore"; +import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { + WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID, + WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID, +} from "./wow335WarriorCriticalBlockRuntime"; + +const SWING = { + ...DEFAULT_ENEMY_ATTACK, + id: "critical-block-test-swing", + name: "Critical Block Test Swing", + cooldownMs: 10_000, + initialCooldownMs: [0, 0] as const, + repeatCooldownMs: [10_000, 10_000] as const, + damageMultiplier: 1, +}; + +function timeForBlock(mobId: string, actorId: string): number { + for (let now = 1_000; now < 200_000; now += 1) { + const roll = stableCombatUnit(`${mobId}:${SWING.id}:${actorId}:0:${now}:outcome`); + if (roll >= 0.2 && roll < 0.9) return now; + } + throw new Error("Could not find a stable Critical Block test roll."); +} + +function registerAttacker(mobId: string, targetActorId: string, now: number): void { + useCombatStore.getState().registerMob(mobId, { + name: mobId, + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [SWING], + }); + setMobPosition(mobId, [2, 0, 0]); + useCombatStore.getState().damageMob(mobId, 1, now - 1, { + actorId: targetActorId, + role: "tank", + }, "physical"); +} + +function incomingEvent(mobId: string, targetActorId: string) { + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "damage" + && candidate.sourceActorId === mobId + && candidate.targetActorId === targetActorId + )); + if (!event) throw new Error(`Expected a recorded incoming hit on ${targetActorId}.`); + return event; +} + +function runPlayerBlock( + rank: number, + options: { readonly attackerIsPlayer?: boolean; readonly touchedByTheLightRank?: number } = {}, +) { + clearMobRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 80, role: "tank" }); + useCombatStore.setState((state) => ({ + health: 100_000, + maxHealth: 100_000, + gearStats: { ...EMPTY_ITEM_STATS, blockRating: 1_000_000, blockValue: 100 }, + talentRanks: { + ...state.talentRanks, + [WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID]: rank, + [WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID]: options.touchedByTheLightRank ?? 0, + }, + })); + const mobId = "critical-block-player-attacker"; + const now = timeForBlock(mobId, PLAYER_AGGRO_ID); + registerAttacker(mobId, PLAYER_AGGRO_ID, now); + if (options.attackerIsPlayer) { + useCombatStore.setState((state) => ({ + mobs: { + ...state.mobs, + [mobId]: { ...state.mobs[mobId]!, characterDefender: { level: 80 } }, + }, + })); + } + useCombatStore.getState().advanceMobCombat(now); + return incomingEvent(mobId, PLAYER_AGGRO_ID); +} + +function runPartyBlock(rank: number) { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + const partyId = "critical-block-party"; + usePartyStore.getState().initializeParty(partyId, 80, useCombatStore.getState().health, "damage", 1); + const warrior = createConfiguredPartyMember({ + name: "Critical Block Warrior", + classId: "warrior", + specialization: "Protection", + specializationId: "warrior:protection", + talentTreeId: "warrior-protection", + talentRanks: { [WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID]: rank }, + role: "tank", + }, 80, 0, partyId); + usePartyStore.setState({ + members: [{ + ...warrior, + gearStats: { ...EMPTY_ITEM_STATS, blockRating: 1_000_000, blockValue: 100 }, + }], + }); + registerPartyRuntimePosition(warrior.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + const mobId = "critical-block-party-attacker"; + const now = timeForBlock(mobId, warrior.id); + registerAttacker(mobId, warrior.id, now); + advanceDungeonPartyCombat(now); + useCombatStore.getState().advanceMobCombat(now); + return incomingEvent(mobId, warrior.id); +} + +describe("WoW Warrior Critical Block runtime integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty("critical-block-tests", 80, useCombatStore.getState().health, "damage", 1); + }); + + it("reduces successful player and generated companion blocks by the generated rank-3 25%", () => { + const playerRank0 = runPlayerBlock(0); + const playerRank3 = runPlayerBlock(3); + expect(playerRank0.outcome).toBe("block"); + expect(playerRank3.outcome).toBe("block"); + expect(playerRank3.effectiveAmount).toBe(Math.round(playerRank0.effectiveAmount * 0.75)); + + const partyRank0 = runPartyBlock(0); + const partyRank3 = runPartyBlock(3); + expect(partyRank0.outcome).toBe("block"); + expect(partyRank3.outcome).toBe("block"); + expect(partyRank3.effectiveAmount).toBe(Math.round(partyRank0.effectiveAmount * 0.75)); + }); + + it("keeps the generated rank-3 block reduction disabled against player attackers and with Touched by the Light", () => { + const ordinary = runPlayerBlock(0); + expect(runPlayerBlock(3, { attackerIsPlayer: true })).toMatchObject({ + outcome: "block", + effectiveAmount: ordinary.effectiveAmount, + }); + expect(runPlayerBlock(3, { touchedByTheLightRank: 1 })).toMatchObject({ + outcome: "block", + effectiveAmount: ordinary.effectiveAmount, + }); + }); +}); diff --git a/src/game/wow335WarriorCriticalBlockRuntime.test.ts b/src/game/wow335WarriorCriticalBlockRuntime.test.ts new file mode 100644 index 00000000..622590bd --- /dev/null +++ b/src/game/wow335WarriorCriticalBlockRuntime.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, it } from "vitest"; +import { + WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID, + WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID, + wow335WarriorCriticalBlockDamage, + wow335WarriorCriticalBlockReductionPercent, +} from "./wow335WarriorCriticalBlockRuntime"; + +describe("WoW Warrior Critical Block runtime", () => { + it("reads the generated rank reductions and applies them only to successful eligible blocks", () => { + expect(WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID).toBe("talent-1893"); + expect(WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID).toBe("talent-2195"); + expect([0, 1, 2, 3].map(wow335WarriorCriticalBlockReductionPercent)).toEqual([0, 8, 16, 25]); + expect(wow335WarriorCriticalBlockDamage(1_000, 0, true, false, 0)).toBe(1_000); + expect(wow335WarriorCriticalBlockDamage(1_000, 3, true, false, 0)).toBe(750); + expect(wow335WarriorCriticalBlockDamage(1_000, 3, false, false, 0)).toBe(1_000); + expect(wow335WarriorCriticalBlockDamage(1_000, 3, true, true, 0)).toBe(1_000); + expect(wow335WarriorCriticalBlockDamage(1_000, 3, true, false, 1)).toBe(1_000); + }); + + it("bounds invalid ranks and damage", () => { + expect(wow335WarriorCriticalBlockReductionPercent(Number.NaN)).toBe(0); + expect(wow335WarriorCriticalBlockReductionPercent(99)).toBe(25); + expect(wow335WarriorCriticalBlockDamage(Number.NaN, 3, true, false, 0)).toBe(0); + expect(wow335WarriorCriticalBlockDamage(-10, 3, true, false, 0)).toBe(0); + }); +}); diff --git a/src/game/wow335WarriorCriticalBlockRuntime.ts b/src/game/wow335WarriorCriticalBlockRuntime.ts new file mode 100644 index 00000000..2458e54d --- /dev/null +++ b/src/game/wow335WarriorCriticalBlockRuntime.ts @@ -0,0 +1,36 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID = "talent-1893"; +export const WOW335_PALADIN_TOUCHED_BY_THE_LIGHT_TALENT_ID = "talent-2195"; + +const CRITICAL_BLOCK_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_WARRIOR_CRITICAL_BLOCK_TALENT_ID +)); + +function normalizedRank(rank: number): number { + return Number.isFinite(rank) ? Math.max(0, Math.min(3, Math.trunc(rank))) : 0; +} + +/** Reads the generated tooltip's rank-specific extra reduction on a blocked hit. */ +export function wow335WarriorCriticalBlockReductionPercent(rank: number): number { + const safeRank = normalizedRank(rank); + if (safeRank === 0) return 0; + const description = CRITICAL_BLOCK_SOURCE?.rankDescriptions[safeRank - 1]; + const value = Number(description?.match(/reduce the damage you take from the blocked hit by (\d+)%/i)?.[1]); + return Number.isFinite(value) ? value : 0; +} + +/** Applies the generated reduction to post-block damage when source exclusions allow it. */ +export function wow335WarriorCriticalBlockDamage( + postBlockDamage: number, + rank: number, + blocked: boolean, + attackerIsPlayer: boolean, + touchedByTheLightRank: number, +): number { + if (!Number.isFinite(postBlockDamage)) return 0; + const damage = Math.max(0, postBlockDamage); + if (!blocked || attackerIsPlayer || normalizedRank(touchedByTheLightRank) > 0) return Math.round(damage); + const reductionPercent = wow335WarriorCriticalBlockReductionPercent(rank); + return Math.round(damage * (1 - reductionPercent / 100)); +} diff --git a/src/game/wow335WarriorDamageShield.test.ts b/src/game/wow335WarriorDamageShield.test.ts new file mode 100644 index 00000000..1f4ecdf9 --- /dev/null +++ b/src/game/wow335WarriorDamageShield.test.ts @@ -0,0 +1,110 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { usePartyStore, createConfiguredPartyMember } from "./partyStore"; +import { useCombatStore } from "./combatStore"; +import { deriveCharacterStats } from "./wotlkStats"; +import { + WOW335_WARRIOR_DAMAGE_SHIELD_ABILITY_ID, + WOW335_WARRIOR_DAMAGE_SHIELD_TALENT_ID, + wow335WarriorDamageShieldReflectDamage, +} from "./wow335WarriorDamageShieldRuntime"; + +function registerAttacker(id: string, targetActorId: string): void { + useCombatStore.getState().registerMob(id, { + name: id, + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [{ ...DEFAULT_ENEMY_ATTACK, damageMultiplier: 2 }], + }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.getState().damageMob(id, 1, 100, { + actorId: targetActorId, + role: "tank", + }, "physical"); +} + +function reflectedEvent(targetId: string, sourceActorId: string) { + return useCombatStore.getState().combatEvents.find((event) => ( + event.abilityId === WOW335_WARRIOR_DAMAGE_SHIELD_ABILITY_ID + && event.sourceActorId === sourceActorId + && event.targetActorId === targetId + )); +} + +describe("WoW 3.3.5 Warrior Damage Shield combat hooks", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty("damage-shield-tests", 80, useCombatStore.getState().health, "damage", 1); + }); + + it("reflects rank-scaled block value after a landed direct melee hit on the player", () => { + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 80, role: "tank" }); + useCombatStore.setState((state) => ({ + gearStats: { ...EMPTY_ITEM_STATS, blockValue: 1_000 }, + talentRanks: { ...state.talentRanks, [WOW335_WARRIOR_DAMAGE_SHIELD_TALENT_ID]: 2 }, + })); + usePartyStore.getState().initializeParty("damage-shield-player", 80, useCombatStore.getState().health, "tank", 1); + registerAttacker("damage-shield-player-target", PLAYER_AGGRO_ID); + + useCombatStore.getState().advanceMobCombat(1_000); + + const state = useCombatStore.getState(); + const blockValue = deriveCharacterStats( + state.classId, + state.level, + state.gearStats, + state.raceId, + undefined, + state.secondaryClassId, + ).blockValue; + expect(useCombatStore.getState().lastCombatResult?.landed).toBe(true); + expect(reflectedEvent("damage-shield-player-target", PLAYER_AGGRO_ID)).toMatchObject({ + rawAmount: wow335WarriorDamageShieldReflectDamage(blockValue, 2, true), + effectiveAmount: wow335WarriorDamageShieldReflectDamage(blockValue, 2, true), + school: "physical", + }); + }); + + it("reflects a generated Warrior companion's block value and talent rank", () => { + const warrior = createConfiguredPartyMember({ + name: "Damage Shield Warrior", + classId: "warrior", + specialization: "Protection", + specializationId: "warrior:protection", + talentTreeId: "warrior-protection", + talentRanks: { [WOW335_WARRIOR_DAMAGE_SHIELD_TALENT_ID]: 1 }, + role: "tank", + }, 80, 0, "damage-shield-party"); + usePartyStore.getState().initializeParty("damage-shield-party", 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ members: [{ + ...warrior, + gearStats: { ...EMPTY_ITEM_STATS, blockValue: 1_000 }, + }] }); + registerPartyRuntimePosition(warrior.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + registerAttacker("damage-shield-party-target", warrior.id); + + useCombatStore.getState().advanceMobCombat(1_000); + + const partyMember = usePartyStore.getState().members.find((member) => member.id === warrior.id)!; + const blockValue = deriveCharacterStats( + partyMember.classId, + partyMember.level, + partyMember.gearStats, + partyMember.raceId, + ).blockValue; + expect(useCombatStore.getState().lastCombatResult?.landed).toBe(true); + expect(reflectedEvent("damage-shield-party-target", warrior.id)).toMatchObject({ + rawAmount: wow335WarriorDamageShieldReflectDamage(blockValue, 1, true), + effectiveAmount: wow335WarriorDamageShieldReflectDamage(blockValue, 1, true), + school: "physical", + }); + }); +}); diff --git a/src/game/wow335WarriorDamageShieldRuntime.test.ts b/src/game/wow335WarriorDamageShieldRuntime.test.ts new file mode 100644 index 00000000..53e3a03e --- /dev/null +++ b/src/game/wow335WarriorDamageShieldRuntime.test.ts @@ -0,0 +1,17 @@ +import { describe, expect, it } from "vitest"; +import { wow335WarriorDamageShieldReflectDamage } from "./wow335WarriorDamageShieldRuntime"; + +describe("WoW 3.3.5 Warrior Damage Shield generated rank mechanics", () => { + it.each([ + [1, 100], + [2, 200], + ] as const)("reflects the generated rank %i percentage of block value", (rank, expected) => { + expect(wow335WarriorDamageShieldReflectDamage(1_000, rank, true)).toBe(expected); + }); + + it("does not reflect without rank, block value, or a landed direct melee hit", () => { + expect(wow335WarriorDamageShieldReflectDamage(1_000, 0, true)).toBe(0); + expect(wow335WarriorDamageShieldReflectDamage(1_000, 2, false)).toBe(0); + expect(wow335WarriorDamageShieldReflectDamage(0, 2, true)).toBe(0); + }); +}); diff --git a/src/game/wow335WarriorDamageShieldRuntime.ts b/src/game/wow335WarriorDamageShieldRuntime.ts new file mode 100644 index 00000000..42a597b3 --- /dev/null +++ b/src/game/wow335WarriorDamageShieldRuntime.ts @@ -0,0 +1,27 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_WARRIOR_DAMAGE_SHIELD_TALENT_ID = "talent-2246"; +export const WOW335_WARRIOR_DAMAGE_SHIELD_ABILITY_ID = "wow335-warrior-damage-shield"; + +const DAMAGE_SHIELD_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_WARRIOR_DAMAGE_SHIELD_TALENT_ID +)); + +/** + * Returns the generated-rank block-value reflection for a landed direct melee + * hit. The generated tooltip is the authoritative source for both the 10/20% + * values and the direct-melee trigger. + */ +export function wow335WarriorDamageShieldReflectDamage( + blockValue: number, + rank: number, + directMeleeHit: boolean, +): number { + const safeRank = Math.min(2, Math.max(0, Math.trunc(Number.isFinite(rank) ? rank : 0))); + if (safeRank === 0 || !directMeleeHit || !Number.isFinite(blockValue) || blockValue <= 0) return 0; + + const rankDescription = DAMAGE_SHIELD_SOURCE?.rankDescriptions[safeRank - 1]; + const percentage = Number(rankDescription?.match(/damage equal to (\d+)% of your block value/i)?.[1]); + if (!Number.isFinite(percentage) || percentage <= 0) return 0; + return Math.max(0, Math.round(blockValue * percentage / 100)); +} diff --git a/src/game/wow335WarriorImprovedDefensiveStance.integration.test.ts b/src/game/wow335WarriorImprovedDefensiveStance.integration.test.ts new file mode 100644 index 00000000..7492a68d --- /dev/null +++ b/src/game/wow335WarriorImprovedDefensiveStance.integration.test.ts @@ -0,0 +1,245 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { applyAura } from "./combatAuras"; +import { useCombatStore } from "./combatStore"; +import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition } from "./partyRuntimeRegistry"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { abilitiesForClass } from "./abilityCatalog"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { + WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_ENRAGE_AURA_ID, + WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID, +} from "./wow335WarriorImprovedDefensiveStanceRuntime"; + +function defensiveStanceAuraDefinition() { + const ability = abilitiesForClass("warrior").find((candidate) => candidate.name === "Defensive Stance"); + const effect = ability?.effects.find((candidate) => candidate.kind === "apply-aura"); + if (!effect || effect.kind !== "apply-aura") throw new Error("Defensive Stance aura is missing."); + return effect.aura; +} + +function applyDefensiveStance(targetId: string, now: number): void { + const auraResult = applyAura(useCombatStore.getState().auras, { + definition: defensiveStanceAuraDefinition(), + sourceId: targetId, + targetId, + now, + }); + useCombatStore.setState({ auras: [...auraResult.auras] }); +} + +function configurePartyWarrior( + partyId: string, + options: { readonly parryRating?: number } = {}, +) { + const warrior = createConfiguredPartyMember({ + name: "Stance Warrior", + classId: "warrior", + specialization: "Protection", + specializationId: "warrior:protection", + talentTreeId: "warrior-protection", + talentRanks: { [WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID]: 2 }, + role: "tank", + }, 80, 0, partyId); + usePartyStore.getState().initializeParty(partyId, 80, useCombatStore.getState().health, "damage", 1); + usePartyStore.setState({ + members: [{ + ...warrior, + gearStats: { ...EMPTY_ITEM_STATS, ...(options.parryRating ? { parryRating: options.parryRating } : {}) }, + }], + }); + registerPartyRuntimePosition(warrior.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + return warrior; +} + +function registerAttacker( + id: string, + targetActorId: string, + attack: typeof DEFAULT_ENEMY_ATTACK = DEFAULT_ENEMY_ATTACK, +): void { + useCombatStore.getState().registerMob(id, { + name: id, + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [{ ...attack, damageMultiplier: 2 }], + }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.getState().damageMob(id, 1, 100, { + actorId: targetActorId, + role: "tank", + }, "physical"); +} + +function enrageAuraFor(targetId: string) { + return useCombatStore.getState().auras.find((aura) => ( + aura.targetId === targetId && aura.definition.id === WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_ENRAGE_AURA_ID + )); +} + +function directHitFromActor( + targetId: string, + actorId: string, + school: "physical" | "fire", + now: number, +): number { + const abilityId = `defensive-stance-test-${school}`; + return useCombatStore.getState().damageMob( + targetId, + 1_000, + now, + { actorId, role: "tank", abilityId }, + school, + { + attackKind: school === "physical" ? "melee" : "spell", + abilityId, + seed: `${actorId}:${targetId}:${school}`, + rules: { + canMiss: false, + canCrit: false, + canDodge: false, + canParry: false, + canBlock: false, + }, + }, + ).amount; +} + +describe("WoW Warrior Improved Defensive Stance runtime integration", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty("defensive-stance-tests", 80, useCombatStore.getState().health, "damage", 1); + }); + + it("adds the rank reduction to Defensive Stance for player damage and gates it outside the stance", () => { + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 80, role: "tank" }); + useCombatStore.setState((state) => ({ + health: 100_000, + maxHealth: 100_000, + gearStats: EMPTY_ITEM_STATS, + talentRanks: { + ...state.talentRanks, + [WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID]: 2, + }, + })); + + expect(useCombatStore.getState().damagePlayer(1_000, "nature", 80, 100)).toBe(1_000); + applyDefensiveStance(PLAYER_AGGRO_ID, 200); + expect(useCombatStore.getState().damagePlayer(1_000, "nature", 80, 300)).toBe(820); + }); + + it("applies stance mitigation to generated Warrior companions taking spell damage", () => { + const runIncomingSpell = (withStance: boolean): number => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty("defensive-stance-party", 80, useCombatStore.getState().health, "damage", 1); + const warrior = configurePartyWarrior("defensive-stance-party"); + if (withStance) applyDefensiveStance(warrior.id, 200); + const spellAttack = { + ...DEFAULT_ENEMY_ATTACK, + id: "stance-fire-bolt", + name: "Stance Fire Bolt", + delivery: "projectile" as const, + school: "fire" as const, + animation: "cast" as const, + }; + registerAttacker("defensive-stance-companion-attacker", warrior.id, spellAttack); + useCombatStore.getState().advanceMobCombat(1_000); + useCombatStore.getState().advanceMobCombat(2_500); + const event = useCombatStore.getState().combatEvents.find((candidate) => ( + candidate.kind === "damage" + && candidate.sourceActorId === "defensive-stance-companion-attacker" + && candidate.targetActorId === warrior.id + )); + if (!event) throw new Error("Expected the companion to receive the enemy spell."); + return event.effectiveAmount; + }; + + const withoutStance = runIncomingSpell(false); + const withStance = runIncomingSpell(true); + expect(withStance).toBe(Math.round(withoutStance * 0.82)); + }); + + it("grants the player a 12-second Enrage after a generated successful parry", () => { + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 80, role: "tank" }); + useCombatStore.setState((state) => ({ + gearStats: { ...EMPTY_ITEM_STATS, parryRating: 100_000 }, + talentRanks: { ...state.talentRanks, [WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID]: 2 }, + })); + registerAttacker("defensive-stance-player-parry", PLAYER_AGGRO_ID); + useCombatStore.getState().advanceMobCombat(1_000); + + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.sourceActorId === "defensive-stance-player-parry" + && event.targetActorId === PLAYER_AGGRO_ID + && event.outcome === "parry" + ))).toBe(true); + expect(enrageAuraFor(PLAYER_AGGRO_ID)).toMatchObject({ + appliedAt: 1_000, + expiresAt: 13_000, + definition: { dispelCategory: "enrage" }, + }); + }); + + it("grants a generated Warrior companion the same Enrage after parrying", () => { + const warrior = configurePartyWarrior("defensive-stance-parry-party", { parryRating: 100_000 }); + registerAttacker("defensive-stance-party-parry", warrior.id); + advanceDungeonPartyCombat(1_000); + useCombatStore.getState().advanceMobCombat(1_000); + + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.sourceActorId === "defensive-stance-party-parry" + && event.targetActorId === warrior.id + && event.outcome === "parry" + ))).toBe(true); + expect(enrageAuraFor(warrior.id)).toMatchObject({ + appliedAt: 1_000, + expiresAt: 13_000, + definition: { dispelCategory: "enrage" }, + }); + }); + + it("boosts the player's physical damage by six percent after Enrage, without boosting fire damage", () => { + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 80, role: "tank" }); + useCombatStore.setState((state) => ({ + gearStats: { ...EMPTY_ITEM_STATS, parryRating: 100_000 }, + talentRanks: { ...state.talentRanks, [WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID]: 2 }, + })); + const targetId = "defensive-stance-player-damage-target"; + registerAttacker(targetId, PLAYER_AGGRO_ID); + + const physicalBefore = directHitFromActor(targetId, PLAYER_AGGRO_ID, "physical", 200); + const fireBefore = directHitFromActor(targetId, PLAYER_AGGRO_ID, "fire", 300); + useCombatStore.getState().advanceMobCombat(1_000); + expect(enrageAuraFor(PLAYER_AGGRO_ID)).toBeDefined(); + + expect(directHitFromActor(targetId, PLAYER_AGGRO_ID, "physical", 1_100)) + .toBe(Math.round(physicalBefore * 1.06)); + expect(directHitFromActor(targetId, PLAYER_AGGRO_ID, "fire", 1_200)).toBe(fireBefore); + }); + + it("boosts a generated Warrior companion's physical damage by six percent after Enrage, without boosting fire damage", () => { + const warrior = configurePartyWarrior("defensive-stance-companion-damage-party", { parryRating: 100_000 }); + const targetId = "defensive-stance-companion-damage-target"; + registerAttacker(targetId, warrior.id); + + const physicalBefore = directHitFromActor(targetId, warrior.id, "physical", 200); + const fireBefore = directHitFromActor(targetId, warrior.id, "fire", 300); + advanceDungeonPartyCombat(1_000); + useCombatStore.getState().advanceMobCombat(1_000); + expect(enrageAuraFor(warrior.id)).toBeDefined(); + + expect(directHitFromActor(targetId, warrior.id, "physical", 1_100)) + .toBe(Math.round(physicalBefore * 1.06)); + expect(directHitFromActor(targetId, warrior.id, "fire", 1_200)).toBe(fireBefore); + }); +}); diff --git a/src/game/wow335WarriorImprovedDefensiveStanceRuntime.test.ts b/src/game/wow335WarriorImprovedDefensiveStanceRuntime.test.ts new file mode 100644 index 00000000..e6ccbcd4 --- /dev/null +++ b/src/game/wow335WarriorImprovedDefensiveStanceRuntime.test.ts @@ -0,0 +1,68 @@ +import { describe, expect, it } from "vitest"; +import { applyAura, resolveDamageValue } from "./combatAuras"; +import { + WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_ENRAGE_DURATION_MS, + wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage, + wow335WarriorImprovedDefensiveStanceEnrageAuraDefinition, + wow335WarriorImprovedDefensiveStanceProfile, + wow335WarriorImprovedDefensiveStanceShouldProc, +} from "./wow335WarriorImprovedDefensiveStanceRuntime"; + +describe("WoW 3.3.5 Warrior Improved Defensive Stance", () => { + it("reads rank-specific mitigation and avoidance-proc values from generated talent rows", () => { + expect(wow335WarriorImprovedDefensiveStanceProfile(1)).toMatchObject({ + rank: 1, + damageTakenReductionPercent: 4, + procChancePercent: 50, + enragePhysicalDamagePercent: 6, + enrageDurationMs: WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_ENRAGE_DURATION_MS, + }); + expect(wow335WarriorImprovedDefensiveStanceProfile(2)).toMatchObject({ + rank: 2, + damageTakenReductionPercent: 8, + procChancePercent: 100, + enragePhysicalDamagePercent: 6, + enrageDurationMs: 12_000, + }); + expect(wow335WarriorImprovedDefensiveStanceProfile(0)).toBeNull(); + }); + + it("adds its percentage points to Defensive Stance's base reduction only while the stance is active", () => { + expect(wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage(1_000, 900, 1, true)).toBe(860); + expect(wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage(1_000, 900, 2, true)).toBe(820); + expect(wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage(1_000, 900, 2, false)).toBe(900); + }); + + it.each(["block", "parry", "dodge"] as const)("can proc from %s at the generated rank chance", (trigger) => { + expect(wow335WarriorImprovedDefensiveStanceShouldProc(1, trigger, 0.49)).toBe(true); + expect(wow335WarriorImprovedDefensiveStanceShouldProc(1, trigger, 0.5)).toBe(false); + expect(wow335WarriorImprovedDefensiveStanceShouldProc(2, trigger, 0.999)).toBe(true); + }); + + it("does not proc from ordinary hits or without the talent", () => { + expect(wow335WarriorImprovedDefensiveStanceShouldProc(2, "hit", 0)).toBe(false); + expect(wow335WarriorImprovedDefensiveStanceShouldProc(0, "block", 0)).toBe(false); + }); + + it("models the triggered Enrage as a 12-second physical-damage buff", () => { + const definition = wow335WarriorImprovedDefensiveStanceEnrageAuraDefinition(); + const result = applyAura([], { + definition, + sourceId: "warrior", + targetId: "warrior", + now: 0, + }); + expect(definition.dispelCategory).toBe("enrage"); + expect(result.aura.expiresAt).toBe(WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_ENRAGE_DURATION_MS); + expect(resolveDamageValue(1_000, result.auras, { + direction: "dealt", + school: "physical", + attackKind: "melee", + })).toBe(1_060); + expect(resolveDamageValue(1_000, result.auras, { + direction: "dealt", + school: "fire", + attackKind: "spell", + })).toBe(1_000); + }); +}); diff --git a/src/game/wow335WarriorImprovedDefensiveStanceRuntime.ts b/src/game/wow335WarriorImprovedDefensiveStanceRuntime.ts new file mode 100644 index 00000000..aeb84eb2 --- /dev/null +++ b/src/game/wow335WarriorImprovedDefensiveStanceRuntime.ts @@ -0,0 +1,118 @@ +import type { ActiveAura, AuraDefinition } from "./combatAuras"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID = "talent-1652"; +export const WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_ENRAGE_AURA_ID = + "wow335:warrior:improved-defensive-stance-enrage"; +export const WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_ENRAGE_DURATION_MS = 12_000; + +const IMPROVED_DEFENSIVE_STANCE_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_TALENT_ID +)); + +export type Wow335WarriorAvoidanceTrigger = "block" | "parry" | "dodge"; + +export interface Wow335WarriorImprovedDefensiveStanceProfile { + readonly rank: 1 | 2; + readonly damageTakenReductionPercent: number; + readonly procChancePercent: number; + readonly enragePhysicalDamagePercent: number; + readonly enrageDurationMs: number; +} + +/** Reads the rank-specific reduction and proc chance from the generated talent source. */ +export function wow335WarriorImprovedDefensiveStanceProfile( + rank: number, +): Wow335WarriorImprovedDefensiveStanceProfile | null { + const safeRank = Math.min(2, Math.max(0, Math.trunc(Number.isFinite(rank) ? rank : 0))); + const description = IMPROVED_DEFENSIVE_STANCE_SOURCE?.rankDescriptions[safeRank - 1]; + const rankEffect = IMPROVED_DEFENSIVE_STANCE_SOURCE?.rankEffects[safeRank - 1]; + if (safeRank === 0 || !description || !rankEffect) return null; + + const damageTakenReductionPercent = Number( + description.match(/damage taken is reduced by (\d+)%/i)?.[1], + ); + const enragePhysicalDamagePercent = Number( + description.match(/increasing Physical damage caused by (\d+)%/i)?.[1], + ); + const enrageDurationSeconds = Number(description.match(/for (\d+) seconds\.?$/i)?.[1]); + if (![damageTakenReductionPercent, enragePhysicalDamagePercent, enrageDurationSeconds] + .every(Number.isFinite)) return null; + + return { + rank: safeRank as 1 | 2, + damageTakenReductionPercent, + procChancePercent: Math.max(0, Math.min(100, rankEffect.procChance)), + enragePhysicalDamagePercent, + enrageDurationMs: enrageDurationSeconds * 1_000, + }; +} + +/** + * Adds this talent's percentage points to the existing aura mitigation pass. + * `auraAdjustedAmount` already includes Defensive Stance's base 10% reduction; + * subtracting the rank bonus from the pre-aura value keeps percentage auras additive. + */ +export function wow335WarriorImprovedDefensiveStanceAdditiveIncomingDamage( + baseAmount: number, + auraAdjustedAmount: number, + rank: number, + defensiveStanceActive: boolean, +): number { + if (!Number.isFinite(auraAdjustedAmount)) return 0; + const profile = defensiveStanceActive + ? wow335WarriorImprovedDefensiveStanceProfile(rank) + : null; + if (!profile || !Number.isFinite(baseAmount) || baseAmount <= 0) { + return Math.max(0, auraAdjustedAmount); + } + return Math.max(0, Math.round( + auraAdjustedAmount - baseAmount * profile.damageTakenReductionPercent / 100, + )); +} + +/** Identifies the generated rankless Defensive Stance aura from local spell 71. */ +export function wow335WarriorHasDefensiveStance( + auras: readonly ActiveAura[], + targetId: string, + now: number, +): boolean { + return auras.some((aura) => ( + aura.targetId === targetId + && aura.definition.id.startsWith("wow335:71:effect:") + && aura.definition.utilityTags?.includes("shapeshift") + && (aura.expiresAt === null || aura.expiresAt > now) + )); +} + +/** The generated rank proc has no cooldown and can follow any block, parry, or dodge. */ +export function wow335WarriorImprovedDefensiveStanceShouldProc( + rank: number, + trigger: string, + roll: number, +): boolean { + const profile = wow335WarriorImprovedDefensiveStanceProfile(rank); + if (!profile || !["block", "parry", "dodge"].includes(trigger) + || !Number.isFinite(roll) || roll < 0 || roll >= 1) return false; + return roll < profile.procChancePercent / 100; +} + +export function wow335WarriorImprovedDefensiveStanceEnrageAuraDefinition(): AuraDefinition { + const profile = wow335WarriorImprovedDefensiveStanceProfile(1)!; + return { + id: WOW335_WARRIOR_IMPROVED_DEFENSIVE_STANCE_ENRAGE_AURA_ID, + name: "Enrage", + disposition: "buff", + durationMs: profile.enrageDurationMs, + maxStacks: 1, + stackBehavior: "refresh", + dispelCategory: "enrage", + modifiers: [{ + kind: "damage", + direction: "dealt", + school: "physical", + operation: "percent", + value: profile.enragePhysicalDamagePercent / 100, + }], + }; +} diff --git a/src/game/wow335WarriorUnbridledWrath.integration.test.ts b/src/game/wow335WarriorUnbridledWrath.integration.test.ts new file mode 100644 index 00000000..58a25f8c --- /dev/null +++ b/src/game/wow335WarriorUnbridledWrath.integration.test.ts @@ -0,0 +1,206 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { useCombatStore, stableCombatUnit } from "./combatStore"; +import { EMPTY_ITEM_STATS, type WeaponStats } from "./itemStats"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { clearPartyRuntimeRegistry, registerPartyRuntimePosition, updatePartyRuntimeTargetVisibility } from "./partyRuntimeRegistry"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { createConfiguredPartyMember, usePartyStore } from "./partyStore"; +import { + WOW335_WARRIOR_UNBRIDLED_WRATH_ABILITY_ID, + WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID, +} from "./wow335WarriorUnbridledWrathRuntime"; + +const TARGET_ID = "unbridled-wrath-target"; +const BASE_NOW = 10_000; +const SLOW_TEST_WEAPON: WeaponStats = { + damageMin: 90, + damageMax: 110, + damageSchool: "physical", + speedMs: 4_000, +}; + +function findTimeWithLandedProcChance(seedForNow: (now: number) => string): number { + for (let now = BASE_NOW; now < BASE_NOW + 100_000; now += 1) { + const seed = seedForNow(now); + const outcomeRoll = stableCombatUnit(`${seed}:outcome`); + const procRoll = stableCombatUnit(`${seed}:wow335-warrior-unbridled-wrath`); + // Rank 1 with the 4.0-second test weapon is 20%; the player's usual + // 2.4-second fallback is 12%. This interval distinguishes those speeds. + if (outcomeRoll >= 0.1 && outcomeRoll < 0.9 && procRoll >= 0.12 && procRoll < 0.2) return now; + } + throw new Error("Could not find a deterministic landed Unbridled Wrath proc roll."); +} + +function unbridledResourceEvents(targetActorId: string) { + return useCombatStore.getState().combatEvents.filter((event) => ( + event.kind === "resource" + && event.targetActorId === targetActorId + && event.abilityId === WOW335_WARRIOR_UNBRIDLED_WRATH_ABILITY_ID + )); +} + +function setupPlayerWarrior(rank: number, rage = 0): void { + clearMobRuntimeRegistry(); + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 80, role: "damage" }); + useCombatStore.getState().setPlayerPosition([0, 0, 0]); + useCombatStore.setState((state) => ({ + gearStats: { + ...EMPTY_ITEM_STATS, + meleeWeapon: SLOW_TEST_WEAPON, + hitRating: 1_000_000, + hasteRating: 1_000_000, + }, + talentRanks: { ...state.talentRanks, [WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID]: rank }, + resource: rage, + resourcePools: { ...state.resourcePools, rage }, + })); + useCombatStore.getState().registerMob(TARGET_ID, { + name: TARGET_ID, + level: 80, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); +} + +function runPlayerAutoAttack(rank: number, rage = 0) { + setupPlayerWarrior(rank, rage); + const now = findTimeWithLandedProcChance((candidate) => `${PLAYER_AGGRO_ID}:auto:${TARGET_ID}:${candidate}`); + useCombatStore.setState({ autoAttackTargetId: TARGET_ID, nextAutoAttackAt: now }); + useCombatStore.getState().tick(0, now); + return now; +} + +function setupWarriorCompanion(rank: number) { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + const partyId = "unbridled-wrath-party"; + usePartyStore.getState().initializeParty(partyId, 80, useCombatStore.getState().health, "damage"); + const configured = createConfiguredPartyMember({ + name: "Unbridled Warrior", + classId: "warrior", + specialization: "Arms", + specializationId: "warrior:arms", + talentTreeId: "warrior-arms", + talentRanks: { [WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID]: rank }, + role: "damage", + }, 80, 0, partyId); + const companion = { + ...configured, + gearStats: { + ...EMPTY_ITEM_STATS, + meleeWeapon: SLOW_TEST_WEAPON, + hitRating: 1_000_000, + hasteRating: 1_000_000, + }, + resource: 0, + resourcePools: { ...configured.resourcePools, rage: 0 }, + cooldowns: Object.fromEntries(configured.cooldowns + ? Object.keys(configured.cooldowns).map((abilityId) => [abilityId, BASE_NOW + 60_000]) + : []), + nextActionAt: BASE_NOW + 60_000, + }; + usePartyStore.setState({ members: [companion], command: "attack", activeMobId: TARGET_ID }); + useCombatStore.getState().registerMob(TARGET_ID, { + name: TARGET_ID, + level: 80, + maxHealth: 1_000_000, + xpReward: 0, + }); + setMobPosition(TARGET_ID, [2, 0, 0]); + useCombatStore.getState().damageMob(TARGET_ID, 1, BASE_NOW - 1_000); + registerPartyRuntimePosition(companion.id, [0, 0, 0]); + updatePartyRuntimeTargetVisibility(companion.id, TARGET_ID, true); + useCombatStore.getState().synchronizeActors(); + return companion; +} + +describe("WoW Warrior Unbridled Wrath live mechanics", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + }); + + it("grants generated rank Rage only after a landed, damaging player main-hand white hit", () => { + const now = runPlayerAutoAttack(1); + expect(useCombatStore.getState().lastCombatResult?.landed).toBe(true); + expect(unbridledResourceEvents(PLAYER_AGGRO_ID)).toMatchObject([{ + occurredAt: now, + rawAmount: 2, + effectiveAmount: 2, + overheal: 0, + }]); + expect(useCombatStore.getState().resourcePools.rage).toBe(8); + + runPlayerAutoAttack(0); + expect(unbridledResourceEvents(PLAYER_AGGRO_ID)).toHaveLength(0); + expect(useCombatStore.getState().resourcePools.rage).toBe(6); + }); + + it("uses the companion's un-hasted main-hand speed and the rank-2 four-Rage value", () => { + const companion = setupWarriorCompanion(1); + const seedForNow = (now: number) => ( + `${companion.id}:${TARGET_ID}:party-auto-attack:${now}:scent-of-blood-auto-attack` + ); + const now = findTimeWithLandedProcChance(seedForNow); + advanceDungeonPartyCombat(now); + + const damageEvent = useCombatStore.getState().combatEvents.find((event) => ( + event.kind === "damage" && event.sourceActorId === companion.id + && event.targetActorId === TARGET_ID && event.abilityId === "party-auto-attack" + )); + expect(damageEvent?.effectiveAmount).toBeGreaterThan(0); + expect(usePartyStore.getState().members[0]?.resourcePools.rage).toBe(8); + expect(unbridledResourceEvents(companion.id)).toMatchObject([{ + occurredAt: now, + rawAmount: 2, + effectiveAmount: 2, + overheal: 0, + }]); + + const rankTwo = setupWarriorCompanion(2); + const nextNow = findTimeWithLandedProcChance((candidate) => ( + `${rankTwo.id}:${TARGET_ID}:party-auto-attack:${candidate}:scent-of-blood-auto-attack` + )); + advanceDungeonPartyCombat(nextNow); + expect(usePartyStore.getState().members[0]?.resourcePools.rage).toBe(10); + expect(unbridledResourceEvents(rankTwo.id)).toMatchObject([{ + rawAmount: 4, + effectiveAmount: 4, + overheal: 0, + }]); + }); + + it("caps the player's Rage and records the effective rank-2 restoration", () => { + const now = runPlayerAutoAttack(2, 99); + expect(useCombatStore.getState().resourcePools.rage).toBe(100); + expect(unbridledResourceEvents(PLAYER_AGGRO_ID)).toMatchObject([{ + occurredAt: now, + rawAmount: 4, + effectiveAmount: 1, + overheal: 3, + }]); + }); + + it("does not proc from an unsuccessful white hit", () => { + setupPlayerWarrior(2); + useCombatStore.setState((state) => ({ + gearStats: { ...state.gearStats, hitRating: 0 }, + })); + let now = BASE_NOW; + for (; now < BASE_NOW + 100_000; now += 1) { + if (stableCombatUnit(`${PLAYER_AGGRO_ID}:auto:${TARGET_ID}:${now}:outcome`) < 0.04) break; + } + if (now >= BASE_NOW + 100_000) throw new Error("Could not find a deterministic miss roll."); + useCombatStore.setState({ autoAttackTargetId: TARGET_ID, nextAutoAttackAt: now }); + useCombatStore.getState().tick(0, now); + + expect(useCombatStore.getState().lastCombatResult?.outcome).toBe("miss"); + expect(unbridledResourceEvents(PLAYER_AGGRO_ID)).toHaveLength(0); + expect(useCombatStore.getState().resourcePools.rage).toBe(0); + }); +}); diff --git a/src/game/wow335WarriorUnbridledWrathRuntime.test.ts b/src/game/wow335WarriorUnbridledWrathRuntime.test.ts new file mode 100644 index 00000000..3c23bacd --- /dev/null +++ b/src/game/wow335WarriorUnbridledWrathRuntime.test.ts @@ -0,0 +1,40 @@ +import { describe, expect, it } from "vitest"; +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import { + wow335WarriorUnbridledWrathChancePerMeleeWhiteHit, + wow335WarriorUnbridledWrathProfile, + wow335WarriorUnbridledWrathShouldProc, +} from "./wow335WarriorUnbridledWrathRuntime"; + +describe("WoW 3.3.5 Warrior Unbridled Wrath", () => { + it("keeps generated 2/4 Rage tooltip amounts and fills only the missing rate from the 3-PPM-per-rank model", () => { + const source = WOW335_TALENT_NODES.find((node) => node.id === "talent-159"); + + expect(source?.name).toBe("Unbridled Wrath"); + expect(source?.rankSpellIds).toEqual([12322, 12999]); + expect(source?.rankDescriptions.map((description) => ( + Number(description.match(/generate (\d+) additional rage points/i)?.[1]) + ))).toEqual([2, 4]); + expect(source?.rankEffects.map((rank) => rank.procChance)).toEqual([0, 0]); + expect(source?.rankEffects.map((rank) => rank.effects[0]?.triggerSpellId)).toEqual([12964, 812964]); + expect([1, 2].map((rank) => wow335WarriorUnbridledWrathProfile(rank))).toEqual([ + { rank: 1, ragePerProc: 2, procsPerMinutePerWeapon: 3 }, + { rank: 2, ragePerProc: 4, procsPerMinutePerWeapon: 6 }, + ]); + }); + + it("uses weapon speed to convert per-hand PPM into chance on each eligible melee white hit", () => { + expect(wow335WarriorUnbridledWrathChancePerMeleeWhiteHit(1, 2_600)).toBeCloseTo(0.13); + expect(wow335WarriorUnbridledWrathChancePerMeleeWhiteHit(2, 2_600)).toBeCloseTo(0.26); + expect(wow335WarriorUnbridledWrathChancePerMeleeWhiteHit(1, 1_400)).toBeCloseTo(0.07); + expect(wow335WarriorUnbridledWrathChancePerMeleeWhiteHit(0, 2_600)).toBe(0); + expect(wow335WarriorUnbridledWrathChancePerMeleeWhiteHit(2, Number.NaN)).toBe(0); + }); + + it("resolves the proc roll at the computed chance boundary", () => { + expect(wow335WarriorUnbridledWrathShouldProc(1, 2_600, 0.1299)).toBe(true); + expect(wow335WarriorUnbridledWrathShouldProc(1, 2_600, 0.13)).toBe(false); + expect(wow335WarriorUnbridledWrathShouldProc(0, 2_600, 0)).toBe(false); + expect(wow335WarriorUnbridledWrathShouldProc(2, 2_600, 1)).toBe(false); + }); +}); diff --git a/src/game/wow335WarriorUnbridledWrathRuntime.ts b/src/game/wow335WarriorUnbridledWrathRuntime.ts new file mode 100644 index 00000000..4fe1670e --- /dev/null +++ b/src/game/wow335WarriorUnbridledWrathRuntime.ts @@ -0,0 +1,76 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; + +export const WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID = "talent-159"; +export const WOW335_WARRIOR_UNBRIDLED_WRATH_ABILITY_ID = "wow335-warrior-unbridled-wrath"; +export const WOW335_WARRIOR_UNBRIDLED_WRATH_PPM_PER_RANK = 3; + +const UNBRIDLED_WRATH_SOURCE = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_WARRIOR_UNBRIDLED_WRATH_TALENT_ID +)); + +export interface Wow335WarriorUnbridledWrathProfile { + readonly rank: 1 | 2; + readonly ragePerProc: number; + /** PPM for each weapon hand, matching the simulator's PPM manager. */ + readonly procsPerMinutePerWeapon: number; +} + +/** + * Reads Rage per proc from this project's generated tooltip and supplies the + * otherwise missing rate from the upstream WotLK Simulator's 3 PPM per rank + * model. The simulator applies that rate to melee white-hit proc masks and + * awards 1 Rage; local tooltip values remain authoritative for our 2/4 Rage. + * + * The generated rank-1 tooltip says 2 Rage but links child 12964, whose local + * payload says 1. Rank 2 says 4 Rage and links custom child 812964, which is + * absent from stock 3.3.5a. This helper intentionally trusts tooltip amounts + * and does not use child payloads or the generated procChance field (zero). + * Sources: https://github.com/wowsims/wotlk/blob/master/sim/warrior/talents.go + * and https://wotlkdb.com/?spell=12964 + */ +export function wow335WarriorUnbridledWrathProfile( + talentRank: number, +): Wow335WarriorUnbridledWrathProfile | null { + const maximumRank = Math.min(2, UNBRIDLED_WRATH_SOURCE?.rankDescriptions.length ?? 0); + const rank = Math.min(maximumRank, Math.max(0, Math.trunc( + Number.isFinite(talentRank) ? talentRank : 0, + ))); + if (rank === 0) return null; + + const description = UNBRIDLED_WRATH_SOURCE?.rankDescriptions[rank - 1]; + const rankEffect = UNBRIDLED_WRATH_SOURCE?.rankEffects[rank - 1]; + const ragePerProc = Number(description?.match(/generate (\d+) additional rage points/i)?.[1]); + if (!description || !rankEffect || rankEffect.spellId !== UNBRIDLED_WRATH_SOURCE?.rankSpellIds[rank - 1] + || !Number.isFinite(ragePerProc) || ragePerProc <= 0) return null; + + return { + rank: rank as 1 | 2, + ragePerProc, + procsPerMinutePerWeapon: WOW335_WARRIOR_UNBRIDLED_WRATH_PPM_PER_RANK * rank, + }; +} + +/** + * The upstream simulator's PPM manager converts per-weapon PPM to a proc + * chance using the weapon's un-hasted swing speed: PPM * speed / 60 seconds. + * Call only for a landed damaging hit matching its melee-white-hit mask. + */ +export function wow335WarriorUnbridledWrathChancePerMeleeWhiteHit( + talentRank: number, + weaponSwingSpeedMs: number, +): number { + const profile = wow335WarriorUnbridledWrathProfile(talentRank); + if (!profile || !Number.isFinite(weaponSwingSpeedMs) || weaponSwingSpeedMs <= 0) return 0; + return Math.min(1, profile.procsPerMinutePerWeapon * weaponSwingSpeedMs / 60_000); +} + +/** Resolve a deterministic 0..1 proc roll for an eligible melee white hit. */ +export function wow335WarriorUnbridledWrathShouldProc( + talentRank: number, + weaponSwingSpeedMs: number, + roll: number, +): boolean { + const chance = wow335WarriorUnbridledWrathChancePerMeleeWhiteHit(talentRank, weaponSwingSpeedMs); + if (chance <= 0 || !Number.isFinite(roll) || roll < 0 || roll >= 1) return false; + return roll < chance; +} diff --git a/src/game/wow335WarriorVictoryRush.integration.test.ts b/src/game/wow335WarriorVictoryRush.integration.test.ts new file mode 100644 index 00000000..afc42619 --- /dev/null +++ b/src/game/wow335WarriorVictoryRush.integration.test.ts @@ -0,0 +1,206 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { PLAYER_AGGRO_ID } from "./aggro"; +import { DEFAULT_ENEMY_ATTACK } from "./enemyAttacks"; +import { clearMobRuntimeRegistry, setMobPosition } from "./mobRuntimeRegistry"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "./partyRuntimeRegistry"; +import { EMPTY_ITEM_STATS } from "./itemStats"; +import { usePartyStore, createConfiguredPartyMember } from "./partyStore"; +import { useCombatStore } from "./combatStore"; +import { abilitiesForCharacter } from "./abilityCatalog"; +import { advanceDungeonPartyCombat, resetPartyRuntimeClock } from "./partyRuntime"; +import { + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG, + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG, + WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID, + WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG, +} from "./wow335WarriorVictoryRushRuntime"; + +function registerAttacker(id: string, targetActorId: string): void { + useCombatStore.getState().registerMob(id, { + name: id, + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [{ ...DEFAULT_ENEMY_ATTACK, damageMultiplier: 2 }], + }); + setMobPosition(id, [2, 0, 0]); + useCombatStore.getState().damageMob(id, 1, 100, { + actorId: targetActorId, + role: "tank", + }, "physical"); +} + +function hasAura(targetId: string, utilityTag: string): boolean { + return useCombatStore.getState().auras.some((aura) => ( + aura.targetId === targetId && aura.definition.utilityTags?.includes(utilityTag) + )); +} + +function registerParryTank(targetActorId: string): void { + registerAttacker(`victory-rush-attacker-${targetActorId}`, targetActorId); + useCombatStore.getState().advanceMobCombat(1_000); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.sourceActorId.startsWith("victory-rush-attacker-") + && event.targetActorId === targetActorId + && event.outcome === "parry" + ))).toBe(true); +} + +describe("WoW Warrior Improved Victory Rush parry proc", () => { + beforeEach(() => { + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + useCombatStore.getState().initializeCharacter({ classId: "mage", level: 80 }); + usePartyStore.getState().initializeParty("victory-rush-tests", 80, useCombatStore.getState().health, "damage", 1); + }); + + it("arms the player for ten seconds and starts the generated twelve-second internal cooldown", () => { + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 80, role: "tank" }); + useCombatStore.setState((state) => ({ + gearStats: { ...EMPTY_ITEM_STATS, parryRating: 100_000 }, + talentRanks: { ...state.talentRanks, [WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID]: 3 }, + })); + usePartyStore.getState().initializeParty("victory-rush-player", 80, useCombatStore.getState().health, "tank", 1); + const targetId = `victory-rush-attacker-${PLAYER_AGGRO_ID}`; + registerAttacker(targetId, PLAYER_AGGRO_ID); + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.name === "Victory Rush"); + expect(ability).toBeDefined(); + expect(useCombatStore.getState().castAbility(ability!.id, { targetActorId: targetId, now: 500 }).reason) + .toBe("condition-not-met"); + useCombatStore.getState().advanceMobCombat(1_000); + expect(useCombatStore.getState().combatEvents.some((event) => ( + event.sourceActorId === targetId && event.targetActorId === PLAYER_AGGRO_ID && event.outcome === "parry" + ))).toBe(true); + + const now = 1_000; + expect(hasAura(PLAYER_AGGRO_ID, WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG)).toBe(true); + expect(hasAura(PLAYER_AGGRO_ID, WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG)).toBe(true); + expect(useCombatStore.getState().auras.find((aura) => ( + aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes(WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG) + ))?.expiresAt).toBe(now + 10_000); + + const threatBefore = useCombatStore.getState().mobs[targetId]?.threatByActor[PLAYER_AGGRO_ID] ?? 0; + expect(useCombatStore.getState().castAbility(ability!.id, { targetActorId: targetId, now: 2_500 }).ok).toBe(true); + const stateAfterCast = useCombatStore.getState(); + const hit = stateAfterCast.combatEvents.find((event) => ( + event.sourceActorId === PLAYER_AGGRO_ID && event.targetActorId === targetId && event.abilityId === ability!.id + )); + const threatAfter = stateAfterCast.mobs[targetId]?.threatByActor[PLAYER_AGGRO_ID] ?? 0; + expect(hit?.critical).toBe(true); + expect(threatAfter - threatBefore).toBeCloseTo((hit?.effectiveAmount ?? 0) * 10, 0); + expect(hasAura(PLAYER_AGGRO_ID, WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG)).toBe(false); + expect(hasAura(PLAYER_AGGRO_ID, WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG)).toBe(true); + }); + + it("enables Victory Rush for twenty seconds after a qualifying kill and consumes that window on a landed hit", () => { + useCombatStore.getState().initializeCharacter({ classId: "warrior", level: 80, role: "damage" }); + const ability = useCombatStore.getState().abilities.find((candidate) => candidate.name === "Victory Rush"); + expect(ability).toBeDefined(); + useCombatStore.getState().registerMob("victory-rush-kill", { + name: "Victory Rush kill target", + level: 80, + maxHealth: 100, + xpReward: 100, + attacks: [], + }); + setMobPosition("victory-rush-kill", [2, 0, 0]); + useCombatStore.getState().registerMob("victory-rush-follow-up", { + name: "Victory Rush follow-up target", + level: 80, + maxHealth: 100_000, + xpReward: 0, + attacks: [], + }); + setMobPosition("victory-rush-follow-up", [2, 0, 0]); + expect(useCombatStore.getState().castAbility(ability!.id, { + targetActorId: "victory-rush-follow-up", + now: 500, + }).reason) + .toBe("condition-not-met"); + + useCombatStore.getState().damageMob("victory-rush-kill", 1_000, 100, { + actorId: PLAYER_AGGRO_ID, + role: "damage", + abilityId: "wow335-warrior-bloodthirst", + }, "physical", { + attackKind: "melee", + abilityId: "wow335-warrior-bloodthirst", + seed: "victory-rush-qualifying-kill", + rules: { canMiss: false, canCrit: false, canDodge: false, canParry: false, canBlock: false }, + }); + + const readyAura = useCombatStore.getState().auras.find((aura) => ( + aura.targetId === PLAYER_AGGRO_ID + && aura.definition.utilityTags?.includes(WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG) + )); + expect(readyAura?.expiresAt).toBe(20_100); + expect(useCombatStore.getState().castAbility(ability!.id, { + targetActorId: "victory-rush-follow-up", + now: 1_500, + }).ok).toBe(true); + expect(hasAura(PLAYER_AGGRO_ID, WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG)).toBe(false); + }); + + it("arms a generated Warrior companion on its own successful parry", () => { + const warrior = createConfiguredPartyMember({ + name: "Victory Rush Warrior", + classId: "warrior", + specialization: "Protection", + specializationId: "warrior:protection", + talentTreeId: "warrior-protection", + talentRanks: { [WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID]: 3 }, + role: "tank", + }, 80, 0, "victory-rush-party"); + usePartyStore.getState().initializeParty("victory-rush-party", 80, useCombatStore.getState().health, "damage", 2); + usePartyStore.setState({ members: [{ + ...warrior, + gearStats: { ...EMPTY_ITEM_STATS, parryRating: 100_000, hitRating: 100_000 }, + }] }); + registerPartyRuntimePosition(warrior.id, [0, 0, 0]); + useCombatStore.getState().synchronizeActors(); + registerParryTank(warrior.id); + + expect(hasAura(warrior.id, WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG)).toBe(true); + expect(hasAura(warrior.id, WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG)).toBe(true); + const targetId = `victory-rush-attacker-${warrior.id}`; + usePartyStore.setState((state) => ({ + members: state.members.map((member) => member.id === warrior.id ? { + ...member, + command: "attack", + activeMobId: targetId, + nextActionAt: 0, + globalCooldownEndsAt: 0, + status: "ready", + } : member), + })); + updatePartyRuntimeTargetVisibility(warrior.id, targetId, true); + const ability = abilitiesForCharacter("warrior", null).find((candidate) => candidate.name === "Victory Rush"); + expect(ability).toBeDefined(); + const threatBefore = useCombatStore.getState().mobs[targetId]?.threatByActor[warrior.id] ?? 0; + const combatEventCountBeforeCast = useCombatStore.getState().combatEvents.length; + advanceDungeonPartyCombat(4_000); + const stateAfterCast = useCombatStore.getState(); + const outgoing = stateAfterCast.combatEvents.slice(combatEventCountBeforeCast).filter((event) => ( + event.kind === "damage" && event.sourceActorId === warrior.id && event.targetActorId === targetId + )); + const hit = stateAfterCast.combatEvents.find((event) => ( + event.kind === "damage" + && event.sourceActorId === warrior.id && event.targetActorId === targetId && event.abilityId === ability!.id + )); + const threatAfter = stateAfterCast.mobs[targetId]?.threatByActor[warrior.id] ?? 0; + expect(hit).toBeDefined(); + expect(hit?.critical).toBe(true); + const otherDamageThreat = outgoing + .filter((event) => event.id !== hit?.id) + .reduce((total, event) => total + event.effectiveAmount * (warrior.role === "tank" ? 5 : 1), 0); + expect(threatAfter - threatBefore - otherDamageThreat) + .toBeCloseTo((hit?.effectiveAmount ?? 0) * 10, 0); + expect(hasAura(warrior.id, WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG)).toBe(false); + }); +}); diff --git a/src/game/wow335WarriorVictoryRushRuntime.test.ts b/src/game/wow335WarriorVictoryRushRuntime.test.ts new file mode 100644 index 00000000..09e9ecba --- /dev/null +++ b/src/game/wow335WarriorVictoryRushRuntime.test.ts @@ -0,0 +1,65 @@ +import { describe, expect, it } from "vitest"; +import { + wow335WarriorImprovedVictoryRushCooldownAuraDefinition, + wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent, + wow335WarriorImprovedVictoryRushProfile, + wow335WarriorImprovedVictoryRushReadyAuraDefinition, + wow335WarriorImprovedVictoryRushShouldProc, + wow335WarriorImprovedVictoryRushThreatScale, +} from "./wow335WarriorVictoryRushRuntime"; + +describe("WoW Warrior Improved Victory Rush profile", () => { + it("reads its generated rank proc, critical, threat, window, and internal cooldown values", () => { + expect([1, 2, 3].map((rank) => wow335WarriorImprovedVictoryRushProfile(rank))).toEqual([ + { + rank: 1, + parryProcChancePercent: 33, + criticalChanceBonusPercent: 20, + additionalThreatPercent: 33, + readyDurationMs: 10_000, + internalCooldownMs: 12_000, + }, + { + rank: 2, + parryProcChancePercent: 66, + criticalChanceBonusPercent: 40, + additionalThreatPercent: 66, + readyDurationMs: 10_000, + internalCooldownMs: 12_000, + }, + { + rank: 3, + parryProcChancePercent: 100, + criticalChanceBonusPercent: 60, + additionalThreatPercent: 100, + readyDurationMs: 10_000, + internalCooldownMs: 12_000, + }, + ]); + }); + + it("only arms after an eligible parry, while the internal cooldown is ready", () => { + expect(wow335WarriorImprovedVictoryRushShouldProc(1, true, false, 32.99)).toBe(true); + expect(wow335WarriorImprovedVictoryRushShouldProc(1, true, false, 33)).toBe(false); + expect(wow335WarriorImprovedVictoryRushShouldProc(3, false, false, 0)).toBe(false); + expect(wow335WarriorImprovedVictoryRushShouldProc(3, true, true, 0)).toBe(false); + expect(wow335WarriorImprovedVictoryRushShouldProc(0, true, false, 0)).toBe(false); + }); + + it("adds the generated critical chance to Victory Rush and doubles threat only from its parry window", () => { + expect(wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent(3, "Victory Rush")).toBe(60); + expect(wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent(3, "Whirlwind")).toBe(0); + expect(wow335WarriorImprovedVictoryRushThreatScale(3, "Victory Rush", true)).toBe(2); + expect(wow335WarriorImprovedVictoryRushThreatScale(2, "Victory Rush", true)).toBeCloseTo(1.66, 10); + expect(wow335WarriorImprovedVictoryRushThreatScale(3, "Victory Rush", false)).toBe(1); + expect(wow335WarriorImprovedVictoryRushReadyAuraDefinition(3)).toMatchObject({ + durationMs: 10_000, + utilityTags: ["wow335-warrior-improved-victory-rush-ready"], + }); + expect(wow335WarriorImprovedVictoryRushCooldownAuraDefinition(3)).toMatchObject({ + durationMs: 12_000, + hideFromAuraStrip: true, + utilityTags: ["wow335-warrior-improved-victory-rush-cooldown"], + }); + }); +}); diff --git a/src/game/wow335WarriorVictoryRushRuntime.ts b/src/game/wow335WarriorVictoryRushRuntime.ts new file mode 100644 index 00000000..64dc016d --- /dev/null +++ b/src/game/wow335WarriorVictoryRushRuntime.ts @@ -0,0 +1,146 @@ +import { WOW335_TALENT_NODES } from "./wow335Talents.generated"; +import type { AuraDefinition } from "./combatAuras"; + +export const WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID = "talent-161"; +export const WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG = "wow335-warrior-improved-victory-rush-ready"; +export const WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG = "wow335-warrior-improved-victory-rush-cooldown"; +export const WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_ABILITY_ID = "wow335-warrior-improved-victory-rush"; +export const WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG = "wow335-warrior-victory-rush-kill-ready"; +export const WOW335_WARRIOR_VICTORY_RUSH_KILL_WINDOW_MS = 20_000; + +export interface Wow335WarriorImprovedVictoryRushProfile { + readonly rank: number; + readonly parryProcChancePercent: number; + readonly criticalChanceBonusPercent: number; + readonly additionalThreatPercent: number; + readonly readyDurationMs: number; + readonly internalCooldownMs: number; +} + +const talent = WOW335_TALENT_NODES.find((node) => ( + node.id === WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_TALENT_ID +)); + +function boundedRank(rank: number): number { + return Math.min(3, Math.max(0, Math.trunc(Number.isFinite(rank) ? rank : 0))); +} + +function parsePositiveMatch(text: string | undefined, pattern: RegExp): number { + const value = Number(text?.match(pattern)?.[1]); + return Number.isFinite(value) && value > 0 ? value : 0; +} + +export function wow335WarriorImprovedVictoryRushProfile( + rank: number, +): Wow335WarriorImprovedVictoryRushProfile { + const safeRank = boundedRank(rank); + const rankIndex = safeRank - 1; + const rankDescription = safeRank > 0 ? talent?.rankDescriptions[rankIndex] : undefined; + return { + rank: safeRank, + parryProcChancePercent: safeRank > 0 + ? talent?.rankEffects[rankIndex]?.procChance ?? 0 + : 0, + criticalChanceBonusPercent: parsePositiveMatch( + rankDescription, + /critical strike chance of your Victory Rush by (\d+)%/i, + ), + additionalThreatPercent: parsePositiveMatch( + rankDescription, + /additional (\d+)% threat/i, + ), + readyDurationMs: parsePositiveMatch( + talent?.description, + /allow the use of Victory Rush for (\d+) seconds/i, + ) * 1_000, + internalCooldownMs: parsePositiveMatch( + talent?.description, + /once every (\d+) seconds/i, + ) * 1_000, + }; +} + +/** A successful parry can arm the generated Victory Rush window unless its ICD is active. */ +export function wow335WarriorImprovedVictoryRushShouldProc( + rank: number, + parried: boolean, + internalCooldownActive: boolean, + rollPercent: number, +): boolean { + const profile = wow335WarriorImprovedVictoryRushProfile(rank); + return profile.rank > 0 + && parried + && !internalCooldownActive + && Number.isFinite(rollPercent) + && rollPercent >= 0 + && rollPercent < profile.parryProcChancePercent; +} + +/** The tooltip's permanent rank bonus applies to every Victory Rush hit. */ +export function wow335WarriorImprovedVictoryRushCriticalChanceBonusPercent( + rank: number, + abilityName: string, +): number { + if (abilityName.trim().toLowerCase() !== "victory rush") return 0; + return wow335WarriorImprovedVictoryRushProfile(rank).criticalChanceBonusPercent; +} + +/** The extra-threat rider applies only to Victory Rush casts made from the parry window. */ +export function wow335WarriorImprovedVictoryRushThreatScale( + rank: number, + abilityName: string, + parryWindowReady: boolean, +): number { + if (!parryWindowReady || abilityName.trim().toLowerCase() !== "victory rush") return 1; + return 1 + wow335WarriorImprovedVictoryRushProfile(rank).additionalThreatPercent / 100; +} + +export function wow335WarriorImprovedVictoryRushReadyAuraDefinition( + rank: number, +): AuraDefinition | null { + const profile = wow335WarriorImprovedVictoryRushProfile(rank); + if (profile.rank <= 0 || profile.readyDurationMs <= 0) return null; + return { + id: WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG, + name: "Victory Rush ready", + description: `A parry enables Victory Rush with ${profile.additionalThreatPercent}% additional threat.`, + disposition: "buff", + durationMs: profile.readyDurationMs, + maxStacks: 1, + stackBehavior: "refresh", + uniqueBySource: true, + utilityTags: [WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_READY_TAG], + }; +} + +export function wow335WarriorImprovedVictoryRushCooldownAuraDefinition( + rank: number, +): AuraDefinition | null { + const profile = wow335WarriorImprovedVictoryRushProfile(rank); + if (profile.rank <= 0 || profile.internalCooldownMs <= 0) return null; + return { + id: WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG, + name: "Improved Victory Rush cooldown", + disposition: "buff", + durationMs: profile.internalCooldownMs, + maxStacks: 1, + stackBehavior: "refresh", + hideFromAuraStrip: true, + uniqueBySource: true, + utilityTags: [WOW335_WARRIOR_IMPROVED_VICTORY_RUSH_COOLDOWN_TAG], + }; +} + +export function wow335WarriorVictoryRushKillAuraDefinition(): AuraDefinition { + return { + id: WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG, + name: "Victory Rush ready", + description: "A qualifying kill enables Victory Rush for 20 seconds.", + disposition: "buff", + durationMs: WOW335_WARRIOR_VICTORY_RUSH_KILL_WINDOW_MS, + maxStacks: 1, + stackBehavior: "refresh", + uniqueBySource: true, + utilityTags: [WOW335_WARRIOR_VICTORY_RUSH_KILL_READY_TAG], + }; +} diff --git a/src/scene/DungeonShadowLight.tsx b/src/scene/DungeonShadowLight.tsx new file mode 100644 index 00000000..861f84e8 --- /dev/null +++ b/src/scene/DungeonShadowLight.tsx @@ -0,0 +1,58 @@ +import { useEffect, useRef } from "react"; +import { useFrame, useThree } from "@react-three/fiber"; +import { DirectionalLight } from "three"; +import type { DungeonPresentation, Vector3Tuple } from "../game/dungeonTypes"; +import type { ShadowQuality } from "../game/graphicsSettings"; + +export function DungeonShadowLight({ + presentation, + entrance, + quality, +}: { + readonly presentation: DungeonPresentation; + readonly entrance: Vector3Tuple; + readonly quality: ShadowQuality; +}) { + const light = useRef(null); + const scene = useThree((state) => state.scene); + const offset = presentation.directionalLight.offset; + useEffect(() => { + const target = light.current?.target; + if (!target) return; + scene.add(target); + return () => { scene.remove(target); }; + }, [scene]); + useFrame(({ camera }) => { + if (quality !== "high" || !light.current) return; + const target = light.current.target; + target.position.copy(camera.position); + light.current.position.set( + camera.position.x + offset[0], + camera.position.y + offset[1], + camera.position.z + offset[2], + ); + target.updateMatrixWorld(); + }); + const extent = quality === "high" ? 26 : 5; + return ( + + ); +} diff --git a/src/scene/GameScene.tsx b/src/scene/GameScene.tsx index a0cecf06..cc57e380 100644 --- a/src/scene/GameScene.tsx +++ b/src/scene/GameScene.tsx @@ -53,7 +53,9 @@ import { useOnlineSessionStore } from "../app/onlineSessionStore"; import { OnlinePlayerPopulation } from "./OnlinePlayerPopulation"; import { DevelopmentPerformanceProbe } from "./DevelopmentPerformanceProbe"; import { AdaptiveGraphicsQuality } from "./AdaptiveGraphicsQuality"; +import { DungeonShadowLight } from "./DungeonShadowLight"; import { useCombatStore } from "../game/combatStore"; +import { ambientFillMultiplier } from "../game/graphicsSettings"; import { numericFrameRateLimit } from "../game/frameRateSettings"; import { useDocumentVisibility } from "../platform/useDocumentVisibility"; import { CappedFrameLoop } from "./CappedFrameLoop"; @@ -184,6 +186,9 @@ export function GameScene() { const simulationSessionMode = useDungeonSimulationStore((state) => state.sessionMode); const simulationRunState = useDungeonSimulationStore((state) => state.runState); const gameplayFrameRate = useCombatStore((state) => state.settings.gameplayFrameRate); + const renderScale = useCombatStore((state) => state.settings.renderScale); + const shadowQuality = useCombatStore((state) => state.settings.shadowQuality); + const ambientFill = useCombatStore((state) => state.settings.ambientFill); const sharedOnline = useOnlineGroupStore((state) => state.activeActivity !== null); const onlineAuthority = useOnlineSessionStore((state) => state.snapshot?.authority ?? true); const documentVisible = useDocumentVisibility(); @@ -334,8 +339,8 @@ export function GameScene() { )} - {!safeGraphics && worldReady && ( + {!safeGraphics && worldReady && renderScale === "adaptive" && ( } - + - {dungeon.presentation.pointLights?.map((light, index) => ( = new Set([ @@ -317,6 +319,12 @@ function OriginalCreatureModel({ // SkeletonUtils preserves independent bone bindings when animated creature // exports are present, while still sharing immutable geometry and materials. const scene = useMemo(() => cloneSkeleton(template), [template]); + const gl = useThree((state) => state.gl); + const shadowQuality = useCombatStore((state) => state.settings.shadowQuality); + const textureFiltering = useCombatStore((state) => state.settings.textureFiltering); + useEffect(() => { + applyDungeonMeshGraphics(scene, "creature", shadowQuality, textureFiltering, gl.capabilities.getMaxAnisotropy()); + }, [gl, scene, shadowQuality, textureFiltering]); const mixer = useMemo(() => new AnimationMixer(scene), [scene]); const baseActionRef = useRef(null); const combatActionRef = useRef(null); @@ -1073,6 +1081,11 @@ function ProxyMob({ ) : null} + {showLabel && !dead ? (
{player.character?.name ?? player.username}
Online player · {player.role ?? "party"}
+ ); } diff --git a/src/scene/PartyPopulation.tsx b/src/scene/PartyPopulation.tsx index 8471f772..6d377960 100644 --- a/src/scene/PartyPopulation.tsx +++ b/src/scene/PartyPopulation.tsx @@ -19,7 +19,10 @@ import { type Group } from "three"; import { classById, isRomClassId, raceById, type GenderId, type RaceId } from "../app/characterCatalog"; import { CharacterModel } from "../avatar/CharacterModel"; import { ProceduralAvatar } from "../avatar/ProceduralAvatar"; +import { WorldDamageText } from "../ui/FloatingDamageText"; import { useCombatStore } from "../game/combatStore"; +import { wow335MageNetherwindPresenceMovementSpeedMultiplier } from "../game/wow335MageNetherwindPresenceRuntime"; +import { isRomMageDruidPair, romMageDruidGreenGuardianMovementSpeedMultiplier } from "../game/romMageDruidGreenGuardianRuntime"; import { resolvedEquipmentItems } from "../game/heirloomEquipment"; import { characterCombatAnimationForPresentation, @@ -1408,6 +1411,21 @@ function PartyActors({ if (member.health > 0 && (party.command !== "stop" || rejoining) && hasDesired) { const speed = (currentPlanarDistance > 8 ? PARTY_CATCH_UP_SPEED : PARTY_MOVE_SPEED) * movementProfile.speedMultiplier + * wow335MageNetherwindPresenceMovementSpeedMultiplier( + useCombatStore.getState().auras, + member.id, + combatNow, + ) + * (isRomMageDruidPair({ + classId: member.classId, + secondaryClassId: member.secondaryClassId ?? undefined, + }) + ? romMageDruidGreenGuardianMovementSpeedMultiplier( + useCombatStore.getState().auras, + member.id, + combatNow, + ) + : 1) * enemyControlMovementMultiplier(activeControlMechanic); const moved = stepPartyPosition(current, desired, speed * safeDelta, nextPosition); // Route progress, not radial player distance, is authoritative. A @@ -1595,6 +1613,7 @@ function PartyActors({
{member.name}
{subtitle}
) : null} + {active ? : null} ); })} diff --git a/src/scene/PlayerRig.tsx b/src/scene/PlayerRig.tsx index 8f47dc8f..45d5bf1c 100644 --- a/src/scene/PlayerRig.tsx +++ b/src/scene/PlayerRig.tsx @@ -20,6 +20,8 @@ import { readInputSnapshot, } from "../game/inputManager"; import { PLAYER_AURA_ENTITY_ID, useCombatStore } from "../game/combatStore"; +import { wow335MageNetherwindPresenceMovementSpeedMultiplier } from "../game/wow335MageNetherwindPresenceRuntime"; +import { isRomMageDruidPair, romMageDruidGreenGuardianMovementSpeedMultiplier } from "../game/romMageDruidGreenGuardianRuntime"; import type { CharacterCombatAnimationEvent } from "../game/combatAnimation"; import { PLAYER_EQUIPMENT_OWNER_ID, @@ -96,18 +98,18 @@ interface PlayerControllerProps extends PlayerRigRefs { animationEventRef: React.MutableRefObject; } -function placeAtActiveSpawn(body: RapierRigidBody, orbit: OrbitState): void { - const spawn = useGameStore.getState().activeSpawn; +function placeAtCurrentPlayerPosition(body: RapierRigidBody, orbit: OrbitState): void { + const { playerPosition, cameraYaw } = useGameStore.getState(); const translation = { - x: spawn.footPosition[0], - y: spawn.footPosition[1] + PLAYER_CENTER_HEIGHT, - z: spawn.footPosition[2], + x: playerPosition[0], + y: playerPosition[1] + PLAYER_CENTER_HEIGHT, + z: playerPosition[2], }; body.setTranslation(translation, true); body.setNextKinematicTranslation(translation); body.setLinvel({ x: 0, y: 0, z: 0 }, true); body.setAngvel({ x: 0, y: 0, z: 0 }, true); - orbit.yaw = spawn.yaw; + orbit.yaw = Number.isFinite(cameraYaw) ? cameraYaw : 0; orbit.pitch = DEFAULT_CAMERA_PITCH; } @@ -159,8 +161,8 @@ function PlayerController({ }, [avatarRef]); useEffect(() => { - if (bodyRef.current) placeAtActiveSpawn(bodyRef.current, orbitRef.current); - lastReported.current = [...spawn.footPosition]; + if (bodyRef.current) placeAtCurrentPlayerPosition(bodyRef.current, orbitRef.current); + lastReported.current = [...useGameStore.getState().playerPosition]; clearJumpRequest(); jumpTimingRef.current = createPlayerJumpTiming(performance.now()); verticalPresentationTimingRef.current = createCharacterVerticalPresentationTiming(); @@ -193,6 +195,8 @@ function PlayerController({ orbit.yaw = cameraYawAfterHorizontalLook(orbit.yaw, snapshot.lookX * delta * 2.25); orbit.pitch = clampCameraPitch(orbit.pitch + snapshot.lookY * delta * 1.55); } + const storedFacing = useGameStore.getState().cameraYaw; + if (storedFacing !== orbit.yaw) useGameStore.setState({ cameraYaw: orbit.yaw }); const groundTargetActive = useCombatStore.getState().pendingGroundTarget !== null; if (groundTargetActive && !paused && !mapOpen && !companionOpen) { useCombatStore.getState().moveGroundTarget( @@ -205,7 +209,7 @@ function PlayerController({ const translation = body.translation(); if (![translation.x, translation.y, translation.z].every(Number.isFinite)) { - placeAtActiveSpawn(body, orbit); + placeAtCurrentPlayerPosition(body, orbit); return; } @@ -255,7 +259,23 @@ function PlayerController({ verticalVelocityRef.current, ); const movementDeltaSeconds = playerFrameDeltaSeconds(delta); - const movementMultiplier = enemyControlMovementMultiplier(activeControlMechanic); + const movementCombatState = useCombatStore.getState(); + const movementMultiplier = enemyControlMovementMultiplier(activeControlMechanic) + * wow335MageNetherwindPresenceMovementSpeedMultiplier( + movementCombatState.auras, + PLAYER_AURA_ENTITY_ID, + Date.now(), + ) + * (isRomMageDruidPair({ + classId: movementCombatState.classId, + secondaryClassId: movementCombatState.secondaryClassId, + }) + ? romMageDruidGreenGuardianMovementSpeedMultiplier( + movementCombatState.auras, + PLAYER_AURA_ENTITY_ID, + Date.now(), + ) + : 1); let verticalVelocity = shouldJump ? PLAYER_JUMP_VELOCITY : groundedBeforeMove diff --git a/src/scene/ProductionDungeon.tsx b/src/scene/ProductionDungeon.tsx index 4d75cddb..30aba82a 100644 --- a/src/scene/ProductionDungeon.tsx +++ b/src/scene/ProductionDungeon.tsx @@ -10,6 +10,7 @@ import { import type { ResolvedDungeonAssets } from "../game/dungeonAssets"; import type { DungeonDefinition } from "../game/dungeonTypes"; import { useGameStore } from "../game/store"; +import { useCombatStore } from "../game/combatStore"; import { collisionLineOfSightTrimeshes, collisionTrimeshes, @@ -24,6 +25,7 @@ import { cacheStaticMatrices, instanceRepeatedStaticMeshes } from "./staticScene import { createStaticVisibilityCells, registerStaticVisibility } from "./staticSceneVisibility"; import { useGameGLTF } from "./useGameGLTF"; import { prepareDungeonMaterial } from "./productionDungeonMaterials"; +import { applyDungeonMeshGraphics } from "./graphicsMaterialQuality"; import { repairHallOfSurvivorsVisual } from "./hallOfSurvivorsVisual"; import { DUNGEON_COLLISION_LOAD_BATCH_SIZE, @@ -66,11 +68,17 @@ function prepareVisual(root: Object3D, definition: DungeonDefinition) { function VisualChunk({ url, definition }: { readonly url: string; readonly definition: DungeonDefinition }) { const gltf = useGameGLTF(url); const scene = useThree((state) => state.scene); + const gl = useThree((state) => state.gl); + const shadowQuality = useCombatStore((state) => state.settings.shadowQuality); + const textureFiltering = useCombatStore((state) => state.settings.textureFiltering); const { visual, cells } = useMemo( () => prepareVisual(gltf.scene, definition), [definition, gltf.scene], ); useEffect(() => registerStaticVisibility(scene, cells), [scene, cells]); + useEffect(() => { + applyDungeonMeshGraphics(visual, "environment", shadowQuality, textureFiltering, gl.capabilities.getMaxAnisotropy()); + }, [gl, shadowQuality, textureFiltering, visual]); useEffect(() => () => { disposeObject3DResources(visual); }, [visual]); const { position, rotation, scale } = definition.transform; return ; diff --git a/src/scene/graphicsMaterialQuality.test.ts b/src/scene/graphicsMaterialQuality.test.ts new file mode 100644 index 00000000..65080c6e --- /dev/null +++ b/src/scene/graphicsMaterialQuality.test.ts @@ -0,0 +1,26 @@ +import { describe, expect, it } from "vitest"; +import { BoxGeometry, Group, Mesh, MeshStandardMaterial, Texture } from "three"; +import { applyDungeonMeshGraphics } from "./graphicsMaterialQuality"; + +describe("dungeon mesh graphics", () => { + it("enables opaque dungeon casters only at high and caps texture filtering to the GPU", () => { + const root = new Group(); + const texture = new Texture(); + const opaque = new Mesh(new BoxGeometry(), new MeshStandardMaterial({ map: texture })); + const transparent = new Mesh(new BoxGeometry(), new MeshStandardMaterial({ transparent: true })); + root.add(opaque, transparent); + + applyDungeonMeshGraphics(root, "environment", "standard", 1, 8); + expect(opaque.castShadow).toBe(false); + expect(opaque.receiveShadow).toBe(true); + + applyDungeonMeshGraphics(root, "environment", "high", 16, 8); + expect(opaque.castShadow).toBe(true); + expect(transparent.castShadow).toBe(false); + expect(texture.anisotropy).toBe(8); + + applyDungeonMeshGraphics(root, "environment", "off", 1, 8); + expect(opaque.castShadow).toBe(false); + expect(texture.anisotropy).toBe(1); + }); +}); diff --git a/src/scene/graphicsMaterialQuality.ts b/src/scene/graphicsMaterialQuality.ts new file mode 100644 index 00000000..6c3acccb --- /dev/null +++ b/src/scene/graphicsMaterialQuality.ts @@ -0,0 +1,37 @@ +import { Mesh, type Material, type Object3D, type Texture } from "three"; +import type { ShadowQuality, TextureFiltering } from "../game/graphicsSettings"; + +const TEXTURE_SLOTS = [ + "map", "normalMap", "roughnessMap", "metalnessMap", "aoMap", + "emissiveMap", "alphaMap", "bumpMap", "lightMap", "specularMap", +] as const; + +export function applyDungeonMeshGraphics( + root: Object3D, + kind: "environment" | "creature", + shadowQuality: ShadowQuality, + filtering: TextureFiltering, + maxAnisotropy: number, +): void { + const visitedTextures = new Set(); + root.traverse((node) => { + const mesh = node as Mesh; + if (!mesh.isMesh) return; + const materials = (Array.isArray(mesh.material) ? mesh.material : [mesh.material]) as Material[]; + mesh.castShadow = shadowQuality === "high" && materials.some((material) => !material.transparent); + mesh.receiveShadow = kind === "environment" || shadowQuality === "high"; + for (const material of materials) { + const mapped = material as Material & Partial>; + for (const slot of TEXTURE_SLOTS) { + const texture = mapped[slot]; + if (!texture?.isTexture || visitedTextures.has(texture)) continue; + visitedTextures.add(texture); + const anisotropy = Math.min(filtering, maxAnisotropy); + if (texture.anisotropy !== anisotropy) { + texture.anisotropy = anisotropy; + texture.needsUpdate = true; + } + } + } + }); +} diff --git a/src/styles.css b/src/styles.css index 16f94e81..ea1cf3b9 100644 --- a/src/styles.css +++ b/src/styles.css @@ -836,6 +836,19 @@ kbd { color: var(--moss-bright); font: inherit; font-size: 0.64rem; } .party-frame__heal-popups { position: absolute; z-index: 4; inset: 0; overflow: visible; pointer-events: none; } .party-frame__heal-popup { position: absolute; top: 45%; right: 10px; color: #72f59c; font: 800 12px Georgia, serif; letter-spacing: .01em; text-shadow: 0 1px 2px #001d09, 0 0 6px rgba(65,220,112,.78); opacity: 0; animation: party-frame-heal-float 1.5s ease-out forwards; } .party-frame__heal-popup.is-critical { color: #b0ffc7; font-size: 14px; text-shadow: 0 1px 2px #001d09, 0 0 9px rgba(92,255,143,.95); } +.party-frame__damage-popups { position: absolute; z-index: 5; top: 28%; right: 54px; pointer-events: none; --damage-size: 12px; --damage-crit-size: 14.4px; } +.damage-text__world-anchor, .damage-text { position: relative; display: block; width: 0; height: 0; pointer-events: none; } +.damage-text__number { position: absolute; top: 0; left: 0; color: #f5e5b0; font: 800 var(--damage-size, 14px) Georgia, serif; line-height: 1; white-space: nowrap; text-shadow: 0 1px 2px #000, 0 0 6px #000; opacity: 0; animation: damage-text-float 1.5s ease-out forwards; } +.damage-text__number--ally { color: #9de6f2; } +.damage-text__number--incoming { color: #ff9290; } +.damage-text__number.is-critical { color: #ffd45a; font-size: var(--damage-crit-size, 16.8px); text-shadow: 0 1px 3px #000, 0 0 10px rgba(255,185,48,.8); } +.damage-text__number--incoming.is-critical { color: #ffbd69; } +@keyframes damage-text-float { + 0% { opacity: 0; transform: translate(calc(var(--damage-x, 0px) - 50%), calc(var(--damage-y, 0px) + 6px)) scale(.88); } + 14% { opacity: 1; transform: translate(calc(var(--damage-x, 0px) - 50%), var(--damage-y, 0px)) scale(1); } + 72% { opacity: 1; } + 100% { opacity: 0; transform: translate(calc(var(--damage-x, 0px) - 50%), calc(var(--damage-y, 0px) - 28px)) scale(1.04); } +} @keyframes party-frame-heal-float { 0% { opacity: 0; transform: translate(var(--party-heal-x, 0), 5px) scale(.82); } 14% { opacity: 1; transform: translate(var(--party-heal-x, 0), 0) scale(1); } @@ -843,14 +856,24 @@ kbd { color: var(--moss-bright); font: inherit; font-size: 0.64rem; } 100% { opacity: 0; transform: translate(var(--party-heal-x, 0), -27px) scale(1.05); } } .summon-frames { position: absolute; top: max(101px, calc(env(safe-area-inset-top) + 89px)); left: max(244px, calc(env(safe-area-inset-left) + 232px)); display: grid; width: 150px; gap: 3px; scale: var(--game-ui-scale, 1); transform-origin: top left; } -.summon-frame { width: 100%; padding: 4px 6px; border: 1px solid rgba(115,183,205,.28); border-radius: 5px; background: rgba(5,16,19,.88); box-shadow: 0 5px 14px rgba(0,0,0,.3); color: inherit; text-align: left; cursor: pointer; } +.summon-frame { width: 100%; padding: 0; border: 1px solid rgba(115,183,205,.28); border-radius: 5px; background: rgba(5,16,19,.88); box-shadow: 0 5px 14px rgba(0,0,0,.3); color: inherit; overflow: hidden; } +.summon-frame__select { display: block; width: 100%; padding: 4px 6px; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; } +.summon-frame__select:focus-visible, .hunter-pet-controls button:focus-visible, .hunter-pet-controls select:focus-visible, .hunter-pet-controls input:focus-visible { outline: 1px solid rgba(117,225,181,.9); outline-offset: 1px; } .summon-frame.is-selected { border-color: rgba(117,225,181,.82); box-shadow: 0 0 0 1px rgba(117,225,181,.28), 0 5px 14px rgba(0,0,0,.3); } -.summon-frame header { display: flex; justify-content: space-between; gap: 5px; color: #dff4ec; font-size: 7px; } -.summon-frame header span, .summon-frame small { color: #93b4b0; font-size: 5px; text-transform: uppercase; } -.summon-frame > div { height: 4px; margin-top: 3px; overflow: hidden; border-radius: 3px; background: rgba(0,0,0,.65); } -.summon-frame > div i { display: block; height: 100%; background: linear-gradient(90deg, #417b64, #78c7a2); } +.summon-frame__select header { display: flex; justify-content: space-between; gap: 5px; color: #dff4ec; font-size: 7px; } +.summon-frame__select header span, .summon-frame__select small { color: #93b4b0; font-size: 5px; text-transform: uppercase; } +.summon-frame__select > div { height: 4px; margin-top: 3px; overflow: hidden; border-radius: 3px; background: rgba(0,0,0,.65); } +.summon-frame__select > div i { display: block; height: 100%; background: linear-gradient(90deg, #417b64, #78c7a2); } .summon-frame--totem { border-color: rgba(220,188,91,.38); } -.summon-frame--totem > div i { background: linear-gradient(90deg, #8a6d2b, #d5b755); } +.summon-frame--totem .summon-frame__select > div i { background: linear-gradient(90deg, #8a6d2b, #d5b755); } +.hunter-pet-controls { display: grid; gap: 3px; padding: 3px 5px 5px; border-top: 1px solid rgba(115,183,205,.14); color: #b6d0c9; font-size: 6px; text-transform: uppercase; } +.hunter-pet-controls__commands { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; } +.hunter-pet-controls button, .hunter-pet-controls select { min-width: 0; padding: 2px 3px; border: 1px solid rgba(115,183,205,.24); border-radius: 3px; background: rgba(13,35,38,.9); color: inherit; font: inherit; text-transform: inherit; } +.hunter-pet-controls button[aria-pressed="true"] { border-color: rgba(117,225,181,.78); color: #dff4ec; } +.hunter-pet-controls button:disabled { opacity: .45; } +.hunter-pet-controls__react { display: flex; align-items: center; justify-content: space-between; gap: 4px; } +.hunter-pet-controls__growl { display: flex; align-items: center; gap: 3px; cursor: pointer; } +.hunter-pet-controls__growl input { width: 8px; height: 8px; margin: 0; accent-color: #78c7a2; } .ground-target-reticle { position: absolute; top: 50%; left: 50%; z-index: 20; display: grid; width: 220px; justify-items: center; gap: 5px; color: #f4e8ae; text-align: center; text-shadow: 0 2px 4px #000; transform: translate(-50%, -50%); pointer-events: auto; } .ground-target-reticle > div { position: relative; width: 58px; height: 58px; border: 2px solid rgba(239,210,91,.9); border-radius: 50%; box-shadow: 0 0 18px rgba(238,199,71,.42), inset 0 0 16px rgba(238,199,71,.18); } .ground-target-reticle > div i, .ground-target-reticle > div b { position: absolute; top: 50%; left: 50%; background: rgba(250,222,116,.95); transform: translate(-50%, -50%); } @@ -1730,6 +1753,7 @@ kbd { color: var(--moss-bright); font: inherit; font-size: 0.64rem; } @media (prefers-reduced-motion: reduce) { .boss-loot-window { animation: none; } .party-frame__heal-popup { animation: none; opacity: 1; } + .damage-text__number { animation: none; opacity: 1; transform: translate(calc(var(--damage-x, 0px) - 50%), var(--damage-y, 0px)); } .spellbook-panel__filter > span::after { transition: none; } } diff --git a/src/ui/FloatingDamageText.tsx b/src/ui/FloatingDamageText.tsx new file mode 100644 index 00000000..769c46e8 --- /dev/null +++ b/src/ui/FloatingDamageText.tsx @@ -0,0 +1,55 @@ +import type { CSSProperties } from "react"; +import { + EMPTY_DAMAGE_TEXT_POPUPS, + formatDamageText, + useDamageTextStore, + type DamageTextPopup, +} from "../game/floatingCombatText"; +import { DungeonOccludedHtml } from "../scene/DungeonOccludedHtml"; + +export function damageTextClassName(popup: DamageTextPopup): string { + return `damage-text__number damage-text__number--${popup.category}${popup.critical ? " is-critical" : ""}`; +} + +function DamageTextNumbers({ popups }: { readonly popups: readonly DamageTextPopup[] }) { + return ( + + ); +} + +export function WorldDamageText({ + targetActorId, + position, + offsetX = 0, +}: { + readonly targetActorId: string; + readonly position: readonly [number, number, number]; + readonly offsetX?: number; +}) { + const popups = useDamageTextStore((state) => state.byTarget[targetActorId] ?? EMPTY_DAMAGE_TEXT_POPUPS); + if (popups.length === 0) return null; + return ( + + + + + + ); +} + +export function FrameDamageText({ targetActorId }: { readonly targetActorId: string }) { + const popups = useDamageTextStore((state) => state.byTarget[targetActorId] ?? EMPTY_DAMAGE_TEXT_POPUPS); + if (popups.length === 0) return null; + return ; +} diff --git a/src/ui/OptionsPanel.test.ts b/src/ui/OptionsPanel.test.ts index c64a7e71..8264a360 100644 --- a/src/ui/OptionsPanel.test.ts +++ b/src/ui/OptionsPanel.test.ts @@ -65,4 +65,22 @@ describe("combat visual mode option", () => { expect(markup).toContain("Stored on this device. Enable the pack"); expect(markup).toContain(">Enable"); }); + + it("offers independent damage and healing number switches", () => { + const markup = renderOptions(DEFAULT_COMBAT_PRESENTATION_SETTINGS.vfxMode); + expect(markup).toContain("Your damage"); + expect(markup).toContain("Ally damage"); + expect(markup).toContain("Incoming damage"); + expect(markup).toContain("Party healing numbers"); + }); + + it("shows dungeon graphics controls with the saved defaults", () => { + const markup = renderOptions(DEFAULT_COMBAT_PRESENTATION_SETTINGS.vfxMode); + expect(markup).toContain("Render resolution"); + expect(markup).toContain("Texture filtering"); + expect(markup).toContain("Shadows"); + expect(markup).toContain("Ambient fill"); + expect(markup).toContain(">Adaptive"); + expect(markup).toContain(">Standard"); + }); }); diff --git a/src/ui/OptionsPanel.tsx b/src/ui/OptionsPanel.tsx index b5e97799..8425301c 100644 --- a/src/ui/OptionsPanel.tsx +++ b/src/ui/OptionsPanel.tsx @@ -20,19 +20,30 @@ import { type GameplayFrameRateLimit, type PreviewFrameRateLimit, } from "../game/frameRateSettings"; +import { + AMBIENT_FILL_LEVELS, + RENDER_SCALES, + SHADOW_QUALITIES, + TEXTURE_FILTERING_LEVELS, + nextGraphicsChoice, + type GraphicsSettings, +} from "../game/graphicsSettings"; import { combatMediaPackReady, downloadCombatMediaPack, removeCombatMediaPack, } from "../game/combatMediaPack"; -export interface OptionsPanelSettings { +export interface OptionsPanelSettings extends GraphicsSettings { showMobHealthBars: boolean; showMobAggroRanges: boolean; showTargetFrame: boolean; showThreatMeter: boolean; threatMeterPosition: NormalizedHudPosition; showFloatingCombatText: boolean; + showOwnDamageText: boolean; + showAllyDamageText: boolean; + showIncomingDamageText: boolean; autoTargetNearest: boolean; enableScreenShake: boolean; masterVolume: number; @@ -55,7 +66,7 @@ export interface OptionsPanelProps { interface ToggleOption { id: keyof Pick; + "showMobHealthBars" | "showMobAggroRanges" | "showTargetFrame" | "showThreatMeter" | "showFloatingCombatText" | "showOwnDamageText" | "showAllyDamageText" | "showIncomingDamageText" | "autoTargetNearest" | "enableScreenShake">; label: string; description: string; } @@ -66,6 +77,9 @@ const TOGGLES: readonly ToggleOption[] = [ { id: "showTargetFrame", label: "Target frame", description: "Show detailed status for your current target." }, { id: "showThreatMeter", label: "Threat meter", description: "Show the compact movable threat table for your selected enemy." }, { id: "showFloatingCombatText", label: "Party healing numbers", description: "Float effective healing amounts over party frames during combat." }, + { id: "showOwnDamageText", label: "Your damage", description: "Float your damage over the enemy you hit." }, + { id: "showAllyDamageText", label: "Ally damage", description: "Float companion and online ally damage over enemies." }, + { id: "showIncomingDamageText", label: "Incoming damage", description: "Float damage over party characters and your party frame." }, { id: "autoTargetNearest", label: "Automatic targeting", description: "Pick the nearest valid enemy when an offensive ability needs one." }, { id: "enableScreenShake", label: "Screen shake", description: "Use restrained camera impact for major hits." }, ] as const; @@ -167,6 +181,10 @@ function OptionsDialog({ { id: "option-keybinds", run: () => useGameStore.getState().openOverlay("keybinds") }, { id: "option-gameplay-frame-rate", run: cycleGameplayFrameRate }, { id: "option-preview-frame-rate", run: cyclePreviewFrameRate }, + { id: "option-render-scale", run: () => onChange({ renderScale: nextGraphicsChoice(settings.renderScale, RENDER_SCALES) }) }, + { id: "option-texture-filtering", run: () => onChange({ textureFiltering: nextGraphicsChoice(settings.textureFiltering, TEXTURE_FILTERING_LEVELS) }) }, + { id: "option-shadow-quality", run: () => onChange({ shadowQuality: nextGraphicsChoice(settings.shadowQuality, SHADOW_QUALITIES) }) }, + { id: "option-ambient-fill", run: () => onChange({ ambientFill: nextGraphicsChoice(settings.ambientFill, AMBIENT_FILL_LEVELS) }) }, ...TOGGLES.map((option) => ({ id: `option-${option.id}`, run: () => onChange({ [option.id]: !settings[option.id] }), @@ -242,6 +260,31 @@ function OptionsDialog({ cyclePreviewFrameRate, )} +

Dungeon graphics

+
+ Render resolutionAdaptive adjusts sharpness for frame rate. Fixed 100–200% keeps your chosen pixel density. + {optionButton("option-render-scale", settings.renderScale === "adaptive" ? "Adaptive" : `${Math.round(settings.renderScale * 100)}%`, () => onChange({ + renderScale: nextGraphicsChoice(settings.renderScale, RENDER_SCALES), + }))} +
+
+ Texture filteringSharpen floor and wall textures viewed at an angle. Source texture resolution stays the same. + {optionButton("option-texture-filtering", `${settings.textureFiltering}×`, () => onChange({ + textureFiltering: nextGraphicsChoice(settings.textureFiltering, TEXTURE_FILTERING_LEVELS), + }))} +
+
+ ShadowsStandard preserves the current lightweight shadows. High adds dungeon and creature shadows and uses a sharper map. + {optionButton("option-shadow-quality", settings.shadowQuality[0].toUpperCase() + settings.shadowQuality.slice(1), () => onChange({ + shadowQuality: nextGraphicsChoice(settings.shadowQuality, SHADOW_QUALITIES), + }))} +
+
+ Ambient fillChange indirect brightness while preserving each dungeon's authored light colors and local lights. + {optionButton("option-ambient-fill", settings.ambientFill[0].toUpperCase() + settings.ambientFill.slice(1), () => onChange({ + ambientFill: nextGraphicsChoice(settings.ambientFill, AMBIENT_FILL_LEVELS), + }))} +

Gameplay and interface

{TOGGLES.map((option) => (
diff --git a/src/ui/PartyFrames.tsx b/src/ui/PartyFrames.tsx index 269b9950..7e0f53e4 100644 --- a/src/ui/PartyFrames.tsx +++ b/src/ui/PartyFrames.tsx @@ -21,6 +21,7 @@ import { partyResurrectionBlockedByBoss, resurrectDeadPartyMembers } from "../ga import { ResurrectionDestination, useResurrectionCheckpoints } from "./ResurrectionDestination"; import { useGameStore } from "../game/store"; import { useHudSurface } from "./HudSurface"; +import { FrameDamageText } from "./FloatingDamageText"; import { PARTY_HEAL_POPUP_LIFETIME_MS, addedPartyHealPopups, @@ -400,6 +401,7 @@ export function PartyFrames() { /> + {onlineMembers.map((member) => { const actorId = onlinePlayerActorId(member.accountId); diff --git a/src/ui/SummonFrames.tsx b/src/ui/SummonFrames.tsx index d239723f..c9bc96e1 100644 --- a/src/ui/SummonFrames.tsx +++ b/src/ui/SummonFrames.tsx @@ -1,9 +1,14 @@ +import { PLAYER_AGGRO_ID } from "../game/aggro"; import { useCombatStore } from "../game/combatStore"; export function SummonFrames({ now }: { readonly now: number }) { const summons = useCombatStore((state) => state.summons); const selectedFriendlyActorId = useCombatStore((state) => state.selectedFriendlyActorId); + const selectedTargetId = useCombatStore((state) => state.selectedTargetId); const selectFriendlyActor = useCombatStore((state) => state.selectFriendlyActor); + const commandHunterPet = useCombatStore((state) => state.commandHunterPet); + const setHunterPetReactMode = useCombatStore((state) => state.setHunterPetReactMode); + const setHunterPetGrowlAutocast = useCombatStore((state) => state.setHunterPetGrowlAutocast); if (!summons.length) return null; return (
@@ -12,18 +17,60 @@ export function SummonFrames({ now }: { readonly now: number }) { const remaining = summon.expiresAt >= Number.MAX_SAFE_INTEGER ? "∞" : `${Math.max(0, Math.ceil((summon.expiresAt - now) / 1_000))}s`; + const playerHunterPet = Boolean(summon.hunterPet && summon.ownerActorId === PLAYER_AGGRO_ID); + const command = summon.hunterPetCommand ?? "follow"; + const reactMode = summon.hunterPetReactMode ?? "defensive"; return ( - + + {playerHunterPet && ( +
+
+ {(["attack", "follow", "stay"] as const).map((petCommand) => ( + + ))} +
+ + +
+ )} +
); })}